Test istotności dla wartości średniej
Test t-Studenta jest jednym z podstawowych narzędzi statystyki, które pozwala na badanie różnic między średnimi. W tym wpisie omówimy, jak używać testu t-Studenta w różnych kontekstach: dla jednej próbki, dla dwóch próbek sparowanych i dla dwóch próbek niezależnych. Omówimy również, co zrobić, gdy nasze dane nie spełniają założeń testu t-Studenta. Na koniec przedstawimy test Wilcoxona, który jest nieparametrycznym odpowiednikiem testu t-Studenta.
Test t-Studenta dla jednej próbki
Test t-Studenta dla jednej próbki pozwala nam porównać średnią naszej próbki do określonej wartości. W naszym przypadku sprawdzamy, czy średnia wieku w naszej populacji różni się od 40 lat. Najpierw sprawdzamy, czy nasze dane mają rozkład normalny za pomocą testu Shapiro-Wilka. W tym teście mamy:
- Hipoteza zerowa: próbka ma rozkład normalny
- Hipoteza alternatywna: próbka nie ma rozkładu normalnego
1 2 3 4 |
age = rnorm(100, 40, 5) %>% round(0) shapiro.test(age) # W = 0.98008, p-value = 0.1348 |
Wartość p-value jest większa od 0.05, zatem nie mamy podstaw do odrzucenia hipotezy zerowej. Zatem nasza próbka nie różni się istotnie od rozkładu normalnego.
Następnie obliczamy średnią próbki i przeprowadzamy test t-Studenta, porównując ją do wartości 40.
- Hipoteza zerowa: średnia w populacji wynosi 40
- Hipoteza alternatywna: średnia w populacji jest różna od 40
Hipotezę alternatywną możemy też sformułować na dwa inne sposoby: średnia z populacji jest większa od 40 lub średnia z populacji jest mniejsza od 40.
1 2 3 4 5 |
mean(age) # [1] 39.18 t.test(age, mu = 40) # t = -1.6569, df = 99, p-value = 0.1007 |
Tu również p-value jest większa od 0.05, zatem średnia z populacji nie różni się istotnie od 40.
Test t-Studenta dla dwóch próbek sparowanych
Test t-Studenta dla dwóch próbek sparowanych używamy, kiedy mamy pary obserwacji – na przykład, kiedy mierzymy tę samą zmienną przed i po interwencji. W naszym przypadku używamy zestawu danych sleep, który zawiera pomiary czasu snu przed i po terapii.
Podobnie jak wcześniej, najpierw sprawdzamy normalność naszych danych. Następnie przeprowadzamy test t-Studenta dla próbek sparowanych.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
data(sleep) shapiro.test(sleep %>% filter(group == 1) %>% pull(extra)) # W = 0.92581, p-value = 0.4079 shapiro.test(sleep %>% filter(group == 2) %>% pull(extra)) # W = 0.9193, p-value = 0.3511 t.test( sleep %>% filter(group == 1) %>% pull(extra) , sleep %>% filter(group == 2) %>% pull(extra) , paired = TRUE ) # t = -4.0621, df = 9, p-value = 0.002833 t.test(sleep$extra ~ sleep$group, paired = TRUE) # t = -4.0621, df = 9, p-value = 0.002833 |
W przypadku próbek sparowanych nie musimy sprawdzać równości wariancji. Wynika to z faktu, że test próbek sparowanych jest równoważny testowi jednej średniej, gdzie zmienną jest różnica odpowiednich wartości w obu próbkach.
1 2 3 4 5 6 |
sleep = sleep %>% pivot_wider(id_cols = 'ID', values_from = 'extra', names_from = 'group') %>% mutate(diff = `1` - `2`) t.test(sleep$diff) # t = -4.0621, df = 9, p-value = 0.002833 |
Test t-Studenta dla dwóch próbek niezależnych
Kiedy mamy dwie różne grupy, na przykład grupę kontrolną i grupę eksperymentalną, możemy użyć testu t-Studenta dla dwóch próbek niezależnych. W naszym przypadku sprawdzamy, czy średnie zużycie paliwa (mpg) różni się między samochodami z manualną i automatyczną skrzynią biegów.
Ponieważ test t-Studenta dla dwóch próbek niezależnych zakłada równość wariancji w obu grupach, sprawdzamy to założenie za pomocą testu Levene’a.
- Hipoteza zerowa: obie próbki mają jednakową wariancję
- Hipoteza alternatywna: próbki nie mają jednakowej wariancji
1 2 3 4 5 6 7 8 9 |
data(mtcars) shapiro.test(mtcars %>% filter(am == 0) %>% pull(mpg)) # W = 0.97677, p-value = 0.8987 shapiro.test(mtcars %>% filter(am == 1) %>% pull(mpg)) # W = 0.9458, p-value = 0.5363 leveneTest(mpg ~ as.factor(am), data = mtcars) # Df F value Pr(>F) # group 1 4.1876 0.04957 * |
Następnie przeprowadzamy test t-Studenta, dostosowując go do wyników testu Levene’a. Jeżeli wariancje są równe, używamy standardowego testu t-Studenta. Jeżeli nie, stosujemy wersję testu t-Studenta, która nie zakłada równości wariancji (tzw. poprawka Welcha).
- Hipoteza zerowa: różnica między średnimi obu populacji wynosi 0
- Hipoteza alternatywna: różnica między średnimi jest różna od zera
W tym teście również hipotezę alternatywną możemy sformułować na dwa inne sposoby: różnica między średnimi jest większa od zera lub różnica między średnimi jest mniejsza od zera.
1 2 3 4 5 |
t.test(mpg ~ am, data = mtcars, var.equal = TRUE) # t = -4.1061, df = 30, p-value = 0.000285 t.test(mpg ~ am, data = mtcars, var.equal = FALSE) # t = -3.7671, df = 18.332, p-value = 0.001374 |
Test Wilcoxona
Test Wilcoxona jest nieparametrycznym odpowiednikiem testu t-Studenta. Jest on stosowany, gdy dane nie spełniają założeń testu t-Studenta, czyli nie mają rozkładu normalnego. Test Wilcoxona nie sprawdza różnicy średnich, ale różnicy median – jest to ważna różnica między tymi testami.
W naszym przypadku używamy zestawu danych ChickWeight i sprawdzamy, czy waga kurczaków różni się między dwoma różnymi dietami.
1 2 3 4 5 6 7 8 9 10 11 |
data(ChickWeight) shapiro.test(ChickWeight %>% filter(Diet == 1) %>% pull(weight)) # W = 0.89336, p-value = 2.211e-11 shapiro.test(ChickWeight %>% filter(Diet == 2) %>% pull(weight)) # W = 0.90399, p-value = 3.159e-07 wilcox.test( ChickWeight %>% filter(Diet == 1) %>% pull(weight) ,ChickWeight %>% filter(Diet == 2) %>% pull(weight) ) # W = 11213, p-value = 0.02181 |
Pełny kod R można znaleźć na Github.