Oferty statystyczne Tutoriale Opinie Kontakt

Poprawka Holma i FDR (Benjamini-Hochberg) – wzór i przykład

Poprawka Holma i poprawka Benjaminiego-Hochberga (FDR) korygują wartości p, gdy w jednym badaniu wykonujesz wiele testów naraz. Typowe pytanie z pracy dyplomowej: porównałem dwie grupy studentów na czterech wskaźnikach i dostałem cztery wyniki istotne – które z nich przetrwają korektę?

W prostych słowachKażdy test to mała szansa na fałszywy alarm. Przy wielu testach te szanse się sumują. Bonferroni podnosi poprzeczkę jednakowo dla wszystkich testów. Holm robi to samo, ale po kolei: najsurowiej ocenia najmniejsze p, a potem stopniowo łagodnieje. Benjamini-Hochberg idzie dalej – godzi się na to, że wśród Twoich „odkryć” znajdzie się mały odsetek fałszywych, w zamian za większą szansę wykrycia prawdziwych efektów.

Kiedy stosować poprawkę Holma, a kiedy FDR?

  • wykonujesz serię testów na tych samych danych: porównania par grup, kilka zmiennych zależnych, macierz korelacji;
  • Holm – gdy nawet jeden fałszywy alarm byłby poważnym błędem (np. wnioski z hipotez głównych). Zawsze wykrywa co najmniej tyle, co Bonferroni, i nie wymaga żadnych dodatkowych założeń;
  • Benjamini-Hochberg (FDR) – gdy testów jest dużo, badanie ma charakter eksploracyjny i akceptujesz, że niewielka część wyników okaże się fałszywa;
  • w obu przypadkach liczbę testów m ustalasz przed obejrzeniem wyników.

Podstawy znajdziesz w haśle o poprawce Bonferroniego i o błędzie I rodzaju. Holm jest domyślną korektą m.in. po teście Dunna.

Wzór na poprawkę Holma i Benjaminiego-Hochberga

$$ \text{Holm:}\quad p_{(i)}^{H} = \max_{j \le i}\ \min\!\big(1;\ (m - j + 1)\,p_{(j)}\big) \qquad \text{próg: } p_{(i)} \le \frac{\alpha}{m - i + 1} $$ $$ \text{BH:}\quad p_{(i)}^{BH} = \min_{j \ge i}\ \min\!\Big(1;\ \frac{m}{j}\,p_{(j)}\Big) \qquad \text{próg: } p_{(i)} \le \frac{i}{m}\,\alpha $$
\(m\)
liczba wszystkich testów w serii
\(p_{(1)} \le p_{(2)} \le \dots \le p_{(m)}\)
wartości p ustawione od najmniejszej do największej; indeks w nawiasie to miejsce w tej kolejce
\(i,\ j\)
numer miejsca w kolejce (1 = najmniejsze p)
\(\alpha\)
poziom istotności dla całej serii, zwykle 0,05
\(p^{H},\ p^{BH}\)
skorygowane p, które porównujesz ze zwykłym 0,05
\(\max_{j \le i},\ \min_{j \ge i}\)
„wyrównanie” – skorygowane p nie może maleć, gdy surowe p rośnie
FWER
ryzyko co najmniej jednego fałszywego alarmu w serii – kontroluje je Holm
FDR
oczekiwany odsetek fałszywych alarmów wśród wyników uznanych za istotne – kontroluje go BH

Na głos: „Holm mnoży najmniejsze p przez m, drugie przez m minus jeden i tak dalej; BH mnoży każde p przez m i dzieli przez jego miejsce w kolejce”.

Przykład krok po kroku

Porównujesz studentów uczących się z quizów i z notatek na czterech wskaźnikach: punkty z kolokwium, czas nauki, stres przed egzaminem i ocena zajęć. Cztery testy t dały p = 0,01; 0,02; 0,03 i 0,04. Bez korekty wszystkie są istotne.

