你的A/B测试结果真的靠谱吗?

曾几何时,我们抱着一个 AB 测试的异常数字欣喜若狂,又在下一次测试的效果反转中怅然若失,最终于数据波动中浮浮沉沉,一声嗟叹,蹉跎半生~

之前在《增长策略:如何用 AB 测试进行活动评估及优化?》一文中,我们谈到了如何用 AB 测试评估活动的效果,但是 AB 测试中隐藏着大大小小的坑,比如:样本的数量就会严重影响到实验结果。
那么,我们又该如何评估 AB 测试的结果是否可靠呢?

知识点 1:抽样分布

在回顾知识点的时候,大家不要慌张,让我们循序渐进,用讲人话的方式来重新认识课本上这些晦涩难懂的公式定理。
在讲抽样分布之前,我们先来复习一下,什么是随机抽样。
通俗一点来讲,比如:要统计北京 180cm 以上的人口占比,因为总体的量级很大,我们无法挨家挨户去观察记录,因此一般都采用随机抽样的方法。
我们可以在北京的路边闭着眼睛随机抓 100 个人,这 100 个人就是随机抽取的样本,然后再记录下 180cm 以上的人群占比,发现是 20%,而这个 20% 就是我们抽样统计的结果。
那么,抽样分布又是什么呢?
先看看百度百科的解释:以样本平均数为例,它是总体平均数的一个估计量,如果按照相同的样本容量,相同的抽样方式,反复地抽取样本,每次可以计算一个平均数,所有可能样本的平均数所形成的分布,就是样本平均数的抽样分布。
沿用上面的例子,我们继续闭着眼睛抓人,一共抓了 1000 组人,每组都有 100 个,接下来,我们统计一下各组 180cm 以上的人群占比,把最终得到的 1000 个占比数据排到一起,发现有 100 个 19%,200 个 20%,100 个 21%……
根据数据,我们画出了下面这张图,这张图就是我们占比的抽样分布图。

根据一些其他知识,我们知道,这其实是一个伯努利试验,也就是经典的抛硬币试验,结果只有两种,当重复的次数足够多的时候,其分布近似正态分布,这里最中间的数值 p=20% 就是该抽样分布的均值,而 p*(1-p) 就是该分布的方差。

知识点 2:假设检验

基于抽样的结果,我们可以大致估计出总体差不多也这样儿,但单独某一次的抽样不能完全代表总体,毕竟我们抽了 1000 组人,很多组的占比结果都不一样,甚至有的样本组占比差异很大。
书归正传,我们在做 AB 测试的时候,其实是假想有同一拨儿人,存在于多个平行宇宙,我们在每个平行宇宙的总体用户中随机抽出一组人参与不同的实验,最终其实是用这几个样本组的差异来预测平行宇宙不同总体之间的差异。

讲的有点玄乎了,说白了,我们最终要做的事就是来判断,将哪个实验方案推广至总体用户后效果最好。
但我们不可能按照同样的实验条件反复做几百次,所以这几个样本组的结果是否能代表总体?他们之间的结果差异是否能反应这几个总体的真实差异呢?
为了验证这一点,我们就要用到假设检验了,假设检验说到底无非就两步,第一,先提出假设,第二,进行检验,看假设是否成立。
那么,我们可以首先提出这样一个假设:H0:两个组其实没啥差别。
我们所做的 AB 测试其实都属于伯努利试验,当样本量足够大的时候,根据中心极限定理,其抽样分布都近似于正态分布,那么做假设检验的时候我们就应该用 Z 检验,话不多说,先上公式:

其中:

  • x1,x2 是样本 1,样本 2 的平均数;
  • S12,S22 是样本 1,样本 2 的方差;
  • n1,n2 是样本 1,样本 2 的容量。

计算完 Z 值后,比较计算所得 Z 值与理论 Z 值,依据 Z 值与差异显著性关系表作出判断,具体如下:

应用题

看到这里多少会有点懵,但至于中心极限定理是啥,Z 检验又是啥,为什么用这个公式,置信度是啥,都不用太关心,我们只需要结合常识来看看,这个 Z 值的公式蕴含着什么意义。
如果我们要验证两种不同活动方案的效果差异,首先随机抽取用户分成 AB 两组,其中 A 组人数为 n1,B 组人数为 n2。然后对两组用户施加不同的活动干预,最后得到两组用户的转化率分别是 p1 和 p2,那么对应的方差就应该是:

  • S12=p1*(1-p1)=p1q1
  • S22=p2*(1-p2)=p2q2

最终,这个公式就变成了:

根据 AB 测试的常识我们知道,参与实验的每个组的人数,也就是 n1 和 n2 应该足够大。
想象一下,当 n1 和 n2 都非常大,甚至接近正无穷的时候,这个公式的分母会趋近于 0,p1 和 p2 但凡有一点点差异,这个 Z 值都会非常大,Z 检验的结果也会非常显著。而如果样本量 n1 和 n2 不是很大的话,那么就需要 p1 和 p2 的差值足够大,才能保证结果的显著性。
这也就是为什么很多时候,在小样本的 AB 测试中,会出现对照组转化率略高于实验组的原因,如果要引入 Z 检验的话,最终的判定结果多半都是不显著。
我们以实际的例子来看一看,做 AB 测试的检验时,应该怎么用。
假设我们有两个实验组,分别施以不同的活动策略,两组的相关指标数据如下:

通过上述的公式,我们可以计算得到:Z=1.66 因此,虽然组 2 的转化率是组 1 的两倍,但 Z 检验的结果表明两组的差异并不显著。
于是,我们又为组 2 补了 100 个用户,发现组 2 的转化率仍能保持在 10%,按照组 2 的样本量为 200 个,转化率 10% 来重新计算 Z 值发现:Z=2.34>1.96
证明实验结果显著,两种活动方案的转化率有明显差异,说明如果把方案 2 推广至总体用户的话,其转化效果会明显优于方案 1。
到这里我们已经可以证明 AB 测试结果的显著性了,通过 Z 检验,我们能判断数字表面上显现出的差异是否可以反应总体真实的差异。
我们可以验证方案 2 确实优于方案 1,但是方案 2 的转化率是否真的可以达到方案 1 的两倍呢?这还需要引入另一个概念,那就是置信区间,下次有机会再做分享。
好了,今天的墨叽小课堂就磨叽这么多了,下回某一时间,我们相见随缘。
 
作者:Mr. 墨叽,公众号:墨叽说数据产品