Słownik metodologiczny · Testy statystyczne

Procedura Benjaminiego–Hochberga – jak kontrolować FDR?

Procedura Benjaminiego–Hochberga kontroluje odsetek fałszywych odkryć (FDR) przy wielu testach i daje więcej mocy niż poprawka Holma. Pokazujemy obliczenia krok po kroku, przykład w R, opis do pracy i pułapki.

Strona główna / Słownik / Procedura Benjaminiego–Hochberga
W skrócie: Procedura Benjaminiego–Hochberga kontroluje FDR, czyli oczekiwany odsetek fałszywych odkryć wśród wyników istotnych. Porządkuje się wartości p, porównuje każdą z progiem i/m · q i odrzuca hipotezy aż do największego i, które mieści się w progu. Daje więcej mocy niż Bonferroni i Holm, ale dopuszcza część fałszywych odkryć.

Co to jest procedura Benjaminiego–Hochberga?

Procedura Benjaminiego–Hochberga (ang. Benjamini–Hochberg procedure, BH) to metoda korekty wielu testów, która kontroluje FDR (ang. false discovery rate), czyli oczekiwany odsetek fałszywych odkryć wśród wyników istotnych. Benjamini i Hochberg (1995) zaproponowali ją jako alternatywę dla kontroli FWER, czyli ryzyka choćby jednego błędu I rodzaju, którą zapewniają korekta Bonferroniego i poprawka Holma. Różnicę między FWER a FDR opisuje hasło problem wielokrotnych porównań.

Jak to zrobić krok po kroku

  1. Uporządkuj m wartości p od najmniejszej: p(1) ≤ p(2) ≤ … ≤ p(m).
  2. Dla każdej pozycji i policz próg i/m · q, gdzie q to dopuszczalny poziom FDR, zwykle .05.
  3. Znajdź największe i, dla którego p(i) ≤ i/m · q, i odrzuć hipotezy od 1 do i.

To procedura „w górę”: o wyniku decyduje ostatnia wartość p poniżej progu, więc może zostać odrzucona hipoteza z p większym od własnego progu. Skorygowane wartości p z p.adjust(p, "BH") porównuje się wprost z .05.

Przykład w R

Zasymulowaliśmy 10 testów t, w tym 4 z prawdziwym efektem. Trzecia najmniejsza wartość p = .0152 przekracza swój próg .015, ale czwarta, p = .0194, mieści się w progu .020, więc BH odrzuca cztery hipotezy (skorygowane p = .0486). Poprawka Holma odrzuca tylko dwie. Kosztem tej mocy jest zgoda na to, że część odkryć może być fałszywa.

Jak opisać w pracy

Aby kontrolować odsetek fałszywych odkryć w 10 porównaniach, zastosowano procedurę Benjaminiego–Hochberga (FDR = .05). Po korekcie istotne pozostały cztery porównania (skorygowane p ≤ .049).

Na co uważać

  • FDR to nie FWER. Gdy nawet jeden fałszywy wynik jest poważny, np. przy hipotezie głównej badania konfirmacyjnego, wybierz Holma.
  • Zależność testów. Benjamini i Yekutieli (2001) wykazali, że BH kontroluje FDR także przy dodatniej zależności testów; przy dowolnej zależności służy ich zachowawcza modyfikacja (BY).
  • Rodzina testów. Ustal z góry, które testy korygujesz razem (zob. czy stosować poprawkę). Własne wartości p przeliczysz w kalkulatorze poprawek na wielokrotne porównania.
Przykład reprodukowalny

Procedura Benjaminiego–Hochberga w R

Kod symuluje 10 testów t (4 z efektem, 6 bez), porządkuje wartości p, pokazuje progi BH i porównuje skorygowane p według Benjaminiego–Hochberga i Holma.

Progi BH i skorygowane p dla 10 testów

Dane wejściowe: 10 porównań dwóch grup po 40 osób, różnica średnich 0.6 SD w czterech z nich; set.seed(4360).

Co odczytać: kolumny p i prog_BH (czwarte p mieści się w progu), skorygowane p oraz liczbę odrzuconych hipotez: 4 dla BH i 2 dla Holma.

R
set.seed(4360)
d <- c(rep(0.6, 4), rep(0, 6))       # 4 prawdziwe efekty, 6 zerowych
p <- sapply(d, function(delta)
  t.test(rnorm(40, delta), rnorm(40))$p.value)
p <- sort(p); m <- length(p)
tab <- data.frame(i = 1:m, p = round(p, 5),
                  prog_BH = round((1:m) / m * .05, 4),
                  p_BH    = round(p.adjust(p, "BH"), 4),
                  p_Holm  = round(p.adjust(p, "holm"), 4))
tab
colSums(tab[, c("p_BH", "p_Holm")] < .05)   # liczba odrzuconych hipotez
Wynik w R
    i       p prog_BH   p_BH p_Holm
1   1 0.00005   0.005 0.0004 0.0005
2   2 0.00007   0.010 0.0004 0.0006
3   3 0.01525   0.015 0.0486 0.1220
4   4 0.01943   0.020 0.0486 0.1360
5   5 0.04008   0.025 0.0802 0.2405
6   6 0.17349   0.030 0.2892 0.8675
7   7 0.25526   0.035 0.3647 1.0000
8   8 0.35725   0.040 0.4466 1.0000
9   9 0.42986   0.045 0.4776 1.0000
10 10 0.68152   0.050 0.6815 1.0000
  p_BH p_Holm 
     4      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

Kiedy wybrać procedurę Benjaminiego–Hochberga zamiast poprawki Holma?

Gdy testów jest dużo, analiza ma charakter eksploracyjny i akceptujesz, że niewielka część istotnych wyników może być fałszywa. Przy hipotezach konfirmacyjnych wybierz Holma.

Co oznacza FDR = .05 w procedurze Benjaminiego–Hochberga?

Że średnio nie więcej niż 5% wyników uznanych za istotne to fałszywe odkrycia. Nie oznacza to 5% ryzyka choćby jednego błędu I rodzaju.

Jak policzyć korektę Benjaminiego–Hochberga w R?

Funkcją p.adjust(p, method = 'BH'); skorygowane wartości p porównaj z .05. Ta sama funkcja liczy poprawki Holma i Bonferroniego, co ułatwia porównanie metod.

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. Benjamini, Y., & Hochberg, Y. (1995). Controlling the false discovery rate: A practical and powerful approach to multiple testing. Journal of the Royal Statistical Society: Series B (Methodological), 57(1), 289–300. https://doi.org/10.1111/j.2517-6161.1995.tb02031.x
  2. Benjamini, Y., & Yekutieli, D. (2001). The control of the false discovery rate in multiple testing under dependency. The Annals of Statistics, 29(4), 1165–1188. https://doi.org/10.1214/aos/1013699998

Cytowania BibTeX

@article{benjamini1995controlling, author={Benjamini, Yoav and Hochberg, Yosef}, title={{Controlling the false discovery rate: A practical and powerful approach to multiple testing}}, journal={Journal of the Royal Statistical Society: Series B (Methodological)}, year={1995}, volume={57}, number={1}, pages={289--300}, doi={10.1111/j.2517-6161.1995.tb02031.x}}
@article{benjamini2001control, author={Benjamini, Yoav and Yekutieli, Daniel}, title={{The control of the false discovery rate in multiple testing under dependency}}, journal={The Annals of Statistics}, year={2001}, volume={29}, number={4}, pages={1165--1188}, doi={10.1214/aos/1013699998}}
R