Słownik metodologiczny · Testy statystyczne

Korekta Bonferroniego i porównania wielokrotne – co to jest i kiedy ją stosować?

Im więcej testów, tym większa szansa na fałszywy alarm. Wyjaśniamy rodzinny błąd I rodzaju i korekty Bonferroniego, Holma oraz Benjaminiego–Hochberga na przykładzie sześciu wartości p, a także to, kiedy korekta jest potrzebna i jak ją opisać w APA.

Strona główna / Słownik / Korekta Bonferroniego
W skrócie: Korekta Bonferroniego chroni przed fałszywymi alarmami przy wielu testach: każdy z m testów wykonujesz na poziomie α/m (albo mnożysz p przez m). Bez korekty przy sześciu testach ryzyko co najmniej jednego fałszywego alarmu wynosi .265. W praktyce wybieraj metodę Holma, która kontroluje ten sam błąd przy większej mocy, a przy eksploracji wielu testów – procedurę Benjaminiego–Hochberga (FDR). Rodzinę testów i metodę korekty ustal przed analizą.

Co to jest korekta Bonferroniego?

Korekta Bonferroniego (ang. Bonferroni correction) to najprostszy sposób kontroli błędu przy wielu testach statystycznych: jeśli wykonujesz m testów, każdy z nich przeprowadzasz na poziomie α/m zamiast α. Równoważnie możesz pomnożyć każdą wartość p przez m (z górnym limitem 1) i porównać wynik z α. Przy sześciu testach i α = .05 próg dla pojedynczego testu wynosi więc .05/6 = .0083.

Korekta odpowiada na problem porównań wielokrotnych (ang. multiple comparisons problem). W psychologii pojawia się on bardzo często: przy testach post hoc po ANOVA, przy porównaniu grup na kilku podskalach kwestionariusza, przy macierzy korelacji czy przy analizie wielu zmiennych zależnych. Każdy dodatkowy test to kolejna szansa na fałszywy alarm, czyli błąd I rodzaju.

Dlaczego wiele testów zwiększa ryzyko błędu?

Poziom istotności α = .05 dotyczy jednego testu. Gdy testów jest więcej, rośnie rodzinny błąd I rodzaju (ang. familywise error rate, FWER), czyli prawdopodobieństwo, że w całej rodzinie testów pojawi się co najmniej jeden fałszywy alarm. Dla m niezależnych testów, gdy wszystkie hipotezy zerowe są prawdziwe:

FWER = 1 − (1 − α)m

Kim (2014) zwraca uwagę, że właśnie dlatego kilku grup nie porównuje się serią testów t: łączny błąd rośnie do 1 − 0.95k przy k porównaniach. Dla 3 testów to .143, dla 6 – .265, dla 10 – .401, a dla 20 – już .642. W symulacji (20 000 powtórzeń sześciu niezależnych testów t przy prawdziwych H0) co najmniej jeden wynik istotny pojawił się w 26.5% powtórzeń; po korekcie Bonferroniego i Holma – w 5.0%.

Panel A: prawdopodobieństwo co najmniej jednego fałszywego alarmu rośnie z liczbą testów: .143 dla 3, .265 dla 6, .401 dla 10 i .642 dla 20 testów, a z korektą Bonferroniego zostaje poniżej .05. Panel B: moc pojedynczego testu spada z .80 do .56 przy 6 testach i do .40 przy 20 testach
Rysunek 1. A: rodzinny błąd I rodzaju dla m niezależnych testów bez korekty (czerwona linia) i z korektą Bonferroniego (niebieska). B: moc pojedynczego testu t dla prób niezależnych (d = 0.5, 64 osoby w grupie) wykonanego na poziomie α = .05/m. Obliczenia: R.

Panel B pokazuje drugą stronę medalu. Korekta chroni przed fałszywymi alarmami, ale obniża moc każdego testu: badanie, które przy jednym teście ma moc .80, przy korekcie na sześć testów ma już tylko .56, a na dwadzieścia – .40. Rośnie więc ryzyko błędu II rodzaju, czyli przeoczenia prawdziwego efektu.

