What Is the Bonferroni Correction?
Named after Italian mathematician Carlo Emilio Bonferroni (1892–1960), whose probability inequalities provided the theoretical foundation, the correction addresses a problem that arises the moment you run more than one test on the same data: each test carries its own chance of a false positive, and those chances accumulate.
The logic is straightforward. If you run 20 independent tests each at α = 0.05, you expect roughly one false positive even when all null hypotheses are true. Divide α by 20 and each test is judged against 0.0025 instead of 0.05. Now the chance of any false positive across all 20 tests remains bounded at 5%.
The correction belongs to the broader topic of hypothesis testing and is most often encountered after an ANOVA that returns a significant overall F-test, prompting researchers to determine which specific group pairs actually differ. It appears across medicine, psychology, genetics, and data science wherever multiple tests need to be run together and a clear answer is required about whether any single one is credible.
- Formula: α* = α / m, where m is the number of comparisons
- Controls: Family-Wise Error Rate (FWER) — probability of at least one false positive
- When to use: Small-to-moderate number of planned, pre-specified comparisons
- Limitation: Conservative — loses power as m grows, especially with correlated tests
- Stronger alternative: Holm-Bonferroni (same FWER control, always more powerful)
- FDR alternative: Benjamini-Hochberg (better for large-scale exploratory testing)
The Multiple Comparisons Problem
Before the correction makes sense, you need to understand what it's fixing. The multiple comparisons problem arises because every hypothesis test has a probability α of producing a false positive — rejecting a true null hypothesis. When tests are independent, these probabilities combine multiplicatively.
The probability of obtaining at least one false positive across m independent tests is:
α = per-test significance level
m = number of independent tests
FWER = probability of at least one false positive
The numbers tell the story. As more tests run at α = 0.05 without any correction, the FWER rises quickly:
| Number of Tests (m) | FWER at α = 0.05 | FWER at α = 0.01 | Bonferroni α* (for α = 0.05) |
|---|---|---|---|
| 1 | 0.050 | 0.010 | 0.0500 |
| 2 | 0.098 | 0.020 | 0.0250 |
| 5 | 0.226 | 0.049 | 0.0100 |
| 10 | 0.401 | 0.096 | 0.0050 |
| 20 | 0.641 | 0.182 | 0.0025 |
| 50 | 0.923 | 0.394 | 0.0010 |
| 100 | 0.994 | 0.634 | 0.0005 |
At 20 tests without correction, you have a 64% chance of at least one false positive. At 100 tests, you are practically guaranteed one. This is sometimes called the "alpha inflation" or "multiplicity problem." The Bonferroni correction holds the FWER at α regardless of m by requiring each test to clear a much higher bar.
Running many tests and reporting only the significant ones without correction inflates false positives. This is sometimes called p-hacking or data dredging. The Bonferroni correction — and its alternatives — are the formal remedy. Pre-registering your hypotheses and specifying m before data collection is the complementary best practice.
The Bonferroni Correction Formula
The adjustment is the simplest possible: divide your target FWER by the number of tests. The result is the per-test significance threshold each individual p-value must clear.
α* = adjusted per-test significance threshold
α = desired family-wise error rate (typically 0.05)
m = total number of hypothesis tests
Equivalently, you can multiply each raw p-value by m and compare the result to the original α. This gives a "Bonferroni-adjusted p-value":
p_adjusted = corrected p-value to compare against original α
p_raw = the original (uncorrected) p-value from the test
m = number of comparisons
Both approaches give the same decision. Adjusting α* downward is mathematically equivalent to adjusting p-values upward. The choice between them is presentational: reporting adjusted p-values is convenient when results are tabulated, because readers can compare each p-value directly against the familiar 0.05 threshold.
m should equal the number of tests whose outcomes you'll report or consider, pre-specified before seeing the data. It does not include exploratory follow-ups decided after seeing the results (those require a new analysis plan). For pairwise comparisons among k groups, m = k(k-1)/2. For an ANOVA with 4 groups, m = 6.
How to Apply the Bonferroni Correction — 4 Steps
Step 1: Set α and count comparisons m. Step 2: Calculate α* = α / m. Step 3: Run each test and obtain its p-value. Step 4: Declare a test significant only if its p-value < α*.
Set α and Count Comparisons
Decide on your family-wise error rate — usually α = 0.05. Then count m, the total number of hypothesis tests you plan to run. Count only pre-specified comparisons; if you're doing all pairwise comparisons for k groups, m = k(k-1)/2. Document this before looking at results.
Calculate the Adjusted Threshold
Divide your target α by m: α* = α / m. For example, if α = 0.05 and you have 10 pairwise comparisons, your adjusted threshold is α* = 0.05 / 10 = 0.005. Every individual test must now achieve p < 0.005 to be called significant.
Run Each Test and Obtain Raw p-Values
Conduct all m tests using the standard method for each comparison — independent samples t-tests for pairwise comparisons, or whatever test suits your data type. Collect all raw p-values before making any decisions.
Compare Each p-Value to α* and State Conclusions
For each test: if p < α*, reject that null hypothesis. If p ≥ α*, fail to reject it. Report both the raw and adjusted p-values in any publication. A result that is significant after Bonferroni correction is held to a genuinely strict standard.
Interactive Bonferroni Correction Calculator
Enter your original significance level (α) and the number of comparisons (m) to get the adjusted alpha threshold instantly. You can also enter individual raw p-values to see whether each test survives Bonferroni correction.
Bonferroni Correction Calculator
Bonferroni Correction — 3 Fully Worked Examples
Each example follows the four-step procedure. All arithmetic is shown in full with realistic data. Formulas use standard statistical notation.
Example 1 — ANOVA Post Hoc: Comparing Four Teaching Methods
Problem: A researcher tests four teaching methods (A, B, C, D) on student exam scores and finds a significant ANOVA result (F = 4.82, p = 0.006). She now wants to determine which specific pairs of methods differ. What is the Bonferroni-corrected threshold and which pairwise comparisons are significant?
Count comparisons: With k = 4 groups, all pairwise comparisons = k(k-1)/2 = 4×3/2 = 6 tests (A vs B, A vs C, A vs D, B vs C, B vs D, C vs D). Set α = 0.05.
Calculate adjusted threshold: α* = 0.05 / 6 = 0.00833
Run 6 independent-samples t-tests and record raw p-values:
| Comparison | Mean Difference | t-statistic | Raw p-value | Adjusted p = p × 6 | Significant (α* = 0.0083)? |
|---|---|---|---|---|---|
| A vs B | +3.2 | 1.44 | 0.161 | 0.966 | No |
| A vs C | +8.5 | 3.81 | 0.001 | 0.006 | Yes ✓ |
| A vs D | +6.1 | 2.74 | 0.010 | 0.060 | No (0.010 > 0.0083) |
| B vs C | +5.3 | 2.38 | 0.024 | 0.144 | No |
| B vs D | +2.9 | 1.30 | 0.203 | 1.000 | No |
| C vs D | −2.4 | 1.08 | 0.290 | 1.000 | No |
Decision: Only the A vs C comparison (raw p = 0.001) falls below α* = 0.00833. Note that A vs D (raw p = 0.010) would be significant without correction but fails after Bonferroni adjustment — this is the method doing its job.
✅ Conclusion: At a family-wise error rate of 5%, only teaching method A and teaching method C produce significantly different outcomes (adjusted p = 0.006). The A vs D difference (adjusted p = 0.060) does not survive correction at this level.
Example 2 — Clinical Trial: Testing Three Drug Endpoints
Problem: A Phase III trial tests a new hypertension drug against placebo on three pre-specified endpoints: systolic blood pressure reduction, diastolic blood pressure reduction, and heart rate reduction. The trial uses a family-wise error rate of α = 0.05. What is the Bonferroni threshold, and which endpoints reach significance given the observed p-values?
α = 0.05
m = 3 endpoints
α* = 0.0167
Comparisons: m = 3 (three pre-specified endpoints, all tested together). α* = 0.05 / 3 = 0.0167.
Observed results from the trial:
| Endpoint | Mean Difference (Drug vs Placebo) | Raw p-value | Adjusted p = p × 3 | Significant (α* = 0.0167)? |
|---|---|---|---|---|
| Systolic BP | −10.4 mmHg | 0.003 | 0.009 | Yes ✓ |
| Diastolic BP | −6.1 mmHg | 0.021 | 0.063 | No |
| Heart Rate | −2.8 bpm | 0.190 | 0.570 | No |
Decision: Only systolic blood pressure reduction (raw p = 0.003 < α* = 0.0167) survives correction. Diastolic BP (raw p = 0.021) would reach significance without correction but does not survive Bonferroni adjustment.
✅ Conclusion: The drug produces a statistically significant reduction in systolic blood pressure at a 5% family-wise error rate (adjusted p = 0.009). The evidence for diastolic blood pressure and heart rate effects does not meet the Bonferroni-corrected threshold.
Example 3 — Why Bonferroni Fails at Scale: A Genomics Illustration
Problem: A genome-wide association study (GWAS) tests 500,000 genetic markers for association with a disease. The researchers want to control FWER at α = 0.05. What threshold does Bonferroni require, and what does this reveal about the method's limitations?
Adjusted threshold: α* = 0.05 / 500,000 = 0.0000001 (1 × 10⁻⁷). This is the well-known "5 × 10⁻⁸" threshold used in GWAS, derived similarly.
The power problem: To detect a genetic variant with a minor allele frequency of 15% and an odds ratio of 1.3, a typical GWAS needs roughly 10,000 participants to achieve 80% power at the Bonferroni threshold. At uncorrected α = 0.05, the same study would need only 1,000 participants.
The correlation problem: Many genetic markers are in linkage disequilibrium — they are positively correlated. Bonferroni treats them as independent, making it more conservative than necessary. Methods such as permutation testing and Bayesian approaches that account for the correlation structure often provide better power.
The FDR alternative: In GWAS, researchers often use the Benjamini-Hochberg procedure at a 5% FDR. This accepts that among the declared significant findings, 5% may be false positives — a reasonable trade-off when the goal is to generate a list of candidates for replication, not to confirm each one individually.
✅ Conclusion: At 500,000 tests, the Bonferroni threshold (p < 1 × 10⁻⁷) is so strict that only the largest, most reliably detected genetic effects survive. This is appropriate for confirmation but prevents discovery of moderate effects. GWAS research typically pairs Bonferroni-level thresholds for primary findings with FDR-controlled secondary analyses for hypothesis generation.
Limitations of the Bonferroni Correction
The Bonferroni correction has two genuine weaknesses that researchers have to weigh before applying it. These are not reasons to avoid it entirely, but they do determine when it's the right tool and when it isn't.
1. It Reduces Statistical Power
Power is the probability of correctly rejecting a false null hypothesis. By demanding a smaller p-value from each test, the Bonferroni correction makes it harder to detect real effects — Type II errors (false negatives) become more common. This trade-off is acceptable when the cost of a false positive is high and the number of comparisons is moderate. It becomes problematic when m is large and missing true positives is costly, as in early-stage drug discovery or hypothesis-generating research.
2. It Assumes Independence
The derivation of FWER = 1 − (1 − α)ᵐ uses independent tests. When tests are positively correlated — sharing the same subjects, outcomes, or underlying genetic variants — the actual FWER is lower than the formula assumes. Bonferroni then over-corrects, discarding real effects unnecessarily. The Šidák correction handles independent tests marginally more precisely, while permutation methods can account for arbitrary correlation structures.
Avoid Bonferroni when m is very large (hundreds or thousands of tests), when the tests are strongly positively correlated, when the research goal is discovery rather than confirmation, or when low statistical power would render most real effects undetectable. In these situations, consider Holm-Bonferroni (same FWER, more power) or Benjamini-Hochberg (FDR control, substantially more power).
Alternatives to the Bonferroni Correction
Four methods are most commonly used alongside or instead of Bonferroni. All address the multiple comparisons problem; they differ in what they control and how conservative they are.
Holm-Bonferroni Method (Step-Down)
Proposed by Sture Holm in 1979, this sequential procedure controls FWER at the same level as Bonferroni but is strictly more powerful. Sort your m p-values from smallest to largest. Compare the smallest to α/m, the second smallest to α/(m-1), the third to α/(m-2), and so on. Stop at the first non-significant result — all subsequent hypotheses also fail to reject. Because the denominator gets smaller as you move down the ranked list, the threshold loosens, making it easier for larger p-values to survive.
k = rank of the p-value (1 = smallest)
m = total number of tests
Šidák Correction
When all tests are truly independent, the Šidák correction gives a slightly less conservative threshold than Bonferroni:
For α = 0.05 and m = 10: α_Šidák = 1 − (0.95)^(1/10) = 0.00512 versus α_Bonferroni = 0.0050. The difference is negligible for small m but grows with m. Use Šidák only when independence is guaranteed.
Benjamini-Hochberg Procedure (FDR Control)
This 1995 method by Yoav Benjamini and Yosef Hochberg shifts the target from FWER to the false discovery rate (FDR): the expected proportion of significant results that are false positives. At FDR = 5%, you accept that roughly 5% of your declared findings will be wrong — in exchange for much greater power to detect real effects.
The procedure: sort p-values from smallest to largest. For each p(k) at rank k, check whether p(k) ≤ (k/m) × q, where q is the desired FDR. Find the largest k that satisfies this inequality and declare all tests with p ≤ p(k) significant.
Benjamini-Hochberg is the standard in genomics, neuroimaging, and large-scale observational studies. It is covered in depth in the hypothesis testing guide on Statistics Fundamentals.
Side-by-Side Comparison
| Feature | Bonferroni | Holm-Bonferroni | Benjamini-Hochberg |
|---|---|---|---|
| Controls | FWER | FWER | FDR |
| Procedure type | Single-step | Sequential (step-down) | Sequential (step-up) |
| Power vs Bonferroni | Reference | Higher (always) | Substantially higher |
| Assumes independence? | Yes (conservative if correlated) | Yes (conservative if correlated) | Independent or positively correlated |
| Best use case | Small m, confirmatory research | Small-moderate m, confirmatory | Large m, exploratory/discovery |
| Complexity | Single calculation | Rank-and-check procedure | Rank-and-check procedure |
| Standard in genomics? | No (too conservative at GWAS scale) | No | Yes |
Decision Guide: Choosing the Right Method
The decision between Bonferroni, Holm-Bonferroni, and Benjamini-Hochberg comes down to two questions: how many tests are you running, and what are the consequences of each error type?
Which Multiple Comparisons Correction Should You Use?
Real-World Applications
Clinical Trials
Regulatory agencies require FWER control for multiple primary endpoints. Bonferroni or Holm-Bonferroni keeps Type I error at the nominal level across co-primary endpoints.
Genomics
GWAS uses Bonferroni-derived thresholds (p < 5 × 10⁻⁸) for primary findings, while Benjamini-Hochberg identifies secondary candidates for replication.
Psychology Research
Post hoc comparisons after ANOVA in psychology journals typically use Bonferroni or Holm-Bonferroni to control FWER across pairwise group differences.
A/B Testing
Multi-armed experiments testing several design variants simultaneously use Bonferroni adjustment to prevent falsely declaring a winner in any arm when all perform identically.
Financial Research
Factor model studies testing whether a portfolio strategy outperforms multiple benchmarks use Bonferroni-style corrections to prevent spurious significance in backtests.
Education Research
Studies comparing curriculum interventions across multiple subject areas or grade levels apply Bonferroni to control error across the family of outcome measures tested.
Entity and Formula Glossary
| Term | Symbol / Formula | Definition |
|---|---|---|
| Bonferroni Correction | α* = α/m | Adjusted per-test significance threshold that keeps the FWER at most α across m simultaneous tests. |
| Family-Wise Error Rate | FWER | Probability of making at least one false positive (Type I error) across a family of hypothesis tests. |
| Type I Error | α | Probability of rejecting a true null hypothesis in a single test; the false-positive rate per test. |
| Significance Level | α (nominal) | The threshold set in advance for rejecting H₀. Conventionally 0.05 in most social science research. |
| Adjusted Alpha | α* = α/m | The per-comparison threshold produced by Bonferroni correction. |
| Adjusted p-value | p_adj = min(p × m, 1) | Raw p-value multiplied by number of comparisons; compare directly against original α. |
| Multiple Comparisons Problem | FWER = 1−(1−α)ᵐ | The inflation of false-positive risk when many tests are conducted simultaneously without adjustment. |
| Post Hoc Test | — | A follow-up test conducted after a significant ANOVA result to identify which specific group pairs differ. |
| Holm-Bonferroni | α_k = α/(m−k+1) | Step-down sequential procedure controlling FWER; uniformly more powerful than Bonferroni. |
| False Discovery Rate | FDR | Expected proportion of false positives among all rejected hypotheses; controlled by Benjamini-Hochberg. |
| Šidák Correction | α* = 1−(1−α)^(1/m) | Exact FWER control for independent tests; slightly less conservative than Bonferroni. |
| Statistical Power | 1 − β | Probability of correctly rejecting a false null hypothesis; reduced by Bonferroni correction. |
| Null Hypothesis | H₀ | The default assumption being tested — typically no difference or no effect. |
Running Bonferroni Correction in Software
Every major statistics package implements the Bonferroni correction and its alternatives. The code below applies correction to a vector of raw p-values in three environments.
R
# Raw p-values from 6 pairwise comparisons
p_values <- c(0.161, 0.001, 0.010, 0.024, 0.203, 0.290)
# Bonferroni-adjusted p-values
p.adjust(p_values, method = "bonferroni")
# Holm-Bonferroni adjusted p-values
p.adjust(p_values, method = "holm")
# Benjamini-Hochberg (FDR)
p.adjust(p_values, method = "BH")
Python (scipy)
from statsmodels.stats.multitest import multipletests
import numpy as np
p_values = [0.161, 0.001, 0.010, 0.024, 0.203, 0.290]
# Bonferroni correction
reject, p_adj, _, _ = multipletests(p_values, alpha=0.05, method='bonferroni')
# Holm-Bonferroni
reject_holm, p_adj_holm, _, _ = multipletests(p_values, alpha=0.05, method='holm')
print("Bonferroni adjusted p-values:", p_adj)
print("Reject H0 (Bonferroni):", reject)
SPSS and SAS
In SPSS, Bonferroni correction is available under Analyze → General Linear Model → Univariate → Post Hoc. In SAS PROC GLM, use MEANS / ADJUST=BONFERRONI; after the model statement. Both produce adjusted p-values and simultaneous confidence intervals.
Common Misconceptions
| Misconception | What's Actually True |
|---|---|
| ✗ Bonferroni guarantees no false positives. | ✓ It controls the probability of at least one false positive to at most α, not to zero. At α = 0.05, there remains a 5% chance of a false positive even with correction. |
| ✗ You must always apply Bonferroni after ANOVA. | ✓ You need some form of correction. Holm-Bonferroni is preferable. Tukey's HSD is also common and explicitly designed for all pairwise comparisons after ANOVA. |
| ✗ Bonferroni correction applies only to p-values from the same test type. | ✓ It applies to any family of tests regardless of type — t-tests, chi-square tests, and correlations can all be in the same family if tested together. |
| ✗ Failing to reject after Bonferroni means there is no effect. | ✓ Failure to reject H₀ is always about insufficient evidence, not absence of an effect. The strict Bonferroni threshold means many real effects will not reach significance in underpowered studies. |
| ✗ Adjusted p-values above 0.05 always mean the comparison is unimportant. | ✓ p-values measure evidence strength under the null hypothesis, not effect size or clinical importance. A comparison with adjusted p = 0.06 may represent a large, practically meaningful effect that the study lacked power to confirm after correction. |
Frequently Asked Questions
The Bonferroni correction is a method for controlling the family-wise error rate (FWER) when performing multiple hypothesis tests at the same time. It divides the desired significance level α by the number of comparisons m to get a stricter per-test threshold α* = α/m. A result is only declared significant if its p-value falls below this adjusted threshold. Named after Italian mathematician Carlo Emilio Bonferroni, it is the simplest and most widely taught multiple comparisons correction.
The formula is α* = α / m. Choose your family-wise error rate α (usually 0.05), count the total number of tests m (for all pairwise comparisons among k groups, m = k(k-1)/2), then divide. For example, 10 tests at α = 0.05 gives α* = 0.005. Reject a null hypothesis only when its raw p-value is below 0.005. Equivalently, multiply each raw p-value by m (capped at 1.0) and compare to the original α.
Use Bonferroni when you are making a small-to-moderate number of planned hypothesis tests (roughly 2–50 comparisons) and you need strict control of the probability of any false positive. Confirmatory clinical trials, pre-registered psychological experiments, and ANOVA post hoc comparisons are the classic applications. When the number of tests is very large (hundreds or thousands), or when tests are strongly positively correlated, the Holm-Bonferroni method or the Benjamini-Hochberg false discovery rate procedure is generally more appropriate.
Yes, in two situations. First, when tests are positively correlated, the actual FWER is lower than α, so Bonferroni over-corrects — discarding real findings unnecessarily. Second, when m is large, the adjusted threshold becomes so strict that most real effects are missed (reduced statistical power). For large-scale testing such as genome-wide association studies, the Benjamini-Hochberg procedure controlling the false discovery rate at 5% is now standard. For any sample size, Holm-Bonferroni is always at least as powerful as Bonferroni and is generally preferred.
Both methods control the FWER at the same level α. The difference is in how the threshold is applied. Bonferroni uses a single, uniform threshold α/m for all tests. Holm-Bonferroni ranks p-values from smallest to largest and applies a different threshold to each rank: the smallest p-value is compared to α/m, the second to α/(m-1), the third to α/(m-2), and so on. This means Holm-Bonferroni is less conservative for tests with larger p-values, making it strictly more powerful than Bonferroni in every scenario. There is no situation where Bonferroni outperforms Holm-Bonferroni, so Holm-Bonferroni is generally recommended over plain Bonferroni.
The fundamental difference is what they control. Bonferroni controls the FWER — the probability of any false positive. Benjamini-Hochberg (BH) controls the FDR — the expected proportion of false positives among all declared significant results. FWER control is stricter: with Bonferroni, the expected number of false positives is kept near zero. With BH at 5% FDR, roughly 5% of your declared significant findings may be false positives. Bonferroni is right for confirmatory research where false positives carry high cost. BH is right for large-scale exploratory research (genomics, neuroimaging) where some false positives are acceptable in exchange for discovering more true effects.
Strictly speaking, any time you run more than one test and plan to interpret the results together as a family. In practice, single pre-planned comparisons never need correction. Two or three co-primary endpoints in a clinical trial almost always need correction. All pairwise comparisons after ANOVA — where there is no a priori reason to single out any specific pair — should be corrected. The question to ask is: "If I ran all these tests and reported only the significant ones, would my false-positive rate be controlled?" If not, correction is needed.
Yes. The Bonferroni correction applies to the p-values from any type of test, including chi-square tests. If you are comparing proportions across multiple groups using chi-square, the same α* = α/m logic applies. Collect the raw p-value from each chi-square test, then compare each to α* = 0.05/m. The chi-square test itself is described in the chi-square test guide.
Sources and References
This guide draws on the following primary and secondary sources. Formulas and methods are cross-referenced against the sources listed below, which are all freely accessible for verification.
- Miller, R.G. (1981). Simultaneous Statistical Inference, 2nd ed. Springer, New York. The standard graduate-level text on multiple comparisons methods.
- Holm, S. (1979). A simple sequentially rejective multiple test procedure. Scandinavian Journal of Statistics, 6(2), 65–70. Original paper for the Holm-Bonferroni method.
- 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, 57(1), 289–300.
- NIST Engineering Statistics Handbook — Multiple Comparisons. National Institute of Standards and Technology. itl.nist.gov
- Penn State STAT 500 — Applied Statistics: Multiple Comparisons. online.stat.psu.edu
- OpenStax Introductory Statistics — Ch. 12: F-Distribution and One-Way ANOVA. Rice University. openstax.org
- ICH E9 Statistical Principles for Clinical Trials — Multiple Testing. European Medicines Agency. ema.europa.eu
- R Documentation — p.adjust function. The Comprehensive R Archive Network. stat.ethz.ch