Quick answer
The false discovery rate (FDR) is the expected proportion of false positives among all results declared significant. The Benjamini-Hochberg procedure controls it, so that when many hypotheses are tested at once, on average no more than a chosen share (for example 5%) of the discoveries are false.
Formula: Reject the k smallest p-values, where k is the largest i with p₍ᵢ₎ ≤ (i ÷ m) × q
What is the false discovery rate?
The false discovery rate (FDR) is the expected proportion of false positives among all the results you declare significant. If you run 40 tests and call 10 of them significant, an FDR of 5% means you expect, on average, about half a false one among those 10.
It matters whenever you test many things at once: twenty metrics in an A/B test, every country in a breakdown, hundreds of features in a model. Test enough hypotheses at p < 0.05 and some will cross the line by chance. The Benjamini-Hochberg (BH) procedure, published in 1995, is the standard way to control the FDR.
FDR vs family-wise error rate
| Family-wise error rate (FWER) | False discovery rate (FDR) | |
|---|---|---|
| Controls | The chance of any false positive | The expected share of false positives among discoveries |
| Typical method | Bonferroni: test each at α ÷ m | Benjamini-Hochberg |
| Strictness | Very strict with many tests | Adapts: stricter with few discoveries, looser with many |
| Good for | Confirming a few critical claims | Screening many metrics, segments or features |
| Cost | Misses many real effects (type II errors) | Accepts a few false leads |
The Benjamini-Hochberg procedure
With m tests and a target FDR level q (often 0.05):
- Sort the p-values from smallest to largest: p₍₁₎ ≤ p₍₂₎ ≤ … ≤ p₍ₘ₎.
- For each rank i, compute the threshold (i ÷ m) × q.
- Find the largest i for which p₍ᵢ₎ ≤ (i ÷ m) × q.
- Declare that test and all tests with smaller p-values significant, even if some of them sat above their own threshold.
A worked example
Sample data: an A/B test of a new onboarding flow reports ten secondary metrics. q = 0.05, m = 10.
| Rank i | Metric | p-value | BH threshold (i ÷ 10 × 0.05) | Below threshold? | BH-adjusted p |
|---|---|---|---|---|---|
| 1 | Activation | 0.001 | 0.005 | Yes | 0.010 |
| 2 | Invites sent | 0.008 | 0.010 | Yes | 0.040 |
| 3 | Day-7 retention | 0.012 | 0.015 | Yes | 0.040 |
| 4 | Time to first report | 0.021 | 0.020 | No | 0.053 |
| 5 | Support chats | 0.034 | 0.025 | No | 0.068 |
| 6 | Docs views | 0.048 | 0.030 | No | 0.080 |
| 7 | Pricing page views | 0.090 | 0.035 | No | 0.129 |
| 8 | Logins | 0.200 | 0.040 | No | 0.250 |
| 9 | Session length | 0.410 | 0.045 | No | 0.456 |
| 10 | Exports | 0.730 | 0.050 | No | 0.730 |
The largest rank below its threshold is 3, so three metrics are discoveries. Compare the three approaches:
| Method | Threshold | Significant metrics |
|---|---|---|
| No correction (p < 0.05) | 0.05 each | 6 |
| Benjamini-Hochberg (q = 0.05) | Step-up line | 3 |
| Bonferroni (FWER 0.05) | 0.005 each | 1 |
Without correction, "time to first report", "support chats" and "docs views" would have been reported as wins; with ten metrics, a couple of chance results are expected. Bonferroni keeps only activation and misses two effects that are probably real.
Adjusted p-values
Instead of thresholds, many tools report BH-adjusted p-values (sometimes called q-values): for rank i, the smallest value of (m ÷ j) × p₍ⱼ₎ over all j ≥ i, capped at 1. A result is significant at FDR q when its adjusted p-value is ≤ q. In the table, the three discoveries are exactly the ones with adjusted p ≤ 0.05.
Assumptions and limits
- BH controls the FDR when the tests are independent or positively dependent, which covers most metric sets in practice. For arbitrary dependence, the Benjamini-Yekutieli variant is valid but more conservative.
- FDR is an average over many studies; any single list of discoveries may contain more or fewer false ones.
- It does not fix peeking or p-hacking; decide which tests are in the family before looking.
When to use it
Use BH when you screen many hypotheses and will follow up on the discoveries: secondary metrics in experiments, many segments in a breakdown, many features or keywords. Use a family-wise method such as Bonferroni when a single false claim is costly, such as the primary metric of a pricing decision. Pre-register one primary metric either way.
FDR and TapCub
TapCub reports breakdowns and comparisons, not p-values, and it does not apply multiple-comparison corrections. The idea still applies: when Why did it change or a breakdown across dozens of countries or pages highlights a few unusual values, some will be unusual by chance. Treat them as hypotheses, as described in diagnostic analytics, and if you test them formally, adjust for how many you looked at. For background on single tests, see p-value.
Sources
- Benjamini, Y. and Hochberg, Y. (1995). Controlling the False Discovery Rate: A Practical and Powerful Approach to Multiple Testing. Journal of the Royal Statistical Society B, 57(1), 289–300.
- Benjamini, Y. and Yekutieli, D. (2001). The control of the false discovery rate in multiple testing under dependency. Annals of Statistics, 29(4), 1165–1188.
Was this explanation clear?
We use your answers to fix and expand this page.
Couldn’t send. Please try again in a minute.
Thanks for the feedback. We’ll use it to improve this page.You’ve already sent feedback on this page. Thanks.

Data Analyst
Explores traffic sources, conversion funnels, and retention, using clear metric definitions and concrete examples to explain what the numbers mean.