Metody korekty: Bonferroni, Holm i Benjamini–Hochberg

Porównanie metod korekty na porównania wielokrotne
MetodaCo kontrolujeJak działaW R (p.adjust)
BonferroniFWERKażde p × m (maks. 1) albo próg α/m"bonferroni"
ŠidákFWER (testy niezależne)Próg 1 − (1 − α)1/m; dla 6 testów .0085 zamiast .0083brak; np. adjust = "sidak" w pakiecie emmeans
Holm (Holm–Bonferroni)FWERSekwencyjnie: najmniejsze p z progiem α/m, kolejne z α/(m − 1) itd."holm" (domyślna)
Benjamini–HochbergFDR – oczekiwany odsetek fałszywych odkryćNajwiększe i, dla którego p(i) ≤ (i/m) α; odrzuć H0 od 1 do i"BH" (też "fdr")

Procedura Holma (Holm, 1979) odrzuca hipotezy po kolei: porządkuje wartości p od najmniejszej, pierwszą porównuje z α/m, drugą z α/(m − 1) i tak dalej, aż do pierwszej hipotezy, której nie da się odrzucić. Zapewnia z góry ustalony poziom ochrony przed błędem I rodzaju dla dowolnej kombinacji prawdziwych hipotez, a przy tym jest prosta i szeroko stosowalna. Ponieważ nigdy nie odrzuca mniej hipotez niż zwykły Bonferroni, zamiast klasycznego Bonferroniego używaj metody Holma.

Procedura Benjaminiego–Hochberga (Benjamini i Hochberg, 1995) zmienia cel kontroli. Zamiast prawdopodobieństwa choćby jednego błędu (FWER) kontroluje FDR (ang. false discovery rate), czyli oczekiwany odsetek fałszywie odrzuconych hipotez wśród wszystkich odrzuconych. Autorzy pokazali, że ta prosta sekwencyjna procedura typu Bonferroniego daje istotny zysk mocy. Sprawdza się w analizach eksploracyjnych z wieloma testami, w których kilka fałszywych odkryć jest akceptowalne, o ile stanowią mały odsetek wyników.

Przykład: sześć wartości p

Porównujesz dwie grupy studentów na sześciu podskalach kwestionariusza i otrzymujesz sześć wartości p z testów t. Tabela pokazuje je po trzech korektach (wynik funkcji p.adjust() w R):

Sześć wartości p przed i po korektach Bonferroniego, Holma i Benjaminiego–Hochberga
Podskalap bez korektyp Bonferronip Holmp BH (FDR)
1.002.012.012.012
2.009.054.045.027
3.014.084.056.028
4.021.126.063.032
5.038.228.076.046
6.2601.000.260.260
Liczba p < .055125

Bez korekty istotnych jest pięć wyników, po korekcie Bonferroniego – jeden, po korekcie Holma – dwa, a po korekcie Benjaminiego–Hochberga – znów pięć. Holm porównuje kolejne wartości z progami .0083, .0100, .0125, .0167, .025 i .050: pierwsze dwie (.002 i .009) mieszczą się pod progami, trzecia (.014 > .0125) już nie, więc procedura się zatrzymuje. Procedura BH porównuje wartości z progami (i/6) × .05 = .0083, .0167, .025, .0333, .0417 i .050 i szuka największej wartości poniżej swojego progu – to piąta (.038 ≤ .0417), więc odrzuca pięć hipotez. Wybór metody zmienia wnioski, dlatego trzeba go uzasadnić przed analizą, a nie po zobaczeniu wyników.

Kiedy korygować, a kiedy nie?

