Słownik metodologiczny · Testy statystyczne

Test Cochrana–Mantela–Haenszela – jak zbadać związek w warstwowych tabelach 2 × 2?

Test Cochrana–Mantela–Haenszela sprawdza związek dwóch zmiennych dychotomicznych z kontrolą trzeciej zmiennej. Pokazujemy wspólny OR Mantela–Haenszela, przykład w R i opis do pracy.

Strona główna / Słownik / Test Cochrana–Mantela–Haenszela
W skrócie: Test Cochrana–Mantela–Haenszela (CMH) sprawdza związek dwóch zmiennych dychotomicznych w kilku warstwach (tabela 2 × 2 × k), kontrolując zmienną warstwującą. Towarzyszy mu wspólny iloraz szans Mantela–Haenszela.

Co to jest test Cochrana–Mantela–Haenszela?

Test Cochrana–Mantela–Haenszela (CMH) sprawdza związek dwóch zmiennych dychotomicznych, gdy dane podzielono na warstwy według trzeciej zmiennej, np. ośrodka, grupy wiekowej albo poziomu umiejętności. Zamiast jednej tabeli 2 × 2 masz k tabel, czyli układ 2 × 2 × k. Mantel i Haenszel (1959) opisali tę metodę dla badań retrospektywnych, w których trzeba kontrolować zmienne zakłócające bez budowania modelu regresji.

Statystyka testu i wspólny OR

W każdej warstwie porównuje się liczebność jednej komórki z liczebnością oczekiwaną przy braku związku. Różnice sumuje się po warstwach i odnosi do sumy wariancji. Wynik ma w dużych próbach rozkład χ² z 1 df, a hipoteza zerowa mówi, że wspólny iloraz szans wynosi 1. Obok testu podaje się wspólny OR Mantela–Haenszela, czyli ważoną średnią OR z warstw: ORMH = Σ(aidi/ni) / Σ(bici/ni). Przedział ufności liczy się zwykle z estymatora wariancji Robinsa, Breslowa i Greenlanda (1986), poprawnego zarówno przy wielu małych warstwach, jak i przy kilku dużych. Bez warstw zostaje zwykły test chi-kwadrat niezależności.

Przykład

W klasycznych danych o przyjęciach na studia (zbiór UCBAdmissions w R: 4526 kandydatów, 6 wydziałów) surowy OR przyjęcia mężczyzn względem kobiet wynosił 1.84. Po rozwarstwieniu według wydziału wspólny ORMH spadł do 0.90, 95% CI [0.77, 1.06], a test CMH był nieistotny: χ²(1) = 1.43, p = .232. Kobiety częściej kandydowały na wydziały, na które trudniej się dostać – to paradoks Simpsona. Test Woolfa pokazał jednak, że OR różnią się między wydziałami: Q(5) = 17.90, p = .003; na wydziale A OR = 0.35.

Jak opisać w pracy

Po uwzględnieniu wydziału jako zmiennej warstwującej płeć nie wiązała się istotnie z przyjęciem na studia, test Cochrana–Mantela–Haenszela: χ²(1) = 1.43, p = .232; wspólny OR Mantela–Haenszela = 0.90, 95% CI [0.77, 1.06].

Na co uważać

  • Niejednorodne OR. Wspólny OR ma sens, gdy OR w warstwach są podobne. Przy przeciwnych kierunkach efekty się znoszą. Sprawdź jednorodność (Breslow–Day lub Woolf) i pokaż OR z warstw.
  • Warstwy to nie mediator. Warstwuj według zmiennej, która poprzedza ekspozycję, a nie według jej skutku.
  • Zastosowanie w psychometrii. Holland i Thayer (1986) użyli procedury Mantela–Haenszela do wykrywania DIF; warstwami są poziomy wyniku ogólnego. Krok po kroku pokazuje to wpis DIF krok po kroku.

Pojedynczą tabelę 2 × 2 policzysz w kalkulatorze tabeli 2×2.

Przykład reprodukowalny

Test Cochrana–Mantela–Haenszela w R

Kod liczy surowy OR i OR w każdej warstwie, wykonuje test CMH funkcją mantelhaen.test() i ręcznie sprawdza jednorodność OR testem Woolfa.

Płeć a przyjęcie na studia z kontrolą wydziału

Dane wejściowe: wbudowany zbiór UCBAdmissions (tabela 2 × 2 × 6: przyjęcie, płeć, wydział; 4526 kandydatów), bez losowania.

Co odczytać: surowy OR i OR w warstwach, statystykę Mantel-Haenszel X-squared z p, wspólny OR z 95% CI oraz Q Woolfa z p.