Tabela 1. Kroki trzech poprawek dla m = 4 testów (α = 0,05)
Miejsce ipBonferroni 4 · pPróg Holma 0,05 / (5 − i)Holm (5 − i) · pHolm po wyrównaniuPróg BH i · 0,05 / 4BH 4 · p / iBH po wyrównaniu
10,010,040,01254 · 0,01 = 0,040,040,01250,04 / 1 = 0,040,04
20,020,080,01673 · 0,02 = 0,060,060,02500,08 / 2 = 0,040,04
30,030,120,02502 · 0,03 = 0,060,060,03750,12 / 3 = 0,040,04
40,040,160,05001 · 0,04 = 0,040,060,05000,16 / 4 = 0,040,04
Istotne4 z 41 z 41 z 44 z 4
  1. Ustaw p w kolejce. Od najmniejszego: 0,01; 0,02; 0,03; 0,04. Liczba testów m = 4.
  2. Bonferroni. Mnożysz każde p przez 4: 0,04; 0,08; 0,12; 0,16. Poniżej 0,05 jest tylko pierwsze.
  3. Holm, krok 1. Najmniejsze p porównujesz z 0,05 / 4 = 0,0125. Ponieważ 0,01 < 0,0125, ten test jest istotny i idziesz dalej.
  4. Holm, krok 2. Drugie p porównujesz z 0,05 / 3 = 0,0167. Ponieważ 0,02 > 0,0167, zatrzymujesz się. Ten test i wszystkie kolejne są nieistotne – nawet ostatni, choć 0,04 < 0,05.
  5. Holm w wersji „skorygowane p”. Mnożniki to 4, 3, 2 i 1: 4 · 0,01 = 0,04; 3 · 0,02 = 0,06; 2 · 0,03 = 0,06; 1 · 0,04 = 0,04. Ostatnia wartość jest mniejsza od poprzedniej, więc wyrównujesz ją w górę do 0,06. Wynik: 0,04; 0,06; 0,06; 0,06 – ten sam wniosek co w krokach 3–4.
  6. BH, progi. Progi rosną liniowo: 1 · 0,05 / 4 = 0,0125; 2 · 0,05 / 4 = 0,025; 3 · 0,05 / 4 = 0,0375; 4 · 0,05 / 4 = 0,05. Zaczynasz od końca: 0,04 ≤ 0,05, więc ten test i wszystkie z mniejszym p są istotne.
  7. BH w wersji „skorygowane p”. 4 · 0,01 / 1 = 0,04; 4 · 0,02 / 2 = 0,04; 4 · 0,03 / 3 = 0,04; 4 · 0,04 / 4 = 0,04. Wszystkie cztery są poniżej 0,05.
  8. Wniosek. Bonferroni i Holm zostawiają jeden istotny wynik, BH – wszystkie cztery. Różnica wynika z tego, co każda metoda kontroluje.
Cztery wartości p od 0,01 do 0,04 na tle trzech linii progów: płaskiej Bonferroniego 0,0125, schodkowej Holma i rosnącej liniowo Benjaminiego-Hochberga
Rys. 1. Te same cztery p i trzy poprzeczki. Szara linia Bonferroniego jest płaska (0,0125). Niebieska linia Holma rośnie schodkowo (0,05 / 4, 0,05 / 3, 0,05 / 2, 0,05), ale kolejny próg obowiązuje tylko wtedy, gdy poprzedni test „przeszedł”. Czerwona linia BH rośnie równo do 0,05. Wszystkie romby leżą pod czerwoną linią, ale tylko pierwszy leży pod szarą i niebieską – drugi (0,02) przekracza próg Holma 0,0167, więc procedura Holma się zatrzymuje.
Słupki skorygowanych wartości p dla czterech testów: Bonferroni 0,04; 0,08; 0,12; 0,16; Holm 0,04; 0,06; 0,06; 0,06; Benjamini-Hochberg cztery razy 0,04
Rys. 2. Wartości p po korekcie, czyli to, co zwraca funkcja p.adjust(). Bonferroni szybko „ucieka” w górę, Holm zatrzymuje się na 0,06, a BH daje wszędzie 0,04 – poniżej czerwonej linii 0,05.
Symulacja 2000 badań: bez korekty FWER 23 procent, Bonferroni 2, Holm 3, BH 8 procent; moc 70, 34, 37 i 50 procent
Rys. 3. Symulacja: 2000 badań, w każdym 10 testów, z czego 5 dotyczy efektów nieistniejących. Bez korekty w 23% badań pojawia się choć jeden fałszywy alarm. Holm trzyma to ryzyko poniżej 5% (3%), ale wykrywa tylko 37% prawdziwych efektów. BH dopuszcza fałszywy alarm w 8% badań, za to średni odsetek fałszywych odkryć wynosi 2%, a moc rośnie do 50%.

Jak zinterpretować i opisać wynik?

Najpierw napisz, którą korektę wybrałeś i dlaczego – najlepiej już w rozdziale metodologicznym. Jeśli Twoje cztery wskaźniki to hipotezy główne, raportuj Holma: istotna pozostaje tylko różnica w punktach z kolokwium. Jeśli to analiza eksploracyjna, możesz użyć BH i napisać, że oczekiwany odsetek fałszywych odkryć wśród wyników istotnych nie przekracza 5%. Podawaj zawsze skorygowane p, a nie tylko „istotne/nieistotne”. Wynik nieistotny po korekcie nie oznacza, że efektu nie ma.

