用途:对基因组学中成千上万次同时检验产生的原始 p 值进行多重检验校正,控制假发现率(FDR)或族系错误率。适用于过滤差异表达结果、候选基因筛选、GWAS 显著性判断等场景。
主要能力与常用方法:
- Bonferroni:最保守,控制族系错误率,阈值为 alpha/n,适合小基因集与验证性研究。
- Benjamini-Hochberg FDR:基因组学中最常用,FDR 0.05 表示显著结果中约 5% 为假阳性。
- q-value:面向全基因组规模,先估计 p 值分布中真实零假设比例 pi0,再把每个 p 值转换为 q 值,即该基因被判为显著时的最小 FDR;当真阳性较多时比 BH 更有检测功效。
必要用法(保持原样): R:p.adjust(pvalues, method = 'BH')、p.adjust(pvalues, method = 'bonferroni');qvalue::qvalue(pvalues),返回 qvalues 与 pi0。 Python:from statsmodels.stats.multitest import multipletests;multipletests(pvalues, method='fdr_bh')、multipletests(pvalues, method='bonferroni')。
方法选择指引:全基因组差异表达用 BH 或 q-value,FDR < 0.05;候选基因用 Bonferroni,p < 0.05/n;探索性分析用 BH,FDR < 0.10;验证研究用 Bonferroni,p < 0.05/n;GWAS 用 Bonferroni,p < 5e-8。
结果解读:FDR 0.05 意味着被判定显著的基因中约 5% 是假阳性;FDR 0.01 更严格,假阳性更少但假阴性更多。padj 与 qvalue 都估计 FDR,q-value 略更具功效。
限制与提示:示例基于 R stats(base)与 statsmodels 0.14+,使用前需确认版本;可用 Python 的 pip show <package>、help(module.function) 及 R 的 packageVersion('<pkg>')、?function_name 核对签名;遇到 ImportError、AttributeError、TypeError 时应检查已安装包 API 并调整示例。