ML Atlas

01 · Podstawy · 5 min czytania · aktualizacja

Test chi-kwadrat niezależności — jak sprawdzić, czy dwie cechy kategoryczne są powiązane?

W skrócie

Test chi-kwadrat porównuje liczebności w tabeli z tymi, których oczekiwalibyśmy bez związku cech. Na Titanicu płeć i przeżycie dają χ² = 263,1 i V Cramera 0,54.

Co to jest

Test chi-kwadrat niezależności (χ², test Pearsona) sprawdza, czy dwie cechy kategoryczne są ze sobą powiązane. Porównuje liczebności zaobserwowane w tabeli kontyngencji z oczekiwanymi przy niezależności cech. Im większa rozbieżność, tym większa statystyka χ² i mniejsza wartość p.

Intuicja: w zbiorze Titanic jest 891 pasażerów, z których przeżyło 38,4%. Gdyby płeć nie miała znaczenia, wśród 314 kobiet przeżyłoby też około 38,4%, czyli około 121. Przeżyło 233. Test chi-kwadrat odpowiada na pytanie, czy tak duże odstępstwo od „121” mógłby wytworzyć sam przypadek.

Hipoteza zerowa brzmi: cechy są niezależne. Odrzucenie jej mówi tylko, że jakiś związek istnieje — nie mówi, jak silny, w którą stronę ani dlaczego. Do siły związku służy osobna miara, najczęściej V Cramera.

Mechanizm — dlaczego tak działa

zaobserwowane kontra oczekiwaneKobiety, które przeżyłyoczekiwaneE ≈ 121zaobserwowaneO = 233oczekiwane: tak jak wszyscy (38,4% z 314)χ² = Σ (O − E)² / E po wszystkich komórkachDuże χ² → małe p → związek istnieje.Jak silny, mówi osobna miara: V Cramera.
Schemat: zaobserwowane kontra oczekiwane

Dla każdej komórki tabeli liczebność oczekiwana to E = (suma wiersza · suma kolumny) / n. Wynika to wprost z definicji niezależności: P(A i B) = P(A) · P(B). Statystyka testowa to suma po wszystkich komórkach: χ² = Σ (O − E)² / E, gdzie O to liczebność zaobserwowana. Dzielenie przez E sprawia, że odchylenie o 10 w komórce oczekującej 20 waży więcej niż to samo odchylenie w komórce oczekującej 2000.

Pearson (1900) pokazał, że przy prawdziwej hipotezie zerowej i dostatecznie dużych liczebnościach ta suma ma w przybliżeniu rozkład chi-kwadrat. Liczbę stopni swobody dla tabeli r × c poprawił Fisher (1922): df = (r − 1)(c − 1). Tyle komórek można wypełnić dowolnie, zanim sumy brzegowe wyznaczą resztę. Tabela 2 × 2 ma jeden stopień swobody, tabela 3 × 2 — dwa. Wartość p to pole ogona rozkładu χ² za obserwowaną statystyką.

Siłę związku mierzy V Cramera (1946): V = √(χ² / (n · (k − 1))), gdzie k to mniejsza z liczb wierszy i kolumn. V leży między 0 (brak związku) a 1 (jedna cecha wyznacza drugą). Dla tabeli 2 × 2 V to wartość bezwzględna współczynnika φ, czyli korelacji dwóch zmiennych zero-jedynkowych. W odróżnieniu od χ² i p, V nie rośnie z samą liczebnością próby.

Gdzie to się psuje. Po pierwsze, rozkład χ² to przybliżenie. Klasyczna reguła (Cochran, 1954) wymaga, by liczebność oczekiwana była co najmniej 5 w co najmniej 80% komórek i nigdzie nie spadała poniżej 1. Przy małych tabelach 2 × 2 używa się dokładnego testu Fishera albo poprawki Yatesa (1934), która odejmuje 0,5 od każdego |O − E| i czyni test ostrożniejszym. Po drugie, przy dużym n niemal każdy związek jest „istotny”, nawet znikomy. Po trzecie, test zakłada niezależne obserwacje — jedna osoba w jednej komórce. Po czwarte, związek to nie przyczynowość: trzecia cecha może wytwarzać albo maskować zależność, a w skrajnym przypadku odwracać jej kierunek (paradoks Simpsona).

Na przykładzie

Płeć × przeżycie na Titanicu: przeżyło 74,2% kobiet i 18,9% mężczyzn. Liczebności oczekiwane przy niezależności to 120,5 ocalałych kobiet i 221,5 ocalałych mężczyzn, a w rzeczywistości 233 i 109. Statystyka χ² wynosi 263,1 przy jednym stopniu swobody (z poprawką Yatesa 260,7), a p jest rzędu 10⁻⁵⁹. Wartość krytyczna dla α = 0,05 to tylko 3,84. V Cramera 0,54 oznacza silny związek.

Klasa podróży × przeżycie: przeżyło 63,0% pasażerów pierwszej klasy, 47,3% drugiej i 24,2% trzeciej. χ² = 102,9 przy dwóch stopniach swobody, p rzędu 10⁻²³, V = 0,34. Związek jest wyraźny, ale słabszy niż dla płci. Reszty Pearsona (O − E) / √E pokazują, skąd się bierze: największe odstępstwa od niezależności to nadmiar ocalałych w pierwszej klasie (reszta +5,8) i niedobór ocalałych w trzeciej (−5,1).

