前面我们已经介绍了在开始一个A/B实验之前,计算实验所需样本量的方法。
详见:https://blog.csdn.net/weixin_41744624/article/details/109840263

并且还有一个计算样本量的工具,它也内置了计算P值并判断显著
https://www.evanmiller.org/ab-testing/sample-size.html
……………………………………………………………………

判断实验结果是否显著,一般来说有两种方法:

  • 根据经验,你了解实验所关注指标一般的波动范围,而实验组该指标明显超出了一般波动范围,因而你判断实验得到了显著的结果。
  • 通过统计学的公式计算p 值是否小于设定的显著性水平α,从而判断实验结果是否显著的方法。

p 值计算的公式

要计算p值,我们需要先计算Z分数,可以使用统计学里两总体比例假设检验的Z分数计算公式,公式如下:

在这里插入图片描述
转化为:
在这里插入图片描述
而p值和Z分数是可以相互推导的,得到检验统计量Z分数的值,p值就可以通过查统计教材对照表或者用已有工具内置的函数计算(可参考下面Excel部分的计算)。

以下以实验两组各有10000用户参与实验,其中A组3000用户达成了转化,B组3200用户达成了转化为例,来说明判断实验结果是否显著的方法。

对应到上边,即x1=3000, x2=3200, n1=n2=10000

在这里插入图片描述

用在线工具判断是否显著

开头提到有个在线工具可以很方便地帮我们计算A/B实验每组所需的样本量,和计算实验结果的p值以及说明实验结果是否显著,如下图:
在这里插入图片描述
输入实验两组转化数和进入实验用户数,即可得到实验结果是否显著的说明

在Excel中判断是否显著

类似样本量计算,在Excel中也可以计算p值,如下图:
在这里插入图片描述
其中前面4个数值和置信水平都是手动输入的,其余的都是Excel公式自动完成计算。

对照组转化率对应的公式:=C6/C3

实验组转化率对应的公式:=C7/C4

Z分数对应的公式:=(C9-C10)/SQRT((C6+C7)/(C3+C4)(1-(C6+C7)/(C3+C4))(1/C3+1/C4))

p value对应的公式:=IF(C14<0,2NORM.S.DIST(C14,TRUE),2(1-NORM.S.DIST(C14,TRUE)))

是否显著对应的公式:=IF(C15<C12,“显著”,“不显著”)

用R判断是否显著

R中可以直接使用prop.test函数来计算p值。一行代码就可搞定:

prop.test(x = c(3000,3200), n = c(10000,10000), correct = FALSE)

执行后可得到输出结果:
在这里插入图片描述
R中计算A/B实验结果的显著性
R中输出结果显示p-value=0.00223<0.05,可知在显著性水平0.05下可认为两组存在显著差异。

用Python判断是否显著

Python中tatsmodel库可直接计算p值。具体代码为:

from statsmodels.stats.proportion import proportions_ztest as ztest
import numpy as np
​
ztest(count=np.array([3000,3200]), nobs=np.array([10000,10000]))

执行后可得到输出结果:
在这里插入图片描述

图上最后一行的结果,第一个值为Z分数,第2个值为p值,四舍五入后跟前边Excel是一样的值,为0.00223<0.05,从而可知两组存在显著差异,实验结果提升是显著的。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