A/B 测试简单地重复测试具有固定类型 1 错误的相同数据(α) 水平存在根本缺陷。这至少有两个原因。首先,重复测试是相关的,但测试是独立进行的。二、固定α不考虑导致类型 1 错误膨胀的多次传导测试。
要查看第一个,假设在每次新观察时您都会进行新测试。显然,任何两个后续 p 值都是相关的,因为n−1两次测试之间的情况没有变化。因此,我们在@Bernhard 的图中看到了一个趋势,证明了 p 值的这种相关性。
要查看第二个,我们注意到即使测试是独立的,p 值低于α随着测试次数的增加t
P(A)=1−(1−α)t,
在哪里A是错误拒绝原假设的事件。所以至少有一个阳性测试结果的概率是相反的1当您反复进行 a/b 测试时。如果你只是在第一个阳性结果后停止,你只会证明这个公式的正确性。换句话说,即使原假设为真,您最终也会拒绝它。因此,a/b 测试是在没有效果的情况下找到效果的最终方法。
由于在这种情况下,相关性和多重检验同时成立,检验的 p 值t+1取决于 p 值t. 所以如果你最终达到p<α,您很可能会在该地区停留一段时间。您还可以在 @Bernhard 的 2500 到 3500 和 4000 到 5000 区域的图中看到这一点。
多次测试本身是合法的,但是针对固定的测试α不是。有许多程序同时处理多重测试程序和相关测试。一类测试校正称为全族错误率控制。他们所做的是确保
P(A)≤α.
可以说最著名的调整(由于其简单性)是 Bonferroni。我们在这里设置
αadj=α/t,
很容易证明P(A)≈α如果独立测试的数量很大。如果测试是相关的,它可能是保守的,P(A)<α. 所以你可以做的最简单的调整就是划分你的 alpha 水平0.05通过您已经进行的测试次数。
如果我们将 Bonferroni 应用到 @Bernhard 的模拟中,然后放大到(0,0.1)y轴上的间隔,我们找到下面的图。为了清楚起见,我假设我们不会在每次抛硬币(试验)后进行测试,而只是每百分之一。黑色虚线是标准α=0.05切断,红色虚线是 Bonferroni 调整。
正如我们所看到的,调整非常有效,并证明了我们必须改变 p 值以控制全族错误率是多么激进。具体来说,我们现在不再发现任何重要的测试,因为它应该是因为@Berhard 的零假设是正确的。
完成此操作后,我们注意到由于相关测试,Bonferroni 在这种情况下非常保守。有更好的测试在这种情况下会更有用。P(A)≈α,如置换检验。此外,关于测试还有很多要说的,而不仅仅是参考 Bonferroni(例如查找错误发现率和相关的贝叶斯技术)。然而,这用最少的数学回答了你的问题。
这是代码:
set.seed(1)
n=10000
toss <- sample(1:2, n, TRUE)
p.values <- numeric(n)
for (i in 5:n){
p.values[i] <- binom.test(table(toss[1:i]))$p.value
}
p.values = p.values[-(1:6)]
plot(p.values[seq(1, length(p.values), 100)], type="l", ylim=c(0,0.1),ylab='p-values')
abline(h=0.05, lty="dashed")
abline(v=0)
abline(h=0)
curve(0.05/x,add=TRUE, col="red", lty="dashed")