从功率计算到P值:堆栈溢出时的A/B测试

如果你坚持下去元堆栈溢出,你可能时不时注意到关于各种特性的A/B测试这里是堆栈溢出。我们使用A/B测试来比较新版本和设计的基线,机器学习模型,或者实际上我们在堆栈溢出时所做的任何特性;这些测试是我们决策过程的一部分。按钮的哪个版本,预测模型,还是广告更好?我们不必盲目猜测,但是,相反,我们可以使用测试作为决策工具包的一部分。

我对A/B测试感到兴奋,因为这些测试利用了统计数据和数据的力量,从而影响我们业务选择的日常细节。Des Navadeh是乔布斯在堆栈溢出的团队,她已经在她的团队中广泛地使用测试来指导决策。Des说:“A/B测试帮助我们获得对正在做出的改变的信心。它帮助我们验证新思想并指导决策。没有A/B测试,我们把大部分工作留给机会做。”“

同时,关于如何进行A/B测试,可能存在混淆,这种测试所涉及的统计概念是什么,你做什么之前测试vs.之后测试。Des和她的团队通过执行许多测试学到了很多东西,但也有一些绊脚石。“我们当时没有意识到,但当我们开始A/B测试时,我们在计算中采取了非常严格的方法来确定样本大小。因此,我们正在不必要的时间段内运行测试,大多数都被认为是没有结论的。我们基本上将测试设置为几乎100%有信心,这不太现实,也不富有成效!“Des说。

为了开始右脚的测试,我们需要计划A/B测试并执行功率计算。这需要定义假设和测试组,然后考虑两个问题。

  • 我们需要如何确定我们正在测量一个真正的变化??
  • 由于新版本的出现,我们希望看到的变化有多大?与基线相比??

让我们从第一个问题开始。

你需要多确定呢??

