注意:这是一篇最初以英文发表的博客的中文翻译,您可以在这里找到原文:https://statsig.com/blog/controlling-type-i-errors-bonferroni-benjamini-hochberg
Benjamini-Hochberg程序现已在Statsig上可用,作为减少假阳性的一种方法。
我们测试的假设越多,即使没有潜在效应,我们也越有可能看到偶然发生的统计显著结果。Bonferroni校正和Benjamini-Hochberg程序是在进行多重比较时减少这些假阳性的不同技术。
Benjamini-Hochberg程序和Bonferroni校正都有助于防止您在不应该发布时发布。当您测试大量假设并希望适度减少假阳性时,Benjamini-Hochberg程序最有帮助,而Bonferroni校正更为保守,在同时测试较少数量的假设时最有用。
无调整 vs Benjamini-Hochberg程序 vs Bonferroni校正之间的根本权衡是您对第一类和第二类错误的风险承受能力。
零假设为假 | 零假设为真 | |
拒绝零假设 | 正确 | 第一类错误:虚假警报 |
未能拒绝零假设 | 第二类错误:错过检测 | 正确 |
关于第一类和第二类错误的更深入解释可以在这里找到。
哪个更糟?
(第一类错误)我正在进行不必要的更改,这些更改实际上并没有改善我们的产品。
(第二类错误)我错过了改善产品的机会,因为我在实验中没有检测到差异。
答案将取决于您团队的目标、产品的成熟度以及您可以投入到实施和维护更改的资源。
如果我想测试大量假设,那么使用Bonferroni校正会很快降低我实验的功效。Benjamini-Hochberg程序在惩罚多重比较方面不那么严格,但这反过来意味着您比使用Bonferroni校正更有可能犯第一类错误。
Bonferroni校正控制族错误率(FWER),而Benjamini-Hochberg程序控制错误发现率(FDR)。
FWER = 在任何比较中犯任何第一类错误的概率
FDR = 当您拒绝零假设时,零假设为真的概率
对于一个变体与对照组的每个指标评估,我们有:
零假设为假 | 零假设为真 | |
拒绝零假设 | 第一类错误:虚假警报 | |
未能拒绝零假设 |
在任何在线实验中,我们可能在给定实验中不仅有1个指标和一个变体,例如:
我们通常推荐Benjamini-Hochberg程序作为比Bonferroni校正不那么严格的措施,但仍能保护您免受一定程度的第一类错误。无论您决定使用哪种方法,您都可以根据基于实验结果发布的更改数量以及这些更改如何影响您的产品来评估您的实验计划(保留组是做到这一点的好方法!)以确定您是否需要更多或更少的控制来防止假阳性。
在Statsig上任何实验的高级设置下,您可以选择是否要使用Bonferroni校正或Benjamini-Hochberg程序。
Benjamini-Hochberg程序设置可以在实验设置页面的高级设置中找到,就在我们的Bonferroni校正设置下方。
这也可以在您组织的实验策略中配置 - 将其启用为默认值或要求必须使用它。
与Bonferroni校正一样,当您在Statsig中应用Benjamini-Hochberg程序时,您可以决定是按变体、按指标还是两者都应用该方法。这是实验者应该就惩罚不同假设做出的决定。
变体:如果您使用校正,通常应该按变体应用该校正。每个变体都是实验对象的不同处理,代表一个不同的假设。
指标:不同的指标可能都用作一个假设的证据,或者各自用于支持不同的假设。问自己一个好问题:您测量的任何指标向积极方向移动是否意味着您想要发布该功能?如果是这样,为多个指标惩罚您的α是个好主意。
我们首先按升序对p值进行排序。然后,我们计算所需错误发现率除以正在评估的比较数量乘以p值在有序列表中的排名的阈值。小于其阈值的最大p值是我们新的显著性水平(α),如果没有p值小于其阈值,则为最小阈值。
例如,如果您有以下排序的观察到的p值,FDR <= 0.05
观察到的p值 | 可能的阈值 | p值 < 阈值 | 是否统计显著? |
0.010 | 0.05/4*1 = 0.0125 | 真 | 是 |
0.031 | 0.05/4*2 = 0.0250 | 假 | 是 |
0.032 | 0.05/4*3 = 0.0375 | 真 | 是 |
0.120 | 0.05/4*4 = 0.0500 | 假 | 否 |
这意味着我们调整后的α = 0.0375
当我们基于指标数量应用Benjamini-Hochberg程序时,我们使用上述方法独立于其他变体控制每个变体的FDR。同样,当我们基于变体数量应用Benjamini-Hochberg程序时,我们使用上述方法独立于其他指标控制每个指标的FDR。当我们基于指标和变体数量应用Benjamini-Hochberg程序时,我们通过对每个指标和变体的所有p值一起应用上述方法来控制整个实验的FDR。
例如,如果您有以下观察到的p值,并且基于每个变体的指标数量应用Benjamini-Hochberg,FDR ≤ 0.05,我们得到以下结果:
变体1 vs 对照组 | 变体2 vs 对照组 | |
指标1 | 0.043 | 0.129 |
指标2 | 0.049 | 0.074 |
指标3 | 0.042 | 0.005 |
指标4 | 0.037 | 0.042 |
调整后的α | 0.05 | 0.0125 |
使用相同的基础数据,如果我们基于每个指标的变体数量应用Benjamini-Hochberg,FDR ≤ 0.05,我们得到以下结果:
变体1 vs 对照组 | 变体2 vs 对照组 | 调整后的α | |
指标1 | 0.043 | 0.129 | 0.025 |
指标2 | 0.049 | 0.074 | 0.025 |
指标3 | 0.042 | 0.005 | 0.025 |
指标4 | 0.037 | 0.042 | 0.05 |
如果我们基于变体和指标数量应用Benjamini-Hochberg,FDR ≤ 0.05,我们得到以下结果:
变体1 vs 对照组 | 变体2 vs 对照组 | |
指标1 | 0.043 | 0.129 |
指标2 | 0.049 | 0.074 |
指标3 | 0.042 | 0.005 |
指标4 | 0.037 | 0.042 |
调整后的α = 0.00625