R
tab <- UCBAdmissions                                  # przyjęcia na studia: 2 × 2 × 6 wydziałów
surowa <- margin.table(tab, c(1, 2))                  # tabela 2 × 2 bez podziału na wydziały
OR_surowy <- (surowa[1, 1] * surowa[2, 2]) / (surowa[1, 2] * surowa[2, 1])
OR_warstwy <- apply(tab, 3, function(t) (t[1, 1] * t[2, 2]) / (t[1, 2] * t[2, 1]))
round(c(OR_surowy = OR_surowy, OR_warstwy), 2)       # OR przyjęcia: mężczyźni vs kobiety
mantelhaen.test(tab)                                  # test CMH i wspólny OR Mantela–Haenszela
# jednorodność OR między warstwami (test Woolfa, liczony ręcznie)
lor <- log(OR_warstwy)
w   <- 1 / apply(tab, 3, function(t) sum(1 / t))
Q   <- sum(w * (lor - sum(w * lor) / sum(w))^2)
round(c(Q_Woolf = Q, df = length(lor) - 1,
        p = pchisq(Q, df = length(lor) - 1, lower.tail = FALSE)), 4)
Wynik w R
OR_surowy         A         B         C         D         E         F 
     1.84      0.35      0.80      1.13      0.92      1.22      0.83 

	Mantel-Haenszel chi-squared test with continuity correction

data:  tab
Mantel-Haenszel X-squared = 1.4269, df = 1, p-value = 0.2323
alternative hypothesis: true common odds ratio is not equal to 1
95 percent confidence interval:
 0.7719074 1.0603298
sample estimates:
common odds ratio 
        0.9046968 

Q_Woolf      df       p 
17.9017  5.0000  0.0031 

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje pakietów base i stats). W pracy podaj wersję R, której faktycznie użyto (sessionInfo()).

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/

Najczęstsze pytania

Kiedy użyć testu Cochrana–Mantela–Haenszela zamiast zwykłego chi-kwadrat?

Gdy związek dwóch zmiennych dychotomicznych trzeba ocenić z kontrolą trzeciej zmiennej kategorialnej, np. ośrodka lub grupy wiekowej. Zwykły chi-kwadrat na zsumowanej tabeli może dać obraz zniekształcony przez zmienną zakłócającą.

Jak policzyć test CMH w R?

Przygotuj tablicę 2 × 2 × k i wywołaj mantelhaen.test(tablica). Wynik zawiera statystykę χ² z 1 df, p, wspólny OR Mantela–Haenszela i jego 95% przedział ufności.

Co zrobić, gdy ilorazy szans w warstwach są różne?

Sprawdź jednorodność OR testem Breslowa–Daya lub Woolfa. Przy wyraźnej niejednorodności pokaż OR osobno dla warstw i rozważ regresję logistyczną z interakcją zamiast jednego wspólnego OR.

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Holland, P. W., & Thayer, D. T. (1986). Differential item functioning and the Mantel–Haenszel procedure. ETS Research Report Series, 1986(2). https://doi.org/10.1002/j.2330-8516.1986.tb00186.x
  2. Mantel, N., & Haenszel, W. (1959). Statistical aspects of the analysis of data from retrospective studies of disease. Journal of the National Cancer Institute, 22(4), 719–748. https://doi.org/10.1093/jnci/22.4.719
  3. Robins, J., Breslow, N., & Greenland, S. (1986). Estimators of the Mantel-Haenszel variance consistent in both sparse data and large-strata limiting models. Biometrics, 42(2), 311–323. https://doi.org/10.2307/2531052

Cytowania BibTeX

@article{holland1986differential, author={Holland, Paul W. and Thayer, Dorothy T.}, title={{Differential item functioning and the Mantel–Haenszel procedure}}, journal={ETS Research Report Series}, year={1986}, volume={1986}, number={2}, doi={10.1002/j.2330-8516.1986.tb00186.x}}
@article{mantel1959statistical, author={Mantel, Nathan and Haenszel, William}, title={{Statistical aspects of the analysis of data from retrospective studies of disease}}, journal={Journal of the National Cancer Institute}, year={1959}, volume={22}, number={4}, pages={719--748}, doi={10.1093/jnci/22.4.719}}
@article{robins1986estimators, author={Robins, James and Breslow, Norman and Greenland, Sander}, title={{Estimators of the Mantel-Haenszel variance consistent in both sparse data and large-strata limiting models}}, journal={Biometrics}, year={1986}, volume={42}, number={2}, pages={311--323}, doi={10.2307/2531052}}
R