我很伤心,不得不向你们大家打破这个事实,但是第一个问题的答案不能是100%。当我们在现实世界中测量某物时,我们从不精确和精确地测量。(这就是我有工作的基本原因,我想!统计学家使用两个主要量来讨论我们在测量中可能出现多少错误以及以何种方式出现错误。

  • 我们愿意错过真实效果的时间百分比是多少?这可通过权力.
  • 我们愿意被愚弄到通过随机机会看到效果的时间百分比是多少?这叫做显著水平,更准确地说,我们将此声明为拒绝零假设.

我们还讨论了这些误差,如假阴性率和假阳性率,哪个可以用正确的例子很容易理解.

这些量的典型统计标准是功率的80%(即,假阴性的概率为20%,显著性水平的概率为5%。为什么在实践中使用这些标准?这是个很棒的问题,背后有相当多的行李和传统。如果我们选择过于严格的标准,可能95%的功率和1%的显著性水平,我们所有的A/B测试将需要运行更长的时间,我们将不得不投入更多的时间和资源进行测试。我们不能快速迭代来解决业务问题。另一方面,我们不能治愈癌症,正确的?!如果我们放宽这些统计标准怎么办?然后,我们冒着在产品变化之后做出任何改进的风险,以及将开发人员和其他团队成员的工作投资于不会使我们朝着目标前进的更改。我们想成为金发女郎,当谈到这些标准时,恰到好处。对于堆栈溢出的我们,这意味着在A/B测试之前,在我们的功率计算中,始终使用80%的功率和5%的显著性电平。

你的零钱多大??

我们这里的第二个问题不是关于统计标准,相反,我们期望看到的是,与现状相比,拟议中的改变会有多大的不同。人们用来谈论这个概念的一些短语是效果大小,预期改善,提高阈值。效果大小可以在不同的环境和我们的业务的不同部分不同。

评估效果大小需要战略产品思考。Des说:“您需要首先了解产品的不同区域是如何执行的。理解你今天的每个部分如何转化,可以帮助你决定需要看到多大的影响才能让新的变化值得去做。我们用不同的问题来帮助估计效果大小。要通过考试需要多少开发工作?它在战略上有多重要?这个特性支持将来的计划吗?我们优化的受众或行动的规模是多少?这些答案在我们的测试计划中作为成功标准详细说明。”Des在估计影响大小时考虑的一些因素是进入正在考虑的漏斗的事件的数量,特征的基线转换率,以及预期的改进如何影响整个产品度量。

功率计算

一旦我们估计了测试的效果大小,并且知道了计划中使用的统计标准,我们可以做一次功率计算,看看我们需要多大的样本大小进行测试。像这样的功率计算的要点是找出A/B测试所需的样本大小,在每个组中,我们需要多少视图或用户或表单提交或其他交互来实现测试所需的能力。然后我们终于可以开始我们的测试了!是时候等待这些事件到来了。

我们如何计算我们需要的样本的大小,用我们选择的统计标准来衡量我们预期的变化?对于大多数测试,我们的产品团队使用在线计算器来查找样本大小。我是R开发人员,所以我会用R函数为了这样的测试。对于更复杂的测试,我们数据团队有时会运行用于功率计算的模拟。

当我们计算功率时,我们亲眼看到力量有多大,显著性水平,并且影响大小与样本大小以及我们刚开始处理的基线转换速率相互作用。我建造了一个闪亮的应用为了证明这些因素如何与比例测试相关,这通常适用于我们的A/B测试。

您可以单击“源代码“在应用程序上的按钮,以查看构建这个应用程序的R代码。注意曲线的形状,以及当你移动滑块时它们如何变化。我们需要更大的样品尺寸来测量小的效应尺寸,或者达到低显著水平。如果开始时基线速率较高,给定功率所需的样本大小降低。这些复杂的交互影响堆栈溢出时的A/B测试。

“我们意识到不能在所有测试中标准化功率计算。部分漏斗结构高度优化,改造效果良好,这意味着我们需要较小的样本大小来检测在一个没有转换的区域中我们希望看到的相同效果,“Des说。“其他区域体积较大,像页面视图,但是没有很好地皈依。虽然较高的体积帮助我们更快地达到样品尺寸,我们需要一个更大的效果大小来产生影响。”“

分析结果

考试后会发生什么?在我们收集了足够的事件以满足我们的样本大小要求之后,是时候分析结果了。在堆栈溢出,我们有用于团队的测试基础结构,以自动查看结果分析,或者我自己在进行分析,我可能使用统计测试,如R比例试验.“我们知道,当我们达到我们要收集的样本大小时,就可以结束测试,然后检查p值,“Des说。A/B检验的p值是我们通过随机机会得到A和B组之间观察到的差异(或者更极端的差异)的概率。当p值高时,这意味着我们可以随机地看到,A和B组之间的差异是很高的概率,仅由于采样噪声。当A/B测试的p值足够低时(低于阈值),我们可以说,随机看到这种差异的可能性很低,我们可以有信心改变我们原来的版本。

如果你关注统计学的世界,您可能已经看到了一些关于更改p值的阈值的争吵;一最近的论文声称,从0.05的阈值移动到0.005将解决科学中的再现性危机并加以解决,好,很多事情。确实,使用p<0.05的阈值意味着20次被骗1次,但最终,使用统计和测量的问题不是p值。问题是我们。如果不仔细考虑上下文和领域知识,我们就不能应用这些阈值,对诚实的承诺(尤其是对自己!)当涉及到p值时。对于A/B测试,我们坚持p值阈值为0.05,但是这些测试必须总是由人类通过理解我们的数据和业务来整体地解释。

什么时候才对A/B测试说不

像Des和我在本文中讨论的那些测试是一个强大的工具,但有时最好的选择是知道何时不运行A/B测试。我们Stack Overflow在考虑少数用户使用的特性和对该特性的潜在改变时遇到了这种情况,我们有其他原因倾向于现状。在这种情况下实现足够的统计能力所需的测试长度不切实际地长,在现实生活中,我们最好的选择就是放弃测试,基于非统计因素做出决定。

“产品思考在这里是至关重要的。有时候,UX的改变明显更好,但是测试需要数月才能达到统计学上的显著性。如果我们确信这些变化与我们的产品战略一致,并为用户创造更好的体验,我们可以放弃A/B考试。在这些情况下,我们可以采用定性的方法来验证想法,例如运行可用性测试或用户访谈来获得用户的反馈,“Des说。“这是一个判决。如果A/B测试对于给定的情况不实用,我们将使用工具箱中的另一个工具来取得进展。我们的目标是不断改进产品。在许多情况下,A/B测试只是我们验证更改的方法的一部分。““

沿着同样的路线,有时A/B测试的结果可能是不确定的,基线和新版本之间没有可测量的差异,要么是积极的,要么是消极的。那我们该怎么办呢?我们经常保留我们特性的原始版本,但在某些情况下,我们仍然决定改变一个新版本,取决于其他产品考虑。

处理数据意味着适应不确定性,而A/B测试使这一现实非常明显。明智地处理不确定性并使用统计工具(如A/B测试)可以让我们做出更好的决策。Des和她的团队已经使用了大量的测试来完成堆栈溢出作业一个伟大的工具,为开发商在市场上寻找新的机会,所以一定要检查一下!!

作者

朱丽亚雪橇
数据科学家

相关条款

评论

  1. 托马斯哈斯拉姆 说:

    感谢您为闪亮的应用程序提供了源代码。顺便说一句,对A/B有很好的概括性介绍。

  2. 克利福德·安德森·伯格曼 说:

    *的确,使用p<0.05的阈值意味着被愚弄了1/20次*

    我讨厌做那个家伙……但这不完全正确。如果你只看空效果,你会被愚弄20次。

    1. 是的,这是公平的。好点。

  3. 我喜欢这个职位,但是下面的文章对权力的定义是误导性的/不准确的。“我们愿意错过真实效果的时间百分比是多少?这是用功率来衡量的。”“

    功率是检测非零效应(即,非零效应)的能力。拒绝错误的无效假设)。讨论的是beta,与权力相反,或者II型错误。我同意,按照我的建议,权力与阿尔法更经常被讨论(在我看来,由于重要原因,但是为什么不为读者更直接地定义权力呢??

    1. 这是个合理的问题。在像我们这样的组织中,我们经常遇到这样的问题。我们如何以最好的准确度和……可理解性来解释这些统计概念?我们关注什么?我不敢肯定这个问题已经解决了。

  4. 伟大的职位。偶尔您可能想对现有的特性进行A/A测试,看看您到底有多少自然变化。这可以帮助设置阈值。

  5. 能不能请你们把这些大家在博客帖子和网站上放的巨大图片丢掉?

  6. 你考虑过A/B测试不只是测量,但是也会影响你的用户?特别地,在某些情况下,我看到一个标签在几分钟内就改变它的内容/位置——老实说,sometimes this was really irritating… 🙂

    1. 马克格雷维尔 说:

      你好;那不是预期的结果,而且从数据上我知道你所描述的并不常见。两种选择,那么:1)你的联系有点奇怪——我很乐意看看,但是需要用户ID(有很多)Bartosz P *系统中的人或者2)实际上与A/B测试没有任何关系,因为其他原因而搬家

      1. 如果您想查看,我的SO用户ID是26422204。我不太在乎,特别是因为这不再发生,但如果你这样做了,解释会很有趣。

  7. 贾斯蒂娜·科尔梅娜 说:

    P值属于所谓的"频率主义者二战前奥地利(弗洛伊德/荣格)*心理学*的领域。数学上,他们缺少了应用的一个步骤,即考虑空假设和备选假设的先验概率,用贝叶斯法则计算后验概率对于给定统计检验拒绝空假设的能力的备选假设,假定一个积极的结果。

    1. 我们已经探讨了是否切换到贝叶斯方法进行A/B测试,并决定暂时反对:http://.ce..org/r/bayesian-ab-test/
      FREQUENTIST ALL THE WAY 😉

      1. 贾斯蒂娜·科尔梅娜 说:

        我不是故意装模作样的“辩论”统计学家使用以未知概率的先前事件为条件的似然比用月球吠声来修正这些先验概率。当然你可以问问自己,是90%的信任水平够了-或95%,甚至98.5%或99%?-但这同样取决于你打算用实验的证据克服的空假设的现有证据有多强-然后我们回到贝叶斯规则,但我们是在隐含地假设先验概率,而不是显式假设巴耶斯人使用。我并不是说那些明确的假设必然会比所谓的隐含假设要好。”频率主义者在任何特定情况下都应采取方法。我只是认为理解并向公众解释在贝叶斯范式下你的频繁实验的结果是很重要的。所有真实世界的实验都是必须的频率主义者,“毕竟。

        贝叶斯方法:我们不知道A或B是否正确。我们平分秋色。然后我们做了一个实验,并且发现我们从实验中得到的结果在情况A中比在情况B中更有可能。因此我们得出结论,事实上A比B更有可能。但是我们必须应用贝叶斯规则和50/50的先验概率来得出这个结论,不管我们是否意识到这一点。

  8. 有时您可能想对现有的特性进行A/A测试,看看您到底有多少自然变化,对A/B有很好的概括性介绍。
    嘿,伙计们!请查看我的第一个致敬页面跑3,,照片编辑

  9. 丹尼尔泰姆金 说:

    我非常喜欢这篇文章,谢谢你写下来。不过我确实有几个问题,关于抽样方法和效应大小.

    1)我看了你的“元堆栈溢出”帖子(https://meta.stackoverflow.com/./337745/are-to-be-a-b-test-some-change-to-top-nav如果我读对了,您从所有访问站点的访问者中随机选择测试组?把样本数量限制在那些有账户的人群中,这样你就可以用过去的行为知识进行测试了,这样会不会更好?否则,如何确定更改的影响,因为你从来不知道来访者的意图??

    2)滥用效应大小尽管如此(我责怪市场营销专业),我感到很奇怪,你选择改变的过程似乎几乎完全是定性的。我很好奇你们有没有试过做ICA?我也对你如何确定最小的情感变化感兴趣,看起来,如果你改变按钮的大小和颜色,你就无法知道是哪一个,如果有的话,改变是否会导致行为上的差异??

    再次感谢你的来信。

  10. 孟加拉国所有教育委员会JSC结果2017PSC结果2017你可以找到我们的网站

  11. A/B测试可以为您提供所需的统计信息和数据,以便做出明智的选择,但是关于如何实现它的混淆是非常常见的。像数字集团(T/DG)这样的优秀IT公司坚持A/B测试的重要性。通过阅读本文,有助于澄清关于这个概念的一些混淆。谢谢分享。

留下答复

您的电子邮件地址将不予公布。需要标记的字段*

这个网站使用Akismet来减少垃圾邮件。了解如何处理评论数据.