Adjust P-values Online: Benjamini-Hochberg FDR, Holm and Bonferroni
Correct a column of p-values for multiple testing — same results as R p.adjust(). Upload CSV or Excel, no signup.
| Gene | p |
|---|---|
| TP53 | 0.001 |
| BRCA1 | 0.02 |
| MYC | 0.04 |
| EGFR | 0.30 |
| Gene | p | p adj. (FDR BH) |
|---|---|---|
| TP53 | 0.001 | 0.004 |
| BRCA1 | 0.02 | 0.04 |
| MYC | 0.04 | 0.0533 |
| EGFR | 0.30 | 0.3 |
A new column with Benjamini-Hochberg adjusted p-values.
How to Adjust P-values
A complete guide to configuring your data pipeline.
Step 1: Upload Your Results Table
Upload a table that has a column of p-values — the typical output of a differential expression analysis, a GWAS, a screening experiment or any batch of tests. Values in scientific notation such as 3.2e-08 are read correctly.
Step 2: Choose the Column and the Method
In the Adjust p-values tool, select the p-value column and a method:
- Benjamini-Hochberg (FDR): controls the false discovery rate; the standard choice for omics and screening.
- Benjamini-Yekutieli: FDR control that is valid under any dependence between tests; more conservative.
- Holm: controls the family-wise error rate; always at least as powerful as Bonferroni.
- Bonferroni: the simplest and most conservative family-wise correction.
Step 3: Use the New Column
A new column with the adjusted values is added next to your data (you can name it). Then use the Filter tool to keep, for example, rows with an adjusted p-value below 0.05, and export the result as CSV or Excel.
Technical Specifications & FAQ
When you run hundreds or thousands of tests, about 5% of the true-null tests will reach p < 0.05 by chance alone. Multiple-testing correction converts raw p-values into adjusted values that can be compared directly with your significance threshold. The FDR procedures limit the expected proportion of false positives among the results you call significant, while Holm and Bonferroni limit the probability of making even one false positive.
flowingTable implements the same algorithms as R's p.adjust() (methods BH, BY, holm and bonferroni) and the results match it exactly. Empty cells are ignored and stay empty, so they do not count as tests. The adjustment is a regular step in your flow, so it can be undone or re-applied to a new file.
Frequently Asked Questions
What is the difference between FDR and Bonferroni correction?
Bonferroni (and Holm) control the family-wise error rate: the chance of at least one false positive among all tests. This is very strict when there are many tests. The Benjamini-Hochberg procedure controls the false discovery rate instead — the expected share of false positives among the results declared significant — which keeps far more true findings in large-scale studies such as RNA-seq.
Are the adjusted values the same as R's p.adjust()?
Yes. The BH, BY, Holm and Bonferroni methods follow the same algorithms as R's p.adjust() and produce identical values, including the step-up/step-down monotonicity and capping at 1.
Is the BH-adjusted p-value the same as a q-value?
The Benjamini-Hochberg adjusted p-value is often called an FDR or q-value in software output, and it is used the same way: keep the rows with an adjusted value below your chosen FDR, such as 0.05. Storey's q-value method is a different estimator that can be slightly less conservative.
What happens to empty or invalid cells in the p-value column?
Empty cells stay empty and are not counted as tests, which is the same behaviour as p.adjust() with NA values. Values outside the 0–1 range are rejected with an error message so that a wrong column is not adjusted by mistake.