如何在两个独立比例的功效分析中制定停止规则?

机器算法验证 统计能力 测试 顺序分析 最佳停止
2022-01-20 12:49:02

我是一名从事 A/B 测试系统的软件开发人员。我没有扎实的统计背景,但在过去几个月里一直在学习知识。

典型的测试场景涉及比较网站上的两个 URL。访客访问LANDING_URL,然后随机转发到URL_CONTROLURL_EXPERIMENTAL一个访问者构成一个样本,当访问者在该站点上执行一些期望的操作时,就达到了胜利条件。这构成了一次转化率,转化率就是转化率(通常以百分比表示)。给定 URL 的典型转化率在 0.01% 到 0.08% 的范围内。我们运行测试以确定新 URL 与旧 URL 的比较。如果URL_EXPERIMENTAL显示跑赢大盘URL_CONTROL,我们替换URL_CONTROLURL_EXPERIMENTAL

我们使用简单的假设检验技术开发了一个系统。我在这里使用了另一个 CrossValidated 问题的答案来开发这个系统。

测试设置如下:

  • 的转换率估计值CRE_CONTROLURL_CONTROL使用历史数据计算的。
  • 设定所需的目标转化CRE_EXPERIMENTALURL_EXPERIMENTAL
  • 通常使用 0.95 的显着性水平。
  • 通常使用 0.8 的幂。

所有这些值一起用于计算所需的样本量。我正在使用 R 函数power.prop.test来获得这个样本量。

将运行测试,直到收集到所有样本。此时, 计算CR_CONTROL和的置信区间CR_EXPERIMENTAL如果它们不重叠,则可以以 0.95 的显着性水平和 0.8 的功效宣布获胜者。

但是,我们测试的用户有两个主要问题:

1. 如果在测试过程中的某个时间点,收集到足够多的样本来显示明显的获胜者,是否可以停止测试?

2. 如果在测试结束时没有宣布获胜者,我们可以运行更长的测试,看看我们是否可以收集足够的样本来找到获胜者?

应该注意的是,存在许多商业工具,允许他们的用户完全按照我们自己的用户的意愿去做。我读到上面有很多谬误,但我也遇到了停止规则的想法,并想探索在我们自己的系统中使用这种规则的可能性。

以下是我们想要考虑的两种方法:

1. 使用power.prop.test,将当前测量的转化率与当前样本数进行比较,看看是否已收集到足够的样本来宣布获胜者。

示例:已设置测试以查看我们的系统中是否存在以下行为:

  • CRE_CONTROL: 0.1
  • CRE_EXPERIMENTAL: 0.1 * 1.3
  • 使用这些参数,样本量N为 1774。

然而,随着测试的进行并达到 325 个样本,CRM_CONTROL(对照的测量转换率)为 0.08 和CRM_EXPERIMENTAL0.15。power.prop.test以这些转换率运行,N发现为 325。正是宣布CRM_EXPERIMENTAL成为获胜者所需的样本数量!在这一点上,我们希望测试可以结束。类似地,如果测试达到 1774 个样本但没有找到获胜者,那么它达到 2122 个样本足以表明CRM_CONTROL0.1 和CRM_EXPERIMENTAL0.128 是可以宣布获胜者的结果。

在一个相关问题中,用户建议这样的测试不太可信,因为它鼓励早期停止样本较少,并且容易受到估计偏差和 I 类和 II 类错误数量增加的影响。有什么方法可以使这个停止规则起作用吗?这是我们的首选方法,因为这意味着我们的编程时间更少。也许这个停止规则可以通过提供某种数字分数或分数来衡量测试的可信度是否应该提前停止?

2. 使用顺序分析SPRT

这些测试方法正是针对我们所处的情况而设计的:我们的用户如何开始和结束测试,以免在测试中浪费过多的时间?运行测试的时间过长,或者必须使用不同的参数重新开始测试。

在上述两种方法中,我偏爱 SPRT,因为数学对我来说更容易掌握,而且看起来它可能更容易编程。但是,我不明白如何在这种情况下使用似然函数。如果有人可以构建一个如何计算似然比(似然比的累积和)的示例,并继续通过一个示例来说明当一个人将继续监测、当一个人接受原假设和备择假设时的情况,这将帮助我们确定 SPRT 是否是正确的方法。

4个回答

这是一个有趣的问题,相关技术有很多应用。它们通常被称为“临时监控”策略或“顺序实验设计”(不幸的是,您链接到的维基百科文章有点稀疏),但是有几种方法可以解决这个问题。我认为@user27564 说这些分析必须是贝叶斯分析是错误的——当然也有用于临时监控的常客方法。

您的第一种方法类似于临时监控的原始方法之一,称为“缩减”。这个想法很简单:一旦实验的结果不可避免,你就应该停止收集数据。假设您有 100 个 A 和/或 B 的集合,知道它是否由每次随机 . 在这种情况下,您应该在至少数完 58 个同类项目后立即停止;计算剩余项目不会改变该点之后的重要性。数字来自于找到,其中AsBsABP(A)=P(B)=0.558x such that 1F(x;100;0.5)<αF是累积二项分布。

类似的逻辑可以让您找到其他测试的“不可避免点”,其中:

  1. 总样本量*是固定的,并且
  2. 每个观察对样本的贡献是有限的。

