bio-experimental-design-multiple-testing

star 30

Applies multiple testing correction methods including FDR, Bonferroni, and q-value for genomics data. Use when filtering differential expression results, setting significance thresholds, or choosing between correction methods for different study designs.

mdbabumiamssm By mdbabumiamssm schedule Updated 2/4/2026

name: bio-experimental-design-multiple-testing description: Applies multiple testing correction methods including FDR, Bonferroni, and q-value for genomics data. Use when filtering differential expression results, setting significance thresholds, or choosing between correction methods for different study designs. tool_type: r primary_tool: qvalue measurable_outcome: Execute skill workflow successfully with valid output within 15 minutes. allowed-tools: - read_file - run_shell_command

Multiple Testing Correction

The Problem

Testing 20,000 genes at p < 0.05 yields ~1,000 false positives by chance. Correction is essential.

Common Methods

Bonferroni (Most Conservative)

# Strict family-wise error rate control
p_adj <- p.adjust(pvalues, method = 'bonferroni')
# Threshold: alpha / n_tests
# Use for: small gene sets, confirmatory studies

Benjamini-Hochberg FDR (Standard)

# Controls false discovery rate
p_adj <- p.adjust(pvalues, method = 'BH')
# Most common for genomics
# FDR 0.05 = expect 5% of significant results to be false

q-value (Recommended for Large-Scale)

library(qvalue)
qobj <- qvalue(pvalues)
qvalues <- qobj$qvalues
pi0 <- qobj$pi0  # Estimated proportion of true nulls

# q-value directly estimates FDR for each gene
# More powerful than BH when many true positives exist

Method Selection Guide

Scenario Recommended Method Threshold
Genome-wide DE BH or q-value FDR < 0.05
Candidate genes Bonferroni p < 0.05/n
Exploratory BH FDR < 0.10
Validation study Bonferroni p < 0.05/n
GWAS Bonferroni p < 5e-8

Python Equivalent

from statsmodels.stats.multitest import multipletests

# Benjamini-Hochberg
rejected, pvals_corrected, _, _ = multipletests(pvalues, method='fdr_bh')

# Bonferroni
rejected, pvals_corrected, _, _ = multipletests(pvalues, method='bonferroni')

Interpreting Results

  • FDR 0.05: Among genes called significant, ~5% are false positives
  • FDR 0.01: More stringent, fewer false positives but more false negatives
  • padj vs qvalue: Both estimate FDR; q-value is slightly more powerful

Related Skills

  • differential-expression/de-results - Applying corrections to DE output
  • population-genetics/association-testing - GWAS significance thresholds
  • pathway-analysis/go-enrichment - Correcting enrichment p-values
Install via CLI
npx skills add https://github.com/mdbabumiamssm/LLMs-Universal-Life-Science-and-Clinical-Skills- --skill bio-experimental-design-multiple-testing
Repository Details
star Stars 30
call_split Forks 7
navigation Branch main
article Path SKILL.md
More from Creator
mdbabumiamssm
mdbabumiamssm Explore all skills →