Słownik metodologiczny · Testy statystyczne

Poprawka Holma – jak działa i dlaczego jest lepsza od Bonferroniego?

Poprawka Holma kontroluje rodzinny błąd I rodzaju przy kilku testach, a odrzuca co najmniej tyle hipotez co korekta Bonferroniego. Pokazujemy, jak liczyć skorygowane p, przykład w R, opis do pracy i typowe błędy.

Strona główna / Słownik / Poprawka Holma
W skrócie: Poprawka Holma to sekwencyjna korekta wartości p przy wielu testach: najmniejsze p mnoży się przez k, kolejne przez k − 1, k − 2 itd. Kontroluje rodzinny błąd I rodzaju (FWER) tak jak korekta Bonferroniego, ale nigdy nie odrzuca mniej hipotez, więc ma większą moc.

Co to jest poprawka Holma?

Poprawka Holma (ang. Holm correction, procedura Holma–Bonferroniego) to sekwencyjna metoda kontroli rodzinnego błędu I rodzaju (FWER), gdy w jednym badaniu wykonujesz kilka testów. Holm (1979) opisał ją jako procedurę, która odrzuca hipotezy po kolei i zapewnia ustalony z góry poziom ochrony dla dowolnej kombinacji prawdziwych hipotez zerowych. Szerszy kontekst (FWER, FDR) opisuje hasło problem wielokrotnych porównań.

Jak liczyć skorygowane p

  1. Uporządkuj k wartości p od najmniejszej.
  2. Najmniejszą pomnóż przez k, drugą przez k − 1, kolejne przez coraz mniejsze liczby, ostatnią przez 1.
  3. Jeśli któraś wartość wyszła mniejsza od poprzedniej, zastąp ją poprzednią, a wyniki powyżej 1 obetnij do 1.
  4. Odrzuć hipotezy, których skorygowane p jest mniejsze od przyjętego poziomu istotności.

Aickin i Gensler (1996) zaproponowali właśnie taki zapis w postaci skorygowanych p, bo metodę Holma rzadko stosowano, choć jest jednostajnie lepsza od korekty Bonferroniego. Pierwszy krok obu metod jest identyczny, ale dalsze mnożniki Holma są mniejsze, więc nigdy nie odrzuca on mniej hipotez. Hochberg (1988) używa tych samych progów, lecz odrzuca wszystkie hipotezy o p nie większym niż p dowolnej hipotezy poniżej progu, dlatego bywa mocniejszy. Gdy wystarcza kontrola odsetka fałszywych odkryć, rozważ procedurę Benjaminiego–Hochberga; porównanie wszystkich metod zawiera poradnik poprawki na wielokrotne porównania.

Przykład

W symulacji w R porównaliśmy testem t dwie grupy po 40 osób na pięciu wskaźnikach. Surowe p wyniosły .004, .010, .019, .120 i .968, więc bez korekty istotne były trzy wyniki. Po korekcie Bonferroniego (p × 5) został jeden: .020, a dalej .052 i .095. Holm dał .020, .042, .057, .241 i .968 – dwa wyniki istotne. Drugi wskaźnik przeszedł, bo jego p mnożymy przez 4, a nie przez 5. Te same obliczenia wykonasz w kalkulatorze poprawek na wielokrotne porównania.

Jak opisać w pracy

Aby kontrolować rodzinny błąd I rodzaju w pięciu porównaniach, wartości p skorygowano metodą Holma (Holm, 1979). Po korekcie istotne pozostały różnice we wskaźniku 1 (p = .020) i wskaźniku 2 (p = .042), natomiast różnica we wskaźniku 3 nie była istotna (p = .057).

Na co uważać

  • Rodzina ustalona po wynikach. Liczbę testów k określ przed analizą; dopisanie lub pominięcie testu zmienia wszystkie skorygowane p.
  • Same gwiazdki. Podaj skorygowane p i nazwę metody, a nie tylko informację „istotne po korekcie”.
  • Korekta tam, gdzie jej nie trzeba. Nie każda seria testów tworzy rodzinę – zob. czy muszę stosować poprawkę.
Przykład reprodukowalny