Korekta nie jest obowiązkowa przy każdej liczbie testów – zależy od tego, jakie pytanie zadajesz. Perneger (1998) zwraca uwagę, że korekta Bonferroniego dotyczy „uniwersalnej” hipotezy zerowej, według której wszystkie hipotezy zerowe są prawdziwe jednocześnie, a ta rzadko interesuje badacza. Zmniejszając ryzyko błędu I rodzaju, korekta zwiększa ryzyko błędu II rodzaju, a interpretacja wyniku zaczyna zależeć od tego, ile innych testów wykonano. Perneger zaleca raczej opisanie, jakie testy wykonano i dlaczego. Armstrong (2014) też odradza rutynowe stosowanie korekty i wskazuje trzy sytuacje, w których warto ją rozważyć: gdy potrzebny jest test hipotezy „uniwersalnej”, gdy uniknięcie błędu I rodzaju jest kluczowe i gdy wykonuje się wiele testów bez wcześniej zaplanowanych hipotez.

  • Koryguj porównania parami po istotnej ANOVA, wiele testów eksploracyjnych bez hipotez (np. dziesiątki korelacji) i sytuacje, w których jeden „sukces” wystarczy do ogłoszenia efektu (np. kilka miar tego samego wyniku pierwszorzędowego).
  • Nie musisz korygować pojedynczej, zaplanowanej hipotezy głównej ani kilku hipotez, z których każda dotyczy innego pytania i jest opisana osobno – pod warunkiem, że zaplanowałeś je z góry, najlepiej w prerejestracji.
  • Zawsze raportuj wszystkie wykonane testy, a nie tylko istotne – ukrywanie nieistotnych porównań to odmiana p-hackingu, której żadna korekta nie naprawi.

W porównaniach po ANOVA zamiast mnożenia wartości p zwykle używa się testów post hoc projektowanych dla par średnich. Lee i Lee (2018) w przeglądzie takich procedur omawiają m.in. testy Tukeya, Bonferroniego, Scheffégo i Dunnetta oraz sposoby kontroli błędu I rodzaju; przy nierównych wariancjach zalecają procedury bez założenia ich równości, takie jak test Gamesa–Howella. Szczegóły znajdziesz w haśle testy post hoc i w poradniku ANOVA krok po kroku.

Jak opisać korektę w pracy (APA)

W części „Metoda” albo przy pierwszym wyniku napisz, jaką rodzinę testów korygowałeś i jaką metodą. Przy wynikach podawaj skorygowane wartości p i zaznacz to w tekście lub w nocie tabeli:

Aby kontrolować rodzinny błąd I rodzaju w sześciu porównaniach podskal, wartości p skorygowano metodą Holma. Po korekcie grupy różniły się istotnie na podskali 1 (p = .012) i podskali 2 (p = .045). Różnice na podskalach 3–6 nie były istotne po korekcie (skorygowane p od .056 do .260).

Jeśli wybierasz próg zamiast korygowania p, napisz to wprost: „wyniki uznawano za istotne przy p < .0083 (korekta Bonferroniego dla sześciu porównań)”. W tabelach dodaj notę „Wartości p skorygowane metodą Holma”. Gotowe zdania do innych analiz znajdziesz we wpisie jak opisać wyniki w stylu APA.

Przykład reprodukowalny

Korekty w R

Kod koryguje sześć wartości p trzema metodami, liczy rodzinny błąd I rodzaju i wykonuje porównania parami czterech grup z korektą Holma. Liczby w tabeli i w tekście pochodzą z tego kodu.

Funkcja p.adjust() i porównania parami

Dane wejściowe: sześć przykładowych wartości p oraz poziom stresu w czterech grupach po 20 osób (dane symulowane, set.seed(4)).

Co odczytać: skorygowane wartości p w kolumnach bonferroni, holm i BH; FWER dla 3, 6, 10 i 20 testów; macierz skorygowanych p dla par grup.

R
# 1. Sześć wartości p (np. porównanie dwóch grup na sześciu podskalach) i trzy korekty
p <- c(.002, .009, .014, .021, .038, .260)
data.frame(p,
           bonferroni = p.adjust(p, method = "bonferroni"),
           holm       = p.adjust(p, method = "holm"),
           BH         = p.adjust(p, method = "BH"))

