--- title: "Cvic 10" output: pdf_document: default html_notebook: default --- # Příklad 1 -- kostka Vyřešíme dvěma způsoby (přímé dosazení do vzorece nebo použití funkce chisq.test). V obou případech samozřejmě vyjde totéž. ```{r} N=50 kostka = sample(6,N, replace=T) #kostka = c(....) obs = rep(0,6); obs for(i in 1:6){ obs[i] = sum(kostka==i) } obs sum(obs) T = sum((obs-N/6)^2/(N/6)); T 1-pchisq(T,5) chisq.test(obs) ``` Totéž stručněji. ```{r} kostka = sample(6, 100, replace=T) t=table(kostka) chisq.test(t) ``` # Příklad 2 -- emaily ```{r} moje_emaily11 = c(0,6,14,8,8,9,3,3,12,12,15,7,15,2,5,13,5,17,15,11,9,2,16,8,9,11,6,2,2,9) moje_emaily12 = c(13,14,3,8,5,4,12,22,8,4,5,3) mean(moje_emaily11) var(moje_emaily11) hist(moje_emaily11) day = 1:30 data = moje_emaily12[day %% 7!=5 & day %%7 != 6 & day <= length(moje_emaily12)] data mean(data) var(data) ``` ```{r} n = 15 bins = 0:n day = 1:30 data = moje_emaily11[day %% 7!=1 & day %%7 != 0 & day!=17] lambda = mean(data); lambda var(data) p = dpois(bins,lambda) p[n+1] = 1-ppois(n-1,lambda) p sum(p) freq = bins*0 freq = rep(0,n+1) for(i in bins){ freq[i+1] = sum(data==i) } freq[n+1] = sum(data>=n) freq N = sum(freq); N length(data) T = sum((freq-p*N)^2/(p*N)) T options(digits = 8) pchisq(T,n) chisq.test(x=freq,p=p) ``` ```{r} bin_ends = c(-Inf,5,8,10,12,Inf) day = 1:30 data = moje_emaily11[day %% 7!=1 & day %%7 != 0 & day!=17] lambda = mean(data); lambda var(data) p = diff(ppois(bin_ends,lambda)) sum(p) freq = bin_ends*0 for(i in 1:length(bin_ends)){ freq[i] = sum(data<=bin_ends[i]) } freq = diff(freq) N = sum(freq); N length(data) T = sum((freq-p*N)^2/(p*N)) T pchisq(T,n) chisq.test(x=freq,p=p) ``` # Příklad 3 -- regrese V zadání byla řečena data pro x a y. Zde vidíme (v zakomentované části) i jak byla data vyrobena: k ideálnímu vzorci přičteme náhodný šum. Můžeme pak dobře sledovat, jak se spočtené řešení bude lišit od "ideálu". ```{r} x = c(1,5,9,10,13,16,20,30) y = c(6.1982, 12.9892, 23.8005, 23.8891, 30.0391, 35.7535, 49.0685, 63.1825) y = 2*x+4 + rnorm(length(x),0,3) #y = 2*x+4 + rnorm(1,0,3) plot(x,y) ``` ```{r} xm = mean(x) ym = mean(y) a = sum((x-xm)*(y-ym))/sum((x-xm)^2); a cov(x,y)/var(x) b = ym - a*xm; b ``` Červená je ta původní přímka, před přičtením šumu. ```{r} plot(x,y) lines(x,a*x+b, col="blue") lines(x,2*x+4, col="red") ``` Knihovní funkce na regresy ("linear model"). Umí např. i závislost na více proměnných (tak lze např. hledat aproximující polynom). ```{r} relation <- lm(y~x) summary(relation) relation$coefficients ``` ```{r} res = y-(a*x+b); res ```