Poprawka Holma w R

Kod symuluje pięć porównań dwóch grup, a potem porównuje korektę Bonferroniego z korektą Holma – z funkcji p.adjust i ręcznie.

Skorygowane p dla pięciu testów t

Dane wejściowe: 2 × 40 symulowanych osób, 5 wskaźników o prawdziwych efektach od 0.7 do 0; set.seed(4394).

Co odczytać: surowe i skorygowane p oraz liczbę wyników istotnych przy α = .05.

R
set.seed(4394)
n <- 40; d <- c(0.7, 0.5, 0.45, 0.2, 0)   # prawdziwe efekty dla 5 wskaźników
p <- sapply(d, function(e) t.test(rnorm(n, e), rnorm(n))$p.value)
k <- length(p); o <- order(p)
tab <- data.frame(wskaznik = paste0("W", 1:k), p = round(p, 4),
  bonferroni = round(p.adjust(p, "bonferroni"), 4),
  holm = round(p.adjust(p, "holm"), 4))
tab[o, ]
# ręcznie: (k - i + 1) * p(i), potem maksimum narastające, obcięte do 1
round(pmin(1, cummax((k:1) * sort(p))), 4)
colSums(tab[, -1] < .05)
Wynik w R
  wskaznik      p bonferroni   holm
1       W1 0.0039     0.0197 0.0197
2       W2 0.0104     0.0521 0.0417
3       W3 0.0190     0.0948 0.0569
4       W4 0.1204     0.6020 0.2408
5       W5 0.9684     1.0000 0.9684
[1] 0.0197 0.0417 0.0569 0.2408 0.9684
         p bonferroni       holm
         3          1          2

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (bez dodatkowych pakietów). W pracy podaj wersje faktycznie użytych pakietów (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

Czy poprawka Holma jest zawsze lepsza od korekty Bonferroniego?

Kontroluje ten sam błąd (FWER) i nigdy nie odrzuca mniej hipotez, więc pod względem mocy tak. Przewagą Bonferroniego jest tylko jeden wspólny próg α/k dla wszystkich testów.

Jak policzyć poprawkę Holma w R?

Funkcją p.adjust(p, method = "holm") z bazowego pakietu stats. Zwraca skorygowane p w kolejności wejściowej, które porównujesz bezpośrednio z α, np. .05.

Czy poprawka Holma wymaga niezależnych testów?

Nie. Holm (1979) wykazał kontrolę błędu dla dowolnej kombinacji prawdziwych hipotez zerowych, a procedura opiera się na nierówności Bonferroniego, więc nie zakłada niezależności testów.

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. Aickin, M., & Gensler, H. (1996). Adjusting for multiple testing when reporting research results: The Bonferroni vs Holm methods. American Journal of Public Health, 86(5), 726–728. https://doi.org/10.2105/ajph.86.5.726 ● Otwarty dostęp
  2. Hochberg, Y. (1988). A sharper Bonferroni procedure for multiple tests of significance. Biometrika, 75(4), 800–802. https://doi.org/10.1093/biomet/75.4.800
  3. Holm, S. (1979). A simple sequentially rejective multiple test procedure. Scandinavian Journal of Statistics, 6(2), 65–70. https://www.jstor.org/stable/4615733

Cytowania BibTeX

@article{aickin1996adjusting, author={Aickin, M. and Gensler, H.}, title={{Adjusting for multiple testing when reporting research results: The Bonferroni vs Holm methods}}, journal={American Journal of Public Health}, year={1996}, volume={86}, number={5}, pages={726--728}, doi={10.2105/ajph.86.5.726}}
@article{hochberg1988sharper, author={Hochberg, Yosef}, title={{A sharper Bonferroni procedure for multiple tests of significance}}, journal={Biometrika}, year={1988}, volume={75}, number={4}, pages={800--802}, doi={10.1093/biomet/75.4.800}}
@article{holm1979simple, author={Holm, Sture}, title={{A simple sequentially rejective multiple test procedure}}, journal={Scandinavian Journal of Statistics}, year={1979}, volume={6}, number={2}, pages={65--70}, url={https://www.jstor.org/stable/4615733}}
R