--- title: "cvic11" output: pdf_document: default html_notebook: default --- # Příklad 1 -- test # 1(a) Zkusíme nasamplovat -- jen jedna otázka se třemi volbami. ```{r} n = 10^4 p = 0.5 umi = rbinom(n, 1, p) # umi je vektor 0/1 spravne = umi + (1-umi)*rbinom(n,1,1/3) # taky 0/1 (jestli je odp. spravne) sum(umi*spravne)/sum(spravne) # sample podmíněné pravděpodobnosti ``` # 1(c) Celý test s deseti otázkami. Nasamplujeme distribuci otázek co umí, pokud odpověděl správně 6. Nakreslíme do grafu spolu se spočteným vzorcem. ```{r} n = 10^4 p = 0.5 # nejprve jednotlivé otázky, jako v 1(a) umi = rbinom(10*n, 1, p) spravne = umi + (1-umi)*rbinom(10*n,1,1/3) # teď posčítáme jednotlivé desítky celk_spravne = tapply(spravne, (seq_along(spravne)-1) %/% 10, sum) celk_umi = tapply(umi, (seq_along(umi)-1) %/% 10, sum) # a teď vytáhneme, kolik otázek uměl student, co odpověděl správně 6 otázek k = 0:6 umi6 = rep(0,7) for (i in k) { # print(i) umi6[i+1] = (sum(celk_umi == i & celk_spravne == 6)/sum(celk_spravne == 6)) } plot(k,umi6, col='blue') points(k, dbinom(k,6,3/4), col='red') ``` ## 1(b,c) -- Rozdíl apriori & aposteriori. I když se to nezdá, tak 6 správných je podprůměrná odpověď, proto se náš odhad, kolik student uměl, sníží oproti stavu před testem. ```{r} k=0:10 plot(k, dbinom(k,6,3/4)+.0, col='red') points(k, dbinom(k,10,1/2), col='blue') ``` # Příklad 2 -- hodně testů ## (2a) Použijeme MAP pravidlo pro rozhodnutí. ```{r} pp <- function(p) { p + (1-p)/3 } k = 0:10 A = dbinom(k,10,pp(0.3)) B = dbinom(k,10,pp(0.7)) C = dbinom(k,10,pp(0.95)) #A (typ 0.3) je nejpravděpodobnější pro hodnoty: k[A>B & A>C] #B (typ 0.7) je nejpravděpodobnější pro hodnoty: k[B>A & B>C] #C (typ 0.95) je nejpravděpodobnější pro hodnoty: k[C>A & C>B] ``` ## (2b) MAP pravidlo -- najdeme max. ve vektoru pu podm. stř. -- spočítáme podm. střední hodnotu ```{r} l = 0:5 db = function(p) { dbinom(l,5,p/(1/3+(2/3)*p)) } pu = (db(0.3)+db(0.7)+db(0.95))/3 pu; sum(pu) #MAP pravidlo: l[pu == max(pu)] #podm. střední hodnota sum(pu*l) ``` # Příklad 3 Zkusíme nasamplovat pravidlo: pokud vytáhnu bílý míček, odpovím první krabička. Kódování míčku: 1 = bílá, 2 = černá Kódování krabiček: 1, 2 Pro p>1/3 je MAP-pravidlo pro náš tip na krabičku barva míčku. ```{r} n = 10^4 chyb = 0 p = 0.5 for (i in 1:n){ krab = ifelse(runif(1)