--- title: "cvic10 -- bodové odhady" output: pdf_document: default html_notebook: default --- # Bodový odhad pro $U(0,\vartheta)$ ```{r} theta = 4.7 # parametr, který ve skutečné aplikaci NEZNÁME n = 10 # počet měření, tzv. rozsah náhodného výběru t = runif(n,0,theta) # realizace náhodného výběru ... tj. konkrétní n-tice čísel t ``` Jeden možný bodový odhad: dvojnásobek průměru z čísel, co jsme dostali. A jeho kvadratická chyba. ```{r} theta2 = 2*mean(t) theta2 (theta2-theta)^2 ``` Co znamenají vlastnosti bodového odhadu? A jak je ověřit? Např. nestrannost: jde nám o střední hodnotu výrazu theta2 = 2*mean(t), chceme, aby se rovnala theta. To můžeme spočíst "teoreticky na papíře" (a to přesně), tady zkusme samplovat. Budeme tedy opakovat celý pokus znovu a znovu a dělat průměr výrazu 2*mean(x). Pro přehlednost for-cyklem, abychom neodváděli pozornost k elegantním R-kovým konstrukcím. ```{r} N = 10^4 odhad = rep(0,N) for (cnt in 1:N) { odhad[cnt] = 2*mean(runif(n,0,theta)) } plot(odhad) hist(odhad) mean(odhad) mean((odhad-theta)^2) ``` Konzistence znamená, že pro velká n dostaneme "skoro vždy" správnou hodnotu. ```{r} bign = 10^5 bigx = runif(bign,0,theta) #hloupý způsob jak získat průměry ze všech prefixů: v kvadratickém čase #odhady = 0*bigx #for (n in 1:bign) { # odhady[n] = 2*mean(bigx[1:n]) #} #chytřejší způsob v lineárním čase: odhady = 2*cumsum(bigx)/seq(1:bign) plot(odhady[10^4:bign], pch=2, type='l', cex=1) lines(c(0,bign),c(4.7,4.7),col='red') ``` Teď totéž pro odhad získaný metodou max. věrohodnosti. ```{r} theta = 4.7 # parametr, který ve skutečné aplikaci NEZNÁME n = 10 # počet měření, tzv. rozsah náhodného výběru t = runif(n,0,theta) # realizace náhodného výběru ... tj. konkrétní n-tice čísel t max(t) #*(n+1)/n ``` Nestrannost a MSE. ```{r} N = 10^4 odhad = rep(0,N) for (cnt in 1:N) { odhad[cnt] = max(runif(n,0,theta))*(n+1)/n } plot(odhad) hist(odhad) mean(odhad) mean((odhad-theta)^2) ``` ```{r} N = 10^4 odhad = rep(0,N) for (cnt in 1:N) { t = runif(n,0,theta) a = max(t) #*(n+1)/n b = 2*mean(t) odhad[cnt] = max(a,b) } plot(odhad) hist(odhad) mean(odhad) mean((odhad-theta)^2) ```