一句话回答
错误发现率(False Discovery Rate,FDR)是所有被判为显著的结果中,假阳性所占的预期比例。Benjamini-Hochberg 校正可以控制它:同时检验很多假设时,平均而言,发现中的假阳性不超过设定比例(比如 5%)。
公式: 取最大的 i 使 p₍ᵢ₎ ≤ (i ÷ m) × q,拒绝最小的 i 个 p 值对应的假设
什么是错误发现率?
错误发现率(False Discovery Rate,FDR)是你判为显著的所有结果中,假阳性所占的预期比例。比如做了 40 个检验,判出 10 个显著;FDR 为 5%,意味着平均而言,这 10 个里大约有半个是假的。
只要同时检验很多东西,它就很重要:一次 A/B 测试里的二十个指标、拆分报表里的每一个国家、模型里的几百个特征。在 p < 0.05 下检验足够多的假设,总有一些会碰巧越线。1995 年发表的 Benjamini-Hochberg(BH)校正是控制 FDR 的标准方法。
FDR 和族错误率
| 族错误率(FWER) | 错误发现率(FDR) | |
|---|---|---|
| 控制什么 | 出现任何一个假阳性的概率 | 发现中假阳性的预期占比 |
| 常用方法 | Bonferroni:每个检验用 α ÷ m | Benjamini-Hochberg |
| 严格程度 | 检验多时非常严 | 自适应:发现少时更严,发现多时放宽 |
| 适合 | 确认少数关键结论 | 筛查大量指标、分群或特征 |
| 代价 | 漏掉很多真实效果(第二类错误) | 接受少量误报 |
Benjamini-Hochberg 校正的步骤
设有 m 个检验,目标 FDR 水平为 q(常用 0.05):
- 把 p 值从小到大排序:p₍₁₎ ≤ p₍₂₎ ≤ … ≤ p₍ₘ₎。
- 对每个排名 i,计算阈值 (i ÷ m) × q。
- 找到满足 p₍ᵢ₎ ≤ (i ÷ m) × q 的最大的 i。
- 把这个检验以及所有 p 值比它小的检验都判为显著,即使其中有的高于自己那一行的阈值。
计算示例
示例数据:某新手引导流程的 A/B 测试报告了十个次要指标。q = 0.05,m = 10。
| 排名 i | 指标 | p 值 | BH 阈值(i ÷ 10 × 0.05) | 低于阈值? | BH 校正后 p 值 |
|---|---|---|---|---|---|
| 1 | 激活 | 0.001 | 0.005 | 是 | 0.010 |
| 2 | 发出邀请 | 0.008 | 0.010 | 是 | 0.040 |
| 3 | 第 7 天留存 | 0.012 | 0.015 | 是 | 0.040 |
| 4 | 首份报表用时 | 0.021 | 0.020 | 否 | 0.053 |
| 5 | 客服咨询 | 0.034 | 0.025 | 否 | 0.068 |
| 6 | 文档浏览 | 0.048 | 0.030 | 否 | 0.080 |
| 7 | 价格页浏览 | 0.090 | 0.035 | 否 | 0.129 |
| 8 | 登录次数 | 0.200 | 0.040 | 否 | 0.250 |
| 9 | 会话时长 | 0.410 | 0.045 | 否 | 0.456 |
| 10 | 导出次数 | 0.730 | 0.050 | 否 | 0.730 |
低于阈值的最大排名是 3,所以有三个指标是「发现」。三种做法对比:
| 方法 | 门槛 | 显著的指标数 |
|---|---|---|
| 不校正(p < 0.05) | 每个 0.05 | 6 |
| Benjamini-Hochberg(q = 0.05) | 逐级上升的阈值线 | 3 |
| Bonferroni(FWER 0.05) | 每个 0.005 | 1 |
不做校正的话,「首份报表用时」「客服咨询」「文档浏览」都会被当成成果报告出去;而在十个指标里,出现一两个碰巧的结果本来就在预料之中。Bonferroni 只保留了激活,漏掉了两个很可能是真实的效果。
校正后的 p 值
很多工具不报阈值,而是报 BH 校正后的 p 值(有时叫 q 值):对排名 i,取所有 j ≥ i 的 (m ÷ j) × p₍ⱼ₎ 中的最小值,上限为 1。校正后 p 值 ≤ q,就在 FDR 为 q 时显著。上表中,三个「发现」正好就是校正后 p 值 ≤ 0.05 的那三个。
假设和局限
- 检验之间相互独立或正相关时,BH 能控制 FDR,实际中的大多数指标组合都属于这种情况。相关结构任意时,用 Benjamini-Yekutieli 变体,它有效但更保守。
- FDR 是多次研究的平均值,某一次的发现名单里,假阳性可能多也可能少。
- 它解决不了中途偷看或 p 值操纵:哪些检验算在一组里,要在看结果之前决定。
什么时候用
需要筛查大量假设、并会对「发现」做后续验证时用 BH:实验的次要指标、拆分报表里的大量分群、大量特征或关键词。只要出一个错误结论代价就很大时,用 Bonferroni 这类控制族错误率的方法,比如定价决策的主要指标。无论哪种,都要事先确定一个主要指标。
FDR 和 TapCub
TapCub 提供的是拆分和对比,不输出 p 值,也不做多重比较校正。但道理同样适用:当「为什么变了」或跨几十个国家、页面的拆分标出几个异常值时,其中有些只是碰巧异常。按诊断性分析里的方法把它们当作假设;如果要正式检验,记得按你看过的数量做校正。单个检验的背景知识见 p 值。
资料来源
- 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.
这个解释清楚吗?
我们会根据反馈修改和补充这篇内容。
提交没有成功,请稍后再试。
谢谢你的反馈,我们会据此改进这篇内容。你已经反馈过这篇了,谢谢。
