--- title: "Test t cz. II" author: "Bartosz Kozak" date: "12 kwietnia 2019" output: html_document: df_print: paged --- ## Test t dla prób niezależnych Test `t` dla dwóch prób niezależnych jest używany do testowania hipotezy o przynależności dwóch prób do rozkładu o tej samej średniej. Teoria dla testu `t` dla prób niezależnych w założeniach jest bardzo podobna do teorii testu dla jednej próby. Dane pochodzą z dwóch prób: $x_{11},x_{12},x_{13},...,x_{1n}$ oraz $x_{21},x_{22},x_{23},...,x_{2n}$. Zakładamy że dane pochodzą z rozkładu $N(\mu_1,\sigma_1^2)$, $N(\mu_2,\sigma_2^2)$ i hipoteza zerowa ma postać $\mu_1=\mu_2$. Statystykę te możemy obliczyć według wzoru:$$t=\frac{\overline{x}_2-\overline{x}_1}{SEDM}$$ gdzie *błąd standardowy różnicy średnich* - **SEDM** obliczamy jako:$$SEDM=\sqrt{SEM_1^2+SEM_2^2}$$. Istnieją dwa algorytmy pozwalające obliczyć **SEDM**, jeden z nich zakłada równość wariancji w obu grupach (jest to tz. model "klasyczny"). Drugi natomiast dopuszcza różne wariancje w badanych grupach. W podejściu "klasycznym" obliczamy połączoną wariancję $s$, na podstawie odchylenia standardowego grupy 1 i 2 i podstawiamy do wzoru na **SEM**. W tym przypadku wzór na wartość $t$ przyjmie postać: $$t=\frac{\overline{x}_2-\overline{x}_1}{\sqrt{s^2(\frac{1}{n_1}+\frac{1}{n_2})}}$$ Wariancję $s^2$ obliczamy stosując wzór: $$s^2=\frac{\sum{(x_{1i}-\overline{x}_1)^2+\sum{(x_{2i}-\overline{x}_2)^2}}}{n_1+n_2-2}$$ Wartość t będzie należeć do rozkładu `t` o $n_1+n_2-2$ stopniach swobody. Alternatywna procedura zaproponowana przez Welcha, zakłada obliczenie **SEM** z oddzielnych wariancji grup 1 i 2. W tym przypadku wartość t nie należy do dystrybucji t, ale może być przybliżone na podstawie dystrybucji `t` o liczbie stopni swobody, która może zostać obliczona na podstawie $\sigma_1$, $\sigma_2$ i wielkości grup. Zazwyczaj nie jest to liczba całkowita. Ogólnie przyjmuje się, że procedura według Welcha jest bezpieczniejsza bo nie wymaga spełnienia warunku równości wariancji w obydwu grupach. Zazwyczaj wyniki obu wariantów testu są bardzo zbliżone (jeżeli nie ma dużych różnic między wielkością grupy i wariancją pomiędzy grupą 1 i 2). ## Algorytm postępowania - test t dla grup niezależnych 1. Formułujemy hipotezę zerową ($H_0$) oraz alternatywną ($H_A$) 2. Testujemy hipotezę (wykonujemy test statystyczny) 3. Na podstawie wyników testu **odrzucamy** lub **nie odrzucamy** hipotezę zerową **Przykład 1** W pliku Cw3_1.txt znajdują się pomiary zawartość próchnicy w glebie w dwóch gospodarstwach - A oraz B. Przyjmując poziom istotności $\alpha=0.05$ odpowiedz czy zawartość próchnicy w gospodarstwie A i B jest na takim samym poziomie. 1. Formułujemy hipotezy: - $H_0: \overline{x}_A=\overline{x}_B$ - $H_A: \overline{x}_A\neq\overline{x}_B$ 2. Testujemy hipotezę: * wczytujemy dane do R * wykonujemy test t (klasyczny = zakładamy równość wariancji w grupie A i B) 3. Na podstawie wyników testu wyciągamy wnioski i udzielamy odpowiedzi na pytanie ```{r} # ad2 # wczytanie danych do R (plik tekstowy, dwie kolumny, wartości z nagłówkami, odzielone znakiem tabulacji) dane <- read.csv('~/konas13@gmail.com/Dokumenty/Dydaktyka/Statystyka_Ochrona_Srodowiska/Cw_3_Test_t_czII/Cw3_1.txt',sep="\t") dane ``` ```{r} # obliczamy statystykę t # 1 obliczamy wariancję s^2 a <- dane$A[!is.na(dane$A)] a b <- dane$B a s2 <- (sum((a-mean(a))^2)+sum((b-mean(b))^2))/(length(a)+length(b)-2) s2 # obliczamy t t <- (mean(b)-mean(a))/sqrt((s2/length(a))+(s2/length(b))) t ``` Na podstawie obliczonej statystyki $t$ wnioskujemy na temat przyjętej hipotezy zerowej. W tym celu musimy znaleźć wartość graniczną $t_\alpha$, przy $\alpha=0.05$. ```{r} ta <- qt(0.95,(length(a)+length(b)-2)) ta ``` Na podstawie otrzymanych wyników odrzucamy $H_0$ na rzecz $H_A$, na poziomie istotności $\alpha=0.05$, ponieważ obliczona statystyka $t$ jest większa od wartości granicznej $t_\alpha$. ```{r} t > ta ``` Po przeprowadzeniu testu statystycznego możemy odpowiedzieć, że zawartość próchnicy w glebie w gospodarstwie A i B jest różna (na poziomie istotności $\alpha=0.05$). Możemy także wykorzystać wbudowaną funkcję R dla testu t - `t.test()`. Domyślnie funkcja t.test wykorzystuje algorytm Welcha, jeżeli chcemy użyć algorytmu "klasycznego", musimy podać parametr `var.equal = T`. ```{r} t.test(a,b, var.equal = T) ``` W przypadku użycia funkcji t.test, wnioskujemy na podstawie *pvalue*, a nie wartości granicznej $t_\alpha$. Wnioskowanie jest takie samo. Na podstawie otrzymanych wyników odrzucamy $H_0$ na rzecz $H_A$, na poziomie istotności $\alpha=0.05$, ponieważ *pvalue* jest mniejsza od $\alpha$. ```{r} wynik <- t.test(a,b, var.equal = T) wynik$p.value < 0.05 ``` ## Graficzna prezentacja wyników Wyniki pomiarów zawartości próchnicy w glebie w gospodarstwie A oraz B możemy przedstawić graficznie za pomocą wykresu słupkowego `barplot`. ```{r} # tworzymy wektor z średnimi dla gos. A oraz B sr <- c(mean(a),mean(b)) # tworzymy wektor z nazwami, użyjemy ich przy tworzeniu wykresu sr_nemes <- c("Gos. A", "Gos.B") # tworzymy wektor z wartościami SEM, użyjemy ich przy tworzeniu słupków błędu sr_SEM <- c(sd(a)/sqrt(length(a)),sd(b)/sqrt(length(b))) # tworzymy wykres wykres <- barplot(sr, names.arg = sr_nemes, ylim = c(0,350), main = "Zawartość próchnicy w glebie", col = 'red') # dodajemy do wykresu słupki błędów (SEM) segments(wykres, sr - sr_SEM, wykres, sr + sr_SEM, lwd = 1.5) arrows(wykres, sr - sr_SEM, wykres, sr + sr_SEM, lwd = 1.5, angle = 90, code = 3, length = 0.05) ``` **Ćwiczenie 1** W pliku Cw3_2.txt znajduje się zestawienie plonów pszenicy z dwóch sąsiednich gmin. Na poziomie istotności $\alpha=0.05$ odpowiedz, czy średnie plony pszenicy w tych gminach są na tym samym poziomie? - Sformułuj $H_0$ oraz $H_A$ - Wykonaj test statystyczny - Wyciągnij wnioski (odpowiedz na postawione pytanie) - Przedstaw wyniki graficznie (wykres słupkowy) ## Analiza danych w formacie 'stack data' W środowisku R często spotykamy się z zapisem wyników pomiarów (danych) w "formacie stack", co oznacza, że mamy dwie kolumny. Pierwsza kolumna zawiera wartości (wyniki pomiarów), a druga kolumna informacje o przynależności pomiaru do danej grupy. R posiada wbudowaną funkcję `stack` oraz `unstack`, która pozwala na zmianę formatu zapisu danych. ```{r} # zmieniamy format danych na stack dane1 <- stack(dane) dane1 # możemy zmienic nazwy kolumn, aby były bardziej informatywne colnames(dane1) <- c("Zaw.pr", "Gosp") dane1 ``` W przypadku danych w formacie 'stack' możemy wykonać test t korzystając z zapisu `~`. ```{r} t.test(Zaw.pr~Gosp, data = dane1, var.equal = T) ``` ## Test F dla wariancji W celu sprawdzenia hipotezy o równości wariancji w badanych próbach wykorzystamy funkcje `var.test`, która implementuje test F w R. W teście tym zakładamy, losowość prób, rozkład normalny i niezależność wyników. Wzór na statystykę testową f ma postać: $$f=\frac{s^2_1}{s^2_2}$$ Obliczoną wartość statystyki $f$ porównujemy z wartością graniczną $f_\alpha$, o liczbach stopni sfobody $n_1 - 1$ oraz $n_2 - 1$ przy zadanym *poziomie istotności*. Odrzucamy hipotezę zerową o równości wariancji w próbach, jeżeli wartość statystyki testowej $f$ jest większa od wartości granicznej $f_\alpha$. Funkcja `var.test` zwraca wartość *pvalue*, którą interpretujemy, analogicznie jak w przypadku funkcji `t.test`. Funkcję `var.test` możemy użyć na danych typu 'stack' jak i 'unstack'. ```{r} var.test(Zaw.pr~Gosp, data = dane1) ``` Uzyskane wyniki (*pvalue*>$\alpha$), nie pozwalają na odrzucenie hipotezy zerowej, więc możemy przyjąć, że zmienność zawartości próchnicy (wariancja) w gospodarstwie A i B jest taka sama. **Ćwiczenie 2** Dla danych w pliku Cw_3_1.txt obliczyć statystykę testową f i porównać ją z wartością krytyczną $f_\alpha$. *Podpowiedź* Wartość krytyczną $f_\alpha$ możemy uzyskać z funkcji R `qf`. **Ćwiczenie 3** Czy zmienność plonów w gminie 1 i gminie 2 jest taka sama? (dane Cw3_2.txt)