Te wyniki się splatają: kobiety stanowiły 43,5% pierwszej klasy i 29,3% trzeciej, więc część „efektu klasy” to efekt płci. W każdej klasie z osobna związek płci z przeżyciem pozostaje silny (V od 0,39 do 0,75), a wśród kobiet przeżyło 96,8% w pierwszej klasie i 50,0% w trzeciej. Kierunek się nie odwraca, ale pełny obraz dają dopiero tabele w podgrupach.

Pułapki na liczbach. Tabela liczby rodziców i dzieci na pokładzie × przeżycie ma 14 komórek, z których 8 ma liczebność oczekiwaną poniżej 5 (najmniejsza 0,38) — p = 9,7 · 10⁻⁵ z tego testu jest niewiarygodne. Odwrotnie przy dużym n: różnica 50,5% wobec 49,5% daje p = 0,66 przy 2000 obserwacji, a przy 200 000 obserwacjach p = 8 · 10⁻⁶, choć V wynosi w obu przypadkach 0,01.

Jak to policzono
  • Dane: data/raw/titanic.csv, 891 pasażerów; tabele pd.crosstab; test scipy.stats.chi2_contingency (SciPy 1.18.1); V Cramera = √(χ² / (n · (min(r, c) − 1))).
  • Płeć × przeżycie (2 × 2): kobiety 81 zmarłych / 233 ocalałych, mężczyźni 468 / 109; oczekiwane 193,5 / 120,5 i 355,5 / 221,5. Bez poprawki Yatesa (correction=False): χ² = 263,05, df = 1, p = 3,7 · 10⁻⁵⁹, V = 0,543. Z poprawką (domyślnie w SciPy dla df = 1): χ² = 260,72, p = 1,2 · 10⁻⁵⁸, V = 0,541.
  • Klasa × przeżycie (3 × 2): 80/136, 97/87, 372/119; oczekiwane 133,1/82,9, 113,4/70,6, 302,5/188,5; χ² = 102,89, df = 2, p = 4,5 · 10⁻²³, V = 0,340 (poprawka Yatesa nie dotyczy df > 1). Reszty Pearsona (O − E) / √E ocalałych: +5,83, +1,95, −5,06; zmarłych: −4,60, −1,54, +3,99.
  • Wartości krytyczne χ² dla α = 0,05: 3,84 (df = 1), 5,99 (df = 2).
  • W podgrupach klas (płeć × przeżycie, bez poprawki, więc V = |φ|): V = 0,615, 0,753, 0,387; odsetek kobiet w klasach 43,5%, 41,3%, 29,3%; przeżycie kobiet 96,8%, 92,1%, 50,0%.
  • Liczba rodziców i dzieci (parch) × przeżycie (7 × 2): 8 z 14 komórek z E < 5, najmniejsza E = 0,38; χ² = 27,93, p = 9,7 · 10⁻⁵.
  • Duże n: tabela 2 × 2 o proporcjach 50,5% / 49,5% w obu wierszach przeciwnie, przemnożona tak, by n = 2000, 20 000, 200 000 (correction=False): p = 0,66, 0,16, 7,7 · 10⁻⁶; V = 0,01 za każdym razem.

Dane: Titanic

W praktyce

  • scipy.stats.chi2_contingency(pd.crosstab(a, b)) zwraca statystykę, p, stopnie swobody i tabelę liczebności oczekiwanych; dla tabel 2 × 2 domyślnie stosuje poprawkę Yatesa (correction=True).
  • Zawsze obejrzyj expected_freq: gdy dużo komórek ma E < 5, połącz rzadkie kategorie albo użyj scipy.stats.fisher_exact (tabele 2 × 2) lub testu permutacyjnego.
  • Podawaj siłę związku obok p: V Cramera (od SciPy 1.7 także scipy.stats.contingency.association(tab, method="cramer")).
  • Do selekcji cech w ML: sklearn.feature_selection.chi2 liczy statystykę dla nieujemnych cech (np. zliczeń słów) względem klasy — to wygodny filtr, nie test hipotezy o jednej tabeli.
  • Testując wiele par cech, pamiętaj o porównaniach wielokrotnych; gdy żadnego związku nie ma, przy 100 testach na poziomie 0,05 około pięciu wyjdzie „istotnych” przypadkiem.

Najczęstsze pytania

Czym różni się test chi-kwadrat niezależności od testu zgodności?
Test zgodności sprawdza, czy jedna cecha kategoryczna ma zadany rozkład (np. czy kostka jest uczciwa). Test niezależności sprawdza, czy dwie cechy są powiązane, i liczebności oczekiwane bierze z sum brzegowych tabeli. Wzór na statystykę jest ten sam, różnią się stopnie swobody.
Czy stosować poprawkę Yatesa?
Dotyczy tylko tabel 2 × 2 i czyni test bardziej zachowawczym, czasem nadmiernie. Przy dużych liczebnościach nie ma znaczenia (na Titanicu 263,1 wobec 260,7), przy małych lepiej od razu użyć dokładnego testu Fishera.
Czy mały p oznacza silny związek?
Nie. Wartość p zależy naraz od siły związku i od liczebności próby. O sile mówi V Cramera albo zwykłe porównanie odsetków.
Czy test pokazuje, która kategoria odpowiada za związek?
Sam test nie, bo daje jedną liczbę dla całej tabeli. Wskazują to reszty Pearsona (O − E) / √E: komórki z resztą powyżej około 2 co do wartości bezwzględnej najbardziej odbiegają od niezależności. Dokładniejsze są reszty skorygowane, które przy niezależności mają w przybliżeniu rozkład normalny standardowy.

Źródła

Zobacz też