和#34; A"优于" B"使用泊松分布

时间:2017-03-03 09:50:52

标签: python pandas numpy scipy statistics

背景

我正在为两个广告系列进行A-B测试。

我为这两个广告系列设置了三个步骤漏斗。

到目前为止,B似乎比A更好,但我怎么知道什么时候我收集了足够的测量点?

渠道步骤

在下面的数据中,有三个步骤。 Step_1是到达我们注册页面的用户数。

Step_2是填写我们注册表单的用户数

Step_3是确认其电子邮件地址的用户数。

问题

如何计算A优于B的可能性,反之亦然?

或更有说服力:

鉴于"无限量的病例"其中我们有A:6和B:步骤3中的8个观察值和A的Step_1的转换率:12.5%和B:13.333 ...%。在这些案例中,有多少案例A的转换率高于B,反之亦然?

    Step_1  Step_2  Step_3
A   144.0   18      6
B   135.0   18      8

原理

  • 每个通过渠道的用户都不会受到其他用户的影响。
  • 每个用户都无法通过前一个步骤进入下一步。
  • 每个用户要么停在一个步骤,要么继续下一个步骤。每个独立观察只提供两个选项

这意味着可以使用二项分布来预测用户转换到下一步的可能性。

到目前为止我尝试了什么

到目前为止,我尝试过使用泊松分布

from scipy.stats.distributions import poisson

使用poisson.ppf以某种方式我可以说" A优于B的可能性为5%,B优于A的可能性为25%。"

当然,我可以在函数中插入一些值,然后去#34;嘿,看起来很棒"但我觉得我需要掌握Stack Over Oflowles of Stack Overflow的丰富知识,以确保我能做出统计上合理的事情。

为什么Poisson

我对分布的谦虚理解:

泊松分布与二项分布(scipy.stats.binom)非常相似,但更适合于涉及少量观测的预测,而不是binom大哥。

泊松分布是 a 二项分布,因为它断言了两种可能的结果

二项分布是我想要使用的原因是因为在我的模拟场景中有两个结果,用户沿着漏斗进行,或者用户退出。这是 bi 名词中的 bi

泊松分布基于两个观测值不能相互影响的假设。所以user_1或者不是step_3,step_2或者只是step_1,对于user_2来说无关紧要。情况非常如此,他们不知道彼此的存在。

1 个答案:

答案 0 :(得分:1)

从数学上讲,二分法在这种情况下比泊松更精确。例如,使用Poisson,您将获得18个候选人中超过18个进行转换的正概率。 Poisson因其更容易计算而受欢迎。

结果还取决于您之前的知识。例如,如果您的结果与典型的转换率相比看起来非常高,那么在其他条件相同的情况下,您看到的差异就会更大。

假设没有先验知识,即如果你不知道其他任何事情,假设每个转换率在0和1之间是相同的,那么一旦你考虑到你的观察,给定转换率的概率 r Beta distribution给出了18种可能的转换中的6种,在本例中为Beta( r ; 6 + 1,18-6 + 1)

从技术上讲,这不是概率,而是似然。不同之处如下:概率描述了如果你比较平行宇宙"你会观察不同结果的频率。虽然信誉良好的统计人员可能不会使用该术语,但它们是完全相同的。另一种可能性是相反的:给定一个比较不同宇宙的固定结果,你多久会观察一种特定的宇宙。 (为了更加技术化,这个描述只有完全正确,如果我们做了"平坦的先前"假设。)在你的情况下有两种宇宙,一种是A比B好,一种是其中B优于A。

那么B优于A的概率是

integral_0 ^ 1 dr Beta_cdf(r; 6 + 1,18-6 + 1)x Beta_pdf(r; 8 + 1,18-8 + 1)

您可以使用scipy.stats.betascipy.integrate.quad来计算,并且您获得的概率为0.746,B优于A:

quad(lambda r: beta(7, 13).cdf(r) * beta(9,11).pdf(r), 0, 1)
# (0.7461608994979401, 1.3388378385104094e-08)

总之,通过这种方法,B优于A的证据不是很强。

<强>更新

两步案例可以在概念上类似地解决,但计算起来更具挑战性。

我们有两个步骤135/144 - &gt; 18 - &gt; 8 / 6.鉴于这些数字,A和B以及第1步和第2步的转换率如何分配?最终,我们对A和B的步骤1和步骤2的产品感兴趣。因为我无法在合理的时间内解决积分问题,所以我又回到了蒙特卡罗方案。只需用适当的概率N = 10 ^ 7次绘制转换率,并计算B比A更好的频率:

(beta(9,11).rvs(N)*beta(19,118).rvs(N) > beta(7,13).rvs(N)*beta(19,127).rvs(N)).mean()

结果非常类似于单一步骤:0.742支持B.再次,不是非常有力的证据。