# 2. Rodzinny błąd I rodzaju bez korekty dla 3, 6, 10 i 20 niezależnych testów
round(1 - (1 - .05)^c(3, 6, 10, 20), 3)
.05 / 6   # próg Bonferroniego dla sześciu testów

# 3. Porównania parami czterech grup z korektą Holma (dane symulowane: poziom stresu)
set.seed(4)
stres <- c(rnorm(20, 20, 5), rnorm(20, 22, 5), rnorm(20, 25, 5), rnorm(20, 21, 5))
rok   <- factor(rep(c("I rok", "II rok", "III rok", "IV rok"), each = 20))
pairwise.t.test(stres, rok, p.adjust.method = "holm", pool.sd = FALSE)
Wynik w R
      p bonferroni  holm     BH
1 0.002      0.012 0.012 0.0120
2 0.009      0.054 0.045 0.0270
3 0.014      0.084 0.056 0.0280
4 0.021      0.126 0.063 0.0315
5 0.038      0.228 0.076 0.0456
6 0.260      1.000 0.260 0.2600
[1] 0.143 0.265 0.401 0.642
[1] 0.008333333

	Pairwise comparisons using t tests with non-pooled SD 

data:  stres and rok 

        I rok II rok III rok
II rok  0.689 -      -      
III rok 0.198 0.699  -      
IV rok  0.699 0.230  0.046  

P value adjustment method: holm 

Bibliografia oprogramowania

Wyniki na tej stronie pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (funkcje p.adjust() i pairwise.t.test() z pakietu stats); rysunek przygotowano w pakietach ggplot2 i patchwork. 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/
  2. ggplot2 (wersja 4.0.2): Wickham, H. (2016). ggplot2: Elegant graphics for data analysis. Springer. https://ggplot2.tidyverse.org
  3. patchwork (wersja 1.3.2): Pedersen, T. L. (2025). patchwork: The composer of plots [R package]. https://doi.org/10.32614/CRAN.package.patchwork

W przykładzie z porównaniami parami bez korekty istotne byłyby dwie różnice: między I a III rokiem (p = .040) i między III a IV rokiem (p = .008). Po korekcie Holma istotna pozostaje tylko ta druga (p = .046).

Najczęstsze błędy

  • Brak jakiejkolwiek kontroli przy wielu testach eksploracyjnych – przy 20 testach szansa na co najmniej jeden fałszywy alarm wynosi .642.
  • Klasyczny Bonferroni zamiast Holma – Holm kontroluje ten sam błąd, a nigdy nie odrzuca mniej hipotez.
  • Wybór metody po zobaczeniu wyników – sprawdzanie kolejno Bonferroniego, Holma i BH, aż coś „wyjdzie”, zawyża błąd I rodzaju tak samo jak brak korekty.
  • Mylenie FWER z FDR – procedura Benjaminiego–Hochberga nie gwarantuje, że wśród wyników nie ma żadnego fałszywego alarmu; kontroluje tylko ich oczekiwany odsetek.
  • Nieopisana rodzina testów – zawsze napisz, ile testów obejmowała korekta i dlaczego właśnie tyle.
  • Interpretacja wyniku nieistotnego po korekcie jako dowodu braku efektu – korekta obniża moc, więc brak istotności tym bardziej nie oznacza braku różnicy.

Najczęstsze pytania

Na czym polega korekta Bonferroniego?

Przy m testach każdy wykonujesz na poziomie α/m zamiast α, dzięki czemu prawdopodobieństwo co najmniej jednego fałszywego alarmu w całej rodzinie testów nie przekracza α. Bez korekty przy 6 testach i α = .05 ryzyko to wynosi .265, a przy 20 testach – .642.

Jak obliczyć poprawkę Bonferroniego?

