为什么在达到最佳样本量之前停止A / B测试是错误的?


13

我负责介绍我公司的A / B测试结果(在网站上运行)。我们进行了一个月的测试,然后定期检查p值,直到达到显着性为止(或者,如果长时间运行后未达到显着性,则放弃),我现在发现这是一种错误的做法

我现在想停止这种做法,但是要这样做,我想了解为什么这是错误的。我知道效果大小,样本大小(N),α显着性标准(α)和统计功效,或选择或隐含的β(β)在数学上都是相关的。但是,在达到所需样本量之前停止测试会发生什么变化呢?

我在这里阅读了几篇文章(即thisthisthis),他们告诉我,我的估计会有所偏差,并且我的Type 1错误的发生率急剧增加。但是那是怎么发生的呢?我正在寻找数学解释,这种解释可以清楚地显示出样本量对结果的影响。我想这与我上面提到的因素之间的关系有关,但是我无法找出确切的公式并自行解决。

例如,过早停止测试会增加类型1的错误率。好的。但为什么?如何增加类型1的错误率?我想念这里的直觉。

请帮忙。



1
是的,我通过此链接,但我只是不理解给出的示例。
sgk

抱歉,Gopalakrishnan-尚未看到您的第一个链接已指出这一点。
seanv507

1
您能解释一下您不了解的内容吗?数学/直觉似乎很清楚:在所需的样本量之前,并没有那么多停顿,而是反复检查。 ,所以可以不使用测试设计用于单检查多次。P(i1Nxi>θ)P(xN>θ)
seanv507

@GopalakrishnanShanker我的答案中给出的数学解释
tomka '16

Answers:


4

从根本上说,简单地对具有固定的type-1错误()水平的相同数据进行重复测试的A / B测试是有缺陷的。这样做至少有两个原因。首先,重复的测试是相关的,但测试是独立进行的。其次,固定的α不能解决导致类型1错误膨胀的多次测试。αα

要查看第一个,请假设您在每次进行新观察时都进行了新测试。显然,任何两个后续的p值都将相关,因为在两次测试之间情况没有改变。因此,我们在@Bernhard的图中看到了一个趋势,证明了p值的这种相关性。n1

看到第二,我们注意到,即使当测试是独立具有以下的p值的概率与试验次数增加P = 1 - 1 - α 其中是的情况下错误拒绝的原假设。因此,至少有一个阳性测试结果的概率与1相反αt

P(A)=1(1α)t,
A1当您反复进行a / b测试时。如果您只是在获得第一个阳性结果后简单地停下来,则只会显示该公式的正确性。换句话说,即使原假设是正确的,您最终也会拒绝它。因此,a / b测试是在没有效果的情况下查找效果的最终方法。

t+1tp<α

α

P(A)α.

αadj=α/t,
P(A)αP(A)<α0.05

(0,0.1)α=0.05

在此处输入图片说明

正如我们所看到的,这种调整非常有效,并且说明了我们必须如何改变p值来控制家庭明智的错误率。具体来说,我们现在不再找到任何重要的检验,因为@Berhard的原假设是正确的。

P(A)α


这是代码:

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")

2
这对我有用。我必须将其翻译成商务用语,以便现在就将观点传达给我的上级,但这是我自己的问题。非常感谢
sgk

8

如果零假设是正确的,那么人们通常会期望p值非常高。这不是真的。如果原假设为真,则p是均匀分布的随机变量。这意味着,有时随机会不时低于0.05。如果您查看许多不同的子样本,有时p值将低于0.05。

为了更容易理解,下面是一个小模拟R

这将抛出一万枚硬币,我们知道,这是一个公平的硬币:

set.seed(1)
n=10000
toss <- sample(1:2, n, TRUE)

从第5次掷球开始,这将在每次掷球之后执行二项式测试以检查公平性并保存p值:

p.values <- numeric(n)
for (i in 5:n){
     p.values[i] <- binom.test(table(toss[1:i]))$p.value
}

这将一个接一个地绘制p值:

plot(p.values, type="l")
abline(h=0.05)

在此处输入图片说明

H0H0

(为完全开放,我已经为示例生成器尝试了一个以上的种子,直到它像这个示例一样清晰了,但这对于教育目的是公平的。如果已R安装并运行,则可以轻松地使用这些数字)


感谢您的简单实验。但是说我在一个这样的阶段(p值<0.05)停止了测试,我的结果意味着什么?(除了错误的事实以外)。我是否可以通过降低p值阈值来进行补偿?
sgk

+1注意相关的测试和相关的多重测试问题。根据您的(非常好)示例,请参阅下面的我的扩展答案以及调整选项。
tomka '16

αα

我的主要观点是控制家庭明智错误率(FWER)或错误发现率(FDR)都针对类型1错误。由于通常样本很大,因此在a / b测试中控制2型错误的问题较少。
tomka '16

p=0.05
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.