这对你来说可能很容易实现——离线计算停止标准,然后将其插入你网站的代码——但如果你愿意不仅在结果不可避免时终止实验,你通常可以做得更好,但当它也极不可能改变。

这称为随机缩减例如,假设在上面的示例中,我们已经看到了 57 个和 2如果不是绝对肯定的话,我们可能会相当有信心,在 100 的盒子里至少还有一个,所以我们可以停下来。这篇由 Christopher Jennison 和 Bruce Turnbull 撰写的评论,通过第 4 节中的随机缩减进行工作。他们还有一本更长的您可以通过 Google 图书查看第 10 章。除了推导之外,这本书还有一些公式,您可以或多或少地插入临时测试的结果。ABA

还有许多其他方法。分组顺序方法是为您可能无法获得一定数量的受试者并且受试者以可变速率滴入的情况而设计的。根据您网站的流量,您可能希望也可能不希望对此进行调查。

CRAN 周围有相当多的 R 包,如果这是您用于分析的内容。一个好的起点实际上可能是临床试验任务视图,因为很多这项工作都来自该领域。


[*] 只是一些友好的建议:在查看从大量数据点计算的显着性值时要小心。随着您收集越来越多的数据,您最终发现一个显着的结果,但效果可能非常小。例如,如果您询问整个星球他们更喜欢 A 还是 B,您不太可能看到精确的 50:50 拆分,但如果拆分为 50.001:49.999,则可能不值得重新设计您的产品。还要继续检查效果大小(即转换率的差异)!

您可以提前停止,但如果这样做,您的 p 值将不容易被解释。如果您不关心 p 值的解释,那么前两个问题的答案为“否”的方式并不重要(太多)。您的客户似乎很务实,因此对 p 值的真正解释可能不是您关心的重点。

我不能说你提出的第二种方法。

然而,第一种方法并不稳固。二项分布的正态近似值不适用于如此低的比例(这是 power.prop.test 使用的方法,也是 Cohen 在他的经典功率著作中使用的方法)。此外,据我所知,对于两个样本比例测试没有封闭形式的功效分析解决方案(参见如何在不使用正态近似的情况下执行两组二项式功效分析?)。然而,有更好的方法来近似比例的置信区间(参见包binom)。您可以使用非重叠置信区间作为部分解决方案......但这与估计 p 值不同,因此不能直接提供通往权力的途径。我希望有人有一个很好的封闭式解决方案,他们将与我们分享。如果我偶然发现一个,我会更新上面引用的问题。祝你好运。

编辑:当我在考虑它时,让我在这里完全务实一会儿。您的客户希望在他们确定实验站点比控制站点运行得更好时结束此实验。在你得到一个像样的样本后,如果你还没有准备好做出决定,那就开始调整你的随机分配与任何一方“获胜”的比例。如果这只是一个昙花一现,回归均值就会溜进来,你会变得不那么确定并缓和这个比率。当你有理由确定时,就叫它退出并宣布获胜。最佳方法可能涉及贝叶斯更新,但我对这个主题的了解还不够,无法指导您。但是我可以向你保证,虽然有时它可能看起来违反直觉,但数学本身并不是那么难。

也许可以在那里使用一些方法,例如

  • 波科克
  • 奥布莱恩和弗莱明
  • 皮托

这将根据结果调整 P 截止值,并有助于停止收集数据并节省资源和时间。

也许其他作品可以在这里添加。

你的问题是统计测试中出现的典型问题。那里有两种“风格”的统计数据,频率论者和贝叶斯论者。常客对您的两个问题的回答很简单:

  • 不,你不能早停
  • 不,你不能测量更长的时间

一旦你定义了你的设置,你甚至不能查看数据(盲分析)。从常客的角度来看,没有办法,没有作弊没有技巧!(编辑:当然,有人尝试这样做,如果使用得当,它们也会起作用,但众所周知,它们中的大多数会引入偏见。)

但是有贝叶斯的观点,这是完全不同的。与常客相比,贝叶斯方法需要额外的输入,即先验概率分布。我们也可以称其为先前的知识或偏见。有了这个,我们可以使用数据/测量将我们的知识更新为后验概率。关键是,我们可以使用数据,甚至可以在测量的每个中间点使用数据。在每次更新中,最后一个后验是我们新的先验,我们可以用我们最新知识的新测量来更新它。完全没有早停问题!

我发现一个讨论非常相似的问题,就像我在上面描述的那样:http: //biostat.mc.vanderbilt.edu/wiki/pub/Main/JoAnnAlvarez/BayesianAdaptivePres.pdf

但除此之外,你真的确定你需要这个吗?似乎您有一些系统正在运行,决定在哪里链接请求。为此,您无需通过假设检验证明您的决定在统计意义上是正确的。你有没有买过可乐,因为你可以排除百事可乐现在“正确”的可能性为 95%?取一个更好的就足够了,不排除假设。那将是一个简单的算法:计算速率 A 的不确定性,计算 B 的不确定性。取两个速率的差异,然后除以差异的不确定性。结果类似于 sigma 差异的重要性。然后只取所有超过两个或三个 sigma 差异的链接。退税,