贝叶斯 AB 测试

机器算法验证 贝叶斯 假设检验 测试
2022-03-18 07:57:31

我正在一个每月仅接收 5k 次访问的页面上运行 AB 测试。达到测量测试和控制之间 +-1% 差异所需的流量水平需要很长时间。我听说我可以使用贝叶斯统计数据来确定测试是否表现出色。如何使用贝叶斯统计来分析我当前的数据?

        Visitors    Conversions
Control 1345         1165
Test A  961          298
Test B  1274         438
3个回答

我正在解决同样的问题。现在有几篇有用的文章在您提出这个问题时不可用。


Antti Rasinen 的“Bayesian A/B testing with the theory and code” ——Evan Haas 的未完成系列文章“Exact Bayesian Inference for A/B testing”的逻辑结论(此处部分解救了第 1 部分和第2 部分)。

二项分布的共轭先验是 beta 分布。因此,一种变体的转化率分布是 beta 分布。您可以数值或精确求解作者参考了贝叶斯自己写的一篇文章《An Essay to solve a Problem in the Doctrine of Chances》Pr(A>B)


Ian Clarke 的“Proportionate A/B Testing” ——作者解释说,beta 分布是理解如何将贝叶斯解决方案应用于 A/B 测试的关键。他还讨论了使用Thompson Sampling来确定的先验值。αβ


Cam Davidson Pilon 的《黑客的贝叶斯方法》一书中的“第 2 章:关于 PyMC 的更多信息” - 这是一本 iPython 书籍,解释了许多应用程序中的贝叶斯方法。第 2 章大约过了一半(章节标题为Example: Bayesian A/B testing ),作者详细解释了如何使用pymc计算 A 优于 B(反之亦然)的概率。给出了完整的 python 代码,包括绘制结果。


现在还有一些在线贝叶斯显着性计算器:

您可以对由 beta 分布表示的每个组的可信区间执行 Monte-Carlo-Integration,以计算一组的真实未知参数优于另一组的真实未知参数的概率。我在这个问题中做了类似的事情How do afrequentist calculate the chance that group A beat group B about binary response where trial=Visitors and successful trial = conversions

但是: 请注意,贝叶斯只会根据迄今为止收集的数据为您提供主观概率,而不是客观的“真相”。这源于常客(使用统计测试、p 值等)和贝叶斯主义者之间的哲学差异。因此,当统计程序无法做到这一点时,您不能期望使用贝叶斯检测到显着差异。

要理解为什么这很重要,首先了解置信区间和可信区间之间的差异可能会有所帮助,因为上面提到的 MC-Integration “仅”将两个独立的可信区间相互比较。

有关此主题的更多详细信息,请参见例如此问题:

有几种方法可以进行贝叶斯 A/B 测试。

首先,您应该决定是要使用分析方法(使用 Lenwood 提到的共轭分布)还是 MCMC 方法。对于简单的 A/B 实验,特别是在转化率方面,实际上没有必要使用 MCMC 方法:只需使用 Beta 分布作为先验,您的后验分布也将是 Beta 分布。

然后,您需要决定应用哪个决策规则。在这里,似乎有两种主要的决策方法。第一个基于印第安纳大学的 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 测试)提出。

原则上,您可以使用不同的决策规则。

您可以在此博客文章中找到此内容以及更多内容:贝叶斯 A/B 测试:分步指南它还包括一些 Python 代码片段并使用托管在 Github 上的 Python 项目。