O co pyta test t
Każdy test t odpowiada na to samo podstawowe pytanie: czy ta różnica średnich jest prawdziwa, czy może to tylko szum? Próby się wahają: zmierz czas reakcji dziesięciu osób dwa razy, a dostaniesz dwie różne średnie, choć nic się nie zmieniło. Test t porównuje zaobserwowaną różnicę z wahaniem, jakiego można oczekiwać przez przypadek, i podaje, jak zaskakujące byłyby twoje dane, gdyby prawdziwa różnica wynosiła zero.
Trzy odmiany, jedna funkcja:
- Jedna próba: czy średnia tej grupy różni się od ustalonej wartości?
- Dwie próby: czy te dwie niezależne grupy mają różne średnie?
- Próby sparowane: czy te same osoby zmieniły się między dwoma pomiarami?
Jedna próba: t.test(x, mu = ...)
Załóżmy, że proces ma trwać średnio 5.0 sekundy, a ty mierzysz czas dziesięciu przebiegów:
Średnia z próby to 5.61, ale czy 0.61 powyżej celu coś znaczy przy zaledwie dziesięciu przebiegach, czy mieści się w normalnym wahaniu? Właśnie na to odpowiada wynik.
Odczytywanie wyniku linia po linii
To sekcja, która daje najwięcej: wynik każdego wariantu t.test() ma ten sam kształt, więc wystarczy raz nauczyć się go czytać. Uruchom blok powyżej i dopasuj każdą linię:
- t = 4.26: statystyka testowa, czyli zaobserwowana różnica (5.61 − 5 = 0.61) podzielona przez błąd standardowy średniej (około 0.143). Mówi, że średnia z próby leży nieco ponad cztery błędy standardowe od zakładanej wartości. Większe |t| = bardziej zaskakujący wynik przy hipotezie zerowej.
- df = 9: stopnie swobody, tutaj n − 1. Mała liczba stopni swobody oznacza małe próby, a więc test wymaga większego t, zanim zrobi to na nim wrażenie.
- p-value ≈ 0.002: gdyby prawdziwa średnia naprawdę wynosiła 5, prawdopodobieństwo wylosowania próby, której średnia leży co najmniej tak daleko od 5 (w dowolnym kierunku), wynosi około 0.2%. To całe znaczenie. To nie jest prawdopodobieństwo, że prawdziwa średnia to 5, a małe p-value nie dowodzi twojego ulubionego wyjaśnienia. Mówi tylko, że „trudno zrzucić to na przypadek”. Przy zwykłym progu 0.05 odrzucasz tu hipotezę zerową.
- alternative hypothesis: przypomnienie, co oznaczałoby odrzucenie.
not equal to 5potwierdza, że test był dwustronny. - 95 percent confidence interval: 5.29 to 5.93: zakres prawdziwych średnich zgodnych z danymi. Zauważ, że 5 leży poza nim. To ten sam werdykt co p < 0.05, wyrażony w jednostkach danych, a do tego mówi o prawdopodobnej wielkości efektu, czego p-value nigdy nie robi.
- sample estimates: zaobserwowana średnia, żeby czytelnik widział surowy fakt, który jest testowany.
Jeśli potrzebujesz poszczególnych elementów w kodzie: result <- t.test(times, mu = 5), a potem result$p.value, result$conf.int, result$estimate.
Dwie próby: porównywanie niezależnych grup
Dla dwóch niezależnych grup interfejs formuły czyta się jak samo pytanie. ToothGrowth zapisuje wzrost zębów u świnek morskich, którym podawano witaminę C jako sok pomarańczowy (OJ) albo kwas askorbinowy (VC):
Czytaj to jako „przetestuj len w podziale według supp”. Wynik pokazuje teraz dwie średnie z prób (średnia dla każdej grupy, około 20.7 i 17.0), a przedział ufności dotyczy różnicy między nimi. Tutaj p ≈ 0.061, a przedział biegnie od około −0.17 do 7.57: obejmuje zero, więc na poziomie 0.05 nie da się wykluczyć „braku różnicy”. Jednak przedział sięgający +7.6 ostrzega też przed ogłaszaniem, że różnica nie istnieje. „Nieistotne” znaczy nieudowodnione, a nie udowodniony brak.
Welch jest domyślny i to dobrze
Spójrz na nagłówek wyniku: Welch Two Sample t-test, z ułamkową liczbą stopni swobody (około 55.3). Klasyczny test t Studenta zakłada, że obie grupy mają równą wariancję; wersja Welcha rezygnuje z tego założenia i w zamian koryguje liczbę stopni swobody. Gdy wariancje naprawdę są równe, Welch daje w zasadzie identyczne odpowiedzi; gdy nie są, test Studenta może być mocno źle skalibrowany, a Welch pozostaje uczciwy. Domyślny wybór R jest więc bezpieczny i rzadko jest powód, żeby go zmieniać.
Rytuał „najpierw sprawdź równość wariancji, potem wybierz test” to przestarzała rada; po prostu używaj testu Welcha.
Próby sparowane: przed i po
Gdy oba pomiary pochodzą od tych samych osób, grupy nie są niezależne, a traktowanie ich jak niezależnych marnuje moc testu. Wyniki ośmiu osób przed kursem szkoleniowym i po nim:
paired = TRUE testuje średnią różnic u każdej osoby (tutaj średnio 2.75 punktu, p ≈ 0.001). Dlaczego parowanie wszystko zmienia: ludzie różnią się między sobą dużo bardziej, niż szkolenie zmieniło kogokolwiek. Rozrzut między osobami od 65 do 80 zagłuszyłby poprawę o 2-3 punkty w teście niesparowanym. Liczenie różnic odejmuje punkt wyjścia każdej osoby, więc zostaje tylko zmiana. Zasada: jeśli dane mają naturalną strukturę „ta sama jednostka zmierzona dwa razy”, sparuj je. (I nigdy nie używaj paired = TRUE, gdy grupy są naprawdę niezależne, bo parowanie byłoby fikcją).
Testy jednostronne: ostrożnie
Domyślnie test jest dwustronny: różnicę w dowolnym kierunku traktuje jako dowód. Jeśli, zanim zobaczysz dane, twoja hipoteza ma sens tylko w jednym kierunku, możesz to zaznaczyć:
P-value spada o połowę w porównaniu z testem dwustronnym i właśnie dlatego istnieje pokusa: przejście na test jednostronny po zerknięciu na dane to p-hacking. Używaj alternative = "greater" albo "less" tylko przy kierunku naprawdę ustalonym z góry; w razie wątpliwości zostań przy teście dwustronnym.
Założenia i plan awaryjny
Test t zakłada, że obserwacje są niezależne, a średnie z prób mają w przybliżeniu rozkład normalny. Tak jest, gdy same dane są mniej więcej normalne albo próby są odpowiednio duże (ciężką pracę wykonuje centralne twierdzenie graniczne; przy n ≈ 30+ na grupę umiarkowane odstępstwa od normalności nie mają znaczenia). Sprawdź kształt szybkim histogramem albo wykresem pudełkowym. Niezależności nie uratuje jednak żaden test: wynika ze sposobu zbierania danych.
Przy małych próbach z wyraźnie skośnymi danymi albo skrajnymi wartościami odstającymi standardowy nieparametryczny plan awaryjny to jedna linia: wilcox.test(len ~ supp, data = ToothGrowth), która porównuje rozkłady przez rangi zamiast średnich.
Najważniejsze informacje
t.test(x, mu = )dla jednej próby,t.test(y ~ group, data = )dla dwóch,paired = TRUEdla pomiarów przed i po.- P-value mówi, „jak zaskakujące są te dane, gdyby prawdziwa różnica wynosiła zero”, i nic więcej; przedział ufności podaje prawdopodobną wielkość efektu w prawdziwych jednostkach.
- Domyślny test dwóch prób w R to test Welcha (ułamkowe df) i warto przy nim zostać.
- Parowanie usuwa szum między osobami; używaj go zawsze, gdy te same jednostki są mierzone dwa razy.
- Alternatywy jednostronne tylko przy kierunku ustalonym z góry;
wilcox.test()to plan awaryjny oparty na rangach.
Dalej: porównywanie średnich trzech lub więcej grup naraz, czyli ANOVA przez aov().
Najczęściej zadawane pytania
Jak wykonać test t w R?
Przez t.test(). Jedna próba względem ustalonej wartości: t.test(x, mu = 5). Dwie niezależne grupy: t.test(value ~ group, data = df). Pomiary przed i po na tych samych osobach: t.test(after, before, paired = TRUE).
Jak interpretować p-value testu t w R?
To prawdopodobieństwo zobaczenia różnicy co najmniej tak dużej jak twoja, gdyby prawdziwa różnica wynosiła zero. Małe p-value (zwyczajowo poniżej 0.05) oznacza, że dane trudno wytłumaczyć szumem, więc odrzucasz hipotezę zerową. To nie jest prawdopodobieństwo, że hipoteza zerowa jest prawdziwa, i nic nie mówi o tym, jak duża czy ważna jest różnica. Do tego służy przedział ufności.
Dlaczego R domyślnie wykonuje test t Welcha?
Dwupróbkowy t.test() w R domyślnie używa wersji Welcha, która nie zakłada równych wariancji w obu grupach, dlatego liczba stopni swobody wychodzi ułamkowa. Test Welcha zachowuje się prawie identycznie jak klasyczny test Studenta, gdy wariancje są równe, i jest bezpieczniejszy, gdy nie są, więc domyślny wybór jest właściwy. Używaj var.equal = TRUE tylko wtedy, gdy zajęcia wprost wymagają klasycznego testu z połączoną wariancją.
Kiedy używać sparowanego testu t w R?
Gdy dwa zestawy pomiarów tworzą naturalne pary: ta sama osoba zmierzona przed i po, ten sam element oceniony dwiema metodami. t.test(after, before, paired = TRUE) testuje średnią różnic wewnątrz par, co usuwa zmienność między osobami i zwykle daje dużo większą moc niż traktowanie grup jako niezależnych.