Podziel poziom istotności przez liczbę testów: przy α = .05 i 6 testach próg wynosi .05/6 = .0083. Równoważnie pomnóż każde p przez 6 (maksymalnie do 1) i porównaj z .05. W R użyj p.adjust(p, method = "bonferroni"), a w SPSS opcji Bonferroni w porównaniach post hoc albo w EM Means.

Czym się różni korekta Holma od Bonferroniego?

Obie kontrolują rodzinny błąd I rodzaju, ale procedura Holma (Holm, 1979) działa sekwencyjnie: najmniejsze p porównuje z α/m, następne z α/(m − 1) itd. Nigdy nie odrzuca mniej hipotez niż Bonferroni, więc ma większą moc. W przykładzie z tego hasła Bonferroni pozostawił jeden istotny wynik, a Holm – dwa.

Kiedy nie trzeba stosować korekty Bonferroniego?

Gdy testujesz jedną, zaplanowaną hipotezę główną albo kilka hipotez dotyczących różnych pytań, opisanych osobno i zaplanowanych z góry. Perneger (1998) i Armstrong (2014) odradzają rutynowe korygowanie, bo zwiększa ryzyko błędu II rodzaju; korektę rozważ przy wielu testach eksploracyjnych i porównaniach parami po ANOVA.

Co to jest FDR i procedura Benjaminiego–Hochberga?

FDR (ang. false discovery rate) to oczekiwany odsetek fałszywych odkryć wśród wszystkich wyników uznanych za istotne. Procedura Benjaminiego–Hochberga (1995) kontroluje FDR zamiast FWER i ma wyraźnie większą moc, dlatego dobrze sprawdza się w analizach eksploracyjnych z wieloma testami. W R: p.adjust(p, method = "BH").

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. Armstrong, R. A. (2014). When to use the Bonferroni correction. Ophthalmic and Physiological Optics, 34(5), 502–508. https://doi.org/10.1111/opo.12131
  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. Holm, S. (1979). A simple sequentially rejective multiple test procedure. Scandinavian Journal of Statistics, 6(2), 65–70. https://www.jstor.org/stable/4615733
  4. Kim, H.-Y. (2014). Analysis of variance (ANOVA) comparing means of more than two groups. Restorative Dentistry & Endodontics, 39(1), 74–77. https://doi.org/10.5395/rde.2014.39.1.74 ● Otwarty dostęp
  5. Lee, S., & Lee, D. K. (2018). What is the proper way to apply the multiple comparison test? Korean Journal of Anesthesiology, 71(5), 353–360. https://doi.org/10.4097/kja.d.18.00242 ● Otwarty dostęp
  6. Perneger, T. V. (1998). What's wrong with Bonferroni adjustments. BMJ, 316(7139), 1236–1238. https://doi.org/10.1136/bmj.316.7139.1236 ● Otwarty dostęp: pełny tekst

Cytowania BibTeX

@article{armstrong2014when, author={Armstrong, Richard A.}, title={{When to use the Bonferroni correction}}, journal={Ophthalmic and Physiological Optics}, year={2014}, volume={34}, number={5}, pages={502--508}, doi={10.1111/opo.12131}}
@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{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}}
@article{kim2014analysis, author={Kim, Hae-Young}, title={{Analysis of variance (ANOVA) comparing means of more than two groups}}, journal={Restorative Dentistry \& Endodontics}, year={2014}, volume={39}, number={1}, pages={74--77}, doi={10.5395/rde.2014.39.1.74}}
@article{lee2018what, author={Lee, Sangseok and Lee, Dong Kyu}, title={{What is the proper way to apply the multiple comparison test?}}, journal={Korean Journal of Anesthesiology}, year={2018}, volume={71}, number={5}, pages={353--360}, doi={10.4097/kja.d.18.00242}}
@article{perneger1998whats, author={Perneger, Thomas V.}, title={{What's wrong with Bonferroni adjustments}}, journal={BMJ}, year={1998}, volume={316}, number={7139}, pages={1236--1238}, doi={10.1136/bmj.316.7139.1236}}
R