False Discovery Rate Calculator

Figran

Paste your p values for FDR correction with Benjamini–Hochberg or other adjustments, keeping your IDs.

  • Thousands of p values
  • BH, Bonferroni, Holm and more
  • CSV and figures
Adjustment methods

Uses qvalue R package defaults.

Leave blank to use the number of non-missing p values. Set a larger total when only part of the tests is pasted.

Results

Calculating…

Adjusted values

RowStatusIDp

Values are rounded to four decimal places; decisions and CSV exports use full precision.

Methods sentence

False discovery rate examples

Load an example to see adjusted p values and a diagnostic figure.

Discoveries (4)Not significantBH threshold00.020.040.060.08051015Last discovery rank: 4RankP value

Benjamini–Hochberg example

The fifteen p values used to illustrate the step-up procedure.

Source: Benjamini and Hochberg (1995) · Neuhaus et al. (1992)
Discoveries (489)Not significantBH threshold00.0010.0020.0030.0040200400600800Last discovery rank: 489RankP value

RNA-seq genes

Simulated differential expression p values for a complete family of tests.

Simulated · 20,000 tests
Discoveries (5)Not significantBH threshold00.020.040.060.0805101520Last discovery rank: 5RankP value

Pathway enrichment

Compare enrichment tests across pathways.

Simulated · 20 pathways
Discoveries (3)Not significantBH threshold00.020.040.060.080246810Last discovery rank: 3RankP value

Clinical endpoints

Adjust a family of clinical endpoint tests.

Simulated · 10 endpoints
01234500.20.40.60.81Estimated π0 = 1.00P valueCount

No discoveries

Uniformly spaced p values show an approximately flat histogram.

Simulated · 100 tests
Discoveries (5)Not significantBH threshold00.020.040.060.080510Last discovery rank: 5RankP value

Imaging regions

Inspect tests across regions of interest.

Simulated · 12 regions

How to adjust p values

Use this adjusted p value calculator in four steps.

  1. 1Paste or import

    Paste p values or import a CSV or Excel table.

  2. 2Choose columns

    Select the p-value column and an optional ID column.

  3. 3Choose methods

    Select corrections and set your threshold.

  4. 4Export

    Download the adjusted table or figure.

Bonferroni correction vs Benjamini–Hochberg

Bonferroni adjustment and Benjamini–Hochberg both correct for multiple testing, but they control different error rates.

Bonferroni and Holm–Bonferroni control the family-wise error rate under arbitrary dependence. Benjamini–Hochberg controls the false discovery rate under independence and certain positive dependence. Choose a method based on the error rate and assumptions appropriate for your study.

Bonferroni per-test α: 0.005

MethodError rateDependence assumptions
Bonferroni / HolmFWERArbitrary dependence
Hochberg / HommelFWERIndependence or certain positive dependence
Šídák / Holm-ŠídákFWERIndependent tests
Benjamini–Hochberg (BH)FDRIndependence or certain positive dependence
Benjamini-YekutieliFDRArbitrary dependence
Storey q-valueEstimated q-valueDepends on the estimator and data

The comparison below uses the 15 p values in the default example.

Benjamini–Hochberg (BH)4 discoveries
Bonferroni3 discoveries

References: R p.adjust documentation · Benjamini and Hochberg (1995) · Neuhaus et al. (1992)

How Benjamini–Hochberg works

The Benjamini–Hochberg procedure controls the false discovery rate (FDR). Sort p values and compare each to its rank multiplied by the chosen threshold, divided by the total number of tests. All values up to the largest passing rank are discoveries. Adjusted values are made monotone from the largest rank backward.

p(i)≤iqm
RankP valueBH thresholdStatus
10.00010.0033Passes
20.00040.0067Passes
30.00190.0100Passes
40.00950.0133Passes
50.02010.0167Does not pass

Reading the p-value histogram

A roughly uniform histogram can be consistent with null tests; an excess near zero can indicate signal. An excess near one or an unusual shape may reflect model or data issues. A histogram alone does not establish validity.

05101500.20.40.60.81Estimated π0 = 0.97P valueCount
Approximately uniform
01020304000.20.40.60.81Estimated π0 = 0.50P valueCount
Excess near zero
01020304000.20.40.60.81Estimated π0 = 1.00P valueCount
Excess near one

False discovery rate FAQ

What is the false discovery rate?

The false discovery rate is the expected proportion of false positives among rejected hypotheses.

How is FDR different from FWER?

FDR concerns the expected false proportion among discoveries; FWER is the probability of at least one false positive.

What are adjusted p values and q values?

An adjusted p value can be compared with a chosen error threshold. A q value estimates the minimum FDR threshold at which a test is called significant; definitions depend on the method.

Which method should I choose?

Choose according to the error rate and dependence assumptions appropriate to your study. BH targets FDR under independence or certain positive dependence, while BY is valid under arbitrary dependence; Holm controls FWER under arbitrary dependence. Weighted methods and gatekeeping are not provided.

Bonferroni vs Tukey post hoc test: which should I use?

Tukey's HSD compares every pair of group means after an ANOVA and is usually less conservative than Bonferroni for all pairwise comparisons; Bonferroni works for any set of tests, including a few planned comparisons. Select Bonferroni to multiply each p value by the total number of tests, capped at one. In SPSS One-Way ANOVA, choose Analyze → Compare Means → One-Way ANOVA → Post Hoc → Bonferroni. SPSS Bonferroni post hoc values are already adjusted; do not adjust them again. This tool does not run ANOVA from raw groups.

How many tests should I include?

Include the full family of tests defined by your analysis, including nonsignificant results. If only some values are pasted, enter the full total in Total tests.

Is this the same as A/B testing FDR?

No. This calculator adjusts a family of p values; project-level A/B FDR tools may instead estimate false discoveries from experiment counts and other assumptions.

Why do my values differ from DESeq2's padj?

DESeq2 uses independent filtering by default and adjusts only the genes that pass its filter, leaving filtered genes with NA in padj. All-zero counts or outliers can also lead to missing values. The six p.adjust methods here match R for the same non-missing p values and total test count.

Are my data uploaded?

No. Calculation and file processing run in your browser. The session draft stays in browser session storage.

Adjust your p values

Compare corrections and take your results with you.

Adjust your p values