何时终止贝叶斯 A/B 测试?

机器算法验证 贝叶斯 β-二项分布
2022-03-13 22:06:00

我正在尝试以贝叶斯方式进行 A/B 测试,如Probabilistic Programming for HackersBayesian A/B tests两篇文章都假设决策者仅根据某些标准的概率来决定哪个变体更好,例如P(pA>pB)=0.97, 所以,A更好。这个概率没有提供任何关于是否有足够数量的数据可以从中得出任何结论的信息。所以,我不清楚什么时候停止测试。

假设有两个二进制 RV,AB,我想估计它的可能性有多大pA>pB, 和pApBpA>5%根据观察AB. 此外,假设pApB后验是β分布的。

因为我能找到α,β参数为pA|datapB|data,我可以对后验进行采样,并估计P(pA>pB | data). python中的示例:

import numpy as np

samples = {'A': np.random.beta(alpha1, beta1, 1000),
           'B': np.random.beta(alpha2, beta2, 1000)}
p = np.mean(samples['A'] > samples['B'])

例如,我可以得到,P(pA>pB)=0.95. 现在我想要类似的东西P(pA>pB | data)=0.95±0.03.

我已经研究了可信区间和贝叶斯因子,但如果它们完全适用,我无法理解如何为这种情况计算它们。我如何计算这些额外的统计数据,以便我有一个好的终止标准?

3个回答

我很高兴你提到了这个例子,因为我正在做的一个项目是写一整章关于贝叶斯 A/B 测试。

我们对两个数量感兴趣:P(pA>pB|data)和一些“增加”的措施。我将讨论P(pA>pB|data)数量第一。

没有错误界限P(pA>pB|data),这是一个真实的数量。这类似于说“后验的均值是多少?”,只有 1 个均值,我们可以通过取所有样本的平均值来计算它(我忽略了任何蒙特卡洛错误,因为它们可以减少通过采样更多来忽略不计)。我认为您混淆了未知量,我们可以说“+- 3%”和后验计算量。

我要说的是P(pA>pB|data)=0.95是肯定的:鉴于你观察到的数据和先验,这是你的结论。

请注意,我们将知道pA>pB快速:对于足够不同的情况,它只需要适量的观察pApB. 衡量 A 比 B 增加了多少要困​​难得多,也更有趣(这通常是 A/B 测试的目标:我们增加了多少转化)。你提到过pApBpB>5%——你对此有多大把握?

请注意,虽然pA>pB是一个布尔值,因此很容易测量,pApBpB当然不是布尔值。它是一种可能性的分布:

在此处输入图像描述

随着获取的数据越来越多,这种分布趋于实际的相对增加,可以说分布趋于稳定。这是我建议考虑终止实验的地方。一旦这种分布似乎“平静下来”,我们可以对增加充满信心,然后终止实验。

在贝叶斯 A/B 测试中,似乎有两种主要的决策方法。第一个基于印第安纳大学的 John Kruschke 的一篇论文(K. Kruschke,Bayesian Estimation Supersedes the t 检验,Journal of Experimental Psychology: General, 142, 573 (2013))。本文中使用的决策规则基于实际等效区域(ROPE)的概念。

另一种可能性是使用预期损失的概念。它由 Chris Stucchio(C. Stucchio,VWO 的贝叶斯 A/B 测试)提出。这是我会考虑的另一种方法。

Cam.Davidson.Pilon 建议的查看后验分布的方法(pApB)/pA很有意义,并且很适合 ROPE 方法。使用 ROPE 方法还有一个额外的优势,即在实验不确定的情况下也给出了规则(不仅仅是当“A”或“B”变体可以被宣布为获胜者时)。

您可以在这篇博文中找到更多信息:贝叶斯 A/B 测试:分步指南它还包括一些主要基于托管在 Github上的 Python 项目的 Python 代码片段。

我一直在尝试停止贝叶斯 A/B 测试的方法,你是对的——谷歌搜索并没有那么多明显的方法。我最喜欢的方法是基于精度的方法,基于此:http ://doingbayesiandataanalysis.blogspot.com/2013/11/optional-stopping-in-data-collection-p.html 。但是,我还没有找到很多关于这方面的数学文献,所以现在它只是一个很好的启发式方法。

我发现虽然我的测试需要运行更长的时间才能达到所需的精度,但它更直观,而且你给了时间来分配P(A>B|data)以客观的方式“冷静下来”,而不是目不转睛地盯着它。