---
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
```