Zapis w stylu APA: Wartości p skorygowano metodą Holma dla czterech porównań. Po korekcie grupy różniły się istotnie jedynie punktami z kolokwium (pHolm = 0,04); różnice w czasie nauki, stresie i ocenie zajęć były nieistotne (wszystkie pHolm = 0,06).

Jak policzyć poprawkę Holma i FDR w R?

p <- c(punkty = 0.01, czas_nauki = 0.02, stres = 0.03, ocena_zajec = 0.04)
m <- length(p); i <- rank(p)                       # miejsce w kolejce

# 1) „ręcznie”, według wzorów (p są już ułożone rosnąco)
holm_surowe <- (m - i + 1) * p                     # 4p, 3p, 2p, 1p
holm <- pmin(1, cummax(holm_surowe))               # wyrównanie w górę
bh_surowe <- m * p / i                             # 4p/1, 4p/2, 4p/3, 4p/4
bh <- pmin(1, rev(cummin(rev(bh_surowe))))         # wyrównanie w dół
rbind(holm_surowe, holm, bh_surowe, bh)

# 2) gotowa funkcja p.adjust()
rbind(bonferroni = p.adjust(p, "bonferroni"),
      holm       = p.adjust(p, "holm"),
      BH         = p.adjust(p, "BH"))

Wynik w konsoli R:

            punkty czas_nauki stres ocena_zajec
holm_surowe   0.04       0.06  0.06        0.04
holm          0.04       0.06  0.06        0.06
bh_surowe     0.04       0.04  0.04        0.04
bh            0.04       0.04  0.04        0.04
           punkty czas_nauki stres ocena_zajec
bonferroni   0.04       0.08  0.12        0.16
holm         0.04       0.06  0.06        0.06
BH           0.04       0.04  0.04        0.04

Funkcja p.adjust() zwraca wartości w tej samej kolejności, w jakiej je podałeś – nie musisz ich sortować. Nazwa "fdr" to w R synonim "BH".

FWER czy FDR – co kontroluje każda poprawka?

FWER (Bonferroni, Holm) to szansa, że w całej serii pojawi się choćby jeden fałszywy alarm. Kontrolujesz ją, gdy każda pomyłka ma koszt, np. gdy z wyniku wynika rekomendacja dla uczelni. FDR (Benjamini-Hochberg) to oczekiwany odsetek fałszywych alarmów wśród wyników, które uznałeś za istotne. Przy 20 „odkryciach” i FDR = 5% spodziewasz się średnio jednego fałszywego. To rozsądny kompromis przy dużej liczbie testów, np. w macierzy korelacji wielu skal. Holm jest zawsze co najmniej tak dobry jak Bonferroni, więc samego Bonferroniego warto używać głównie wtedy, gdy wymaga go promotor lub czasopismo.

Najczęstsze błędy

  • Liczenie m tylko z testów, które „wyszły”. Do m wliczasz wszystkie wykonane testy z danej serii.
  • Mieszanie progów: porównywanie skorygowanego p z α / m. Skorygowane p porównujesz już ze zwykłym 0,05.
  • Przerywanie procedury Holma w złym miejscu. Po pierwszym nieistotnym wyniku wszystkie kolejne też są nieistotne.
  • Pisanie, że BH „chroni przed fałszywymi alarmami” tak samo jak Holm. BH kontroluje odsetek, a nie ryzyko pojedynczej pomyłki.
  • Wybór korekty po obejrzeniu, która daje więcej istotnych wyników.

Bibliografia

  1. Holm, S. (1979). A simple sequentially rejective multiple test procedure. Scandinavian Journal of Statistics, 6(2), 65–70.
  2. 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
  3. Field, A., Miles, J., & Field, Z. (2012). Discovering statistics using R. SAGE.
  4. King, B. M., & Minium, E. W. (2009). Statystyka dla psychologów i pedagogów. Wydawnictwo Naukowe PWN.
  5. Hryniewicz, K., & Milewska, A. (2023). SZTOS: System Zautomatyzowanego Tworzenia Opisu Statystycznego [Oprogramowanie]. SZTOS IT. https://sztos-it.com/

Zobacz też

Potrzebujesz pomocy z analizą do pracy dyplomowej?

Policzymy Twoje wyniki, przygotujemy tabele, wykresy i opis w standardzie APA, który wykorzystasz w swojej pracy. Pomagamy jak statystyk i redaktor – autorem pracy zostajesz Ty. Konsultacja i wycena są bezpłatne.

Na skróty