以后文章更新会先在微信公众号(公众号名:输出ING),欢迎大家来关注。

前面我们已经介绍了在开始一个A/B实验之前,计算实验所需样本量的方法。这篇文章Jeff 将介绍下,实验做完后,如何判断实验结果是否显著。

判断实验结果是否显著,一般来说有两种方法,一种是根据经验,你了解实验所关注指标一般的波动范围,而实验组该指标明显超出了一般波动范围,因而你判断实验得到了显著的结果。

显而易见,根据经验判断不够严谨,所以Jeff推荐使用第二种方法,即通过统计学的公式计算p 值是否小于设定的显著性水平α,从而判断实验结果是否显著的方法。

类似前面计算实验所需样本量,本文也仅讨论比例类指标A/B实验结果显著性判断问题,如果是均值类指标的A/B实验结果显著性判断不在本文讨论的范畴。

p 值计算的公式

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

A/B实验显著性计算之Z分数

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

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

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

A/B实验比例类指标sample data

用在线工具判断是否显著

上篇文章有提到有个在线工具可以很方便地帮我们计算A/B实验每组所需的样本量,不仅如此,其实它还可以帮我们计算实验结果的p值以及说明实验结果是否显著,如下图:

在线计算A/B实验结果是否显著

输入实验两组转化数和进入实验用户数,即可得到实验结果是否显著的说明。(点本文文末阅读全文可进入该页面)

在Excel中判断是否显著

类似样本量计算,在Excel中也可以计算p值,如下图:

在Excel中计算实验显著性

其中前面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,2*NORM.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,从而可知两组存在显著差异,实验结果提升是显著的。

6 Thoughts on “A/B测试系列文章之怎么判断实验结果是否显著

  1. 博主你好,对于非比例类的指标该怎么计算Z分数呢?比如判断ROI的指标是否显著

  2. 老师您好,想请教一下,这篇文章里面,Z的计算公式是如何推导出来的呀?

  3. Pingback: A/B测试系列文章之A/B测试背后的科学原理 – Jeff的数据科学笔记

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Post Navigation