朋友圈评论表情包原来只是A/B测试?一文搞懂A/B测试与统计学原理

还记得前一阵子风靡朋友圈的表情包评论斗图吗?

但是从12月24日起,陆续有网友反映微信朋友圈无法评论表情包了。当时就有网友猜测该功能非正式版本,很有可能为A/B测试。

12月25日,微信官方回应表示:“此前,我们对朋友圈评论发送表情包功能进行灰度测试,部分用户更新 7.0.9 版本后可使用。目前,该功能已暂停。”

为什么有的用户还可以用表情包,而有的用户就不能用了呢?这其实就是A/B测试。



A/B测试是什么?

与微信这次的测试类似,假设我们的网站有一个落地页。关于详情按钮,设计团队偏向绿色,而产品经理则主张蓝色。双方对他们的选择都有强烈的看法。 谁来决定? 选择是否正确?

根据范冰在《增长黑客》一书中的介绍,A/B测试,简单说来就是针对想调研的问题提供两种不同的备选解决方案(比如两个注册页面),然后让一部分用户使用方案A,另一部分用户使用方案B,最终通过数据观察对比确定最优方案。


单变量

A/B测试的所有步骤都要遵循单变量的思想,比如

1.将测试用户随机分为两部分

2. 测试要在同一时间进行

想像一下,如果我们要测试游戏注册按钮蓝色绿色孰优孰劣。蓝色版本在周一周二测试,绿色版本在周六周日测试,测试的结果是绿色按钮点击率更高。但是,由于周末游戏用户活跃度原本就比较高,测试结果很有可能受到了时间因素的影响。



步骤

A/B测试不是一次性的试验,而是一个不断【设定目标】-【提出假设】-【变量修改】-【运行试验】-【衡量结果】的一个循环过程

目标:目标是用于判断哪个版本更好的量化指标。

假设:生成A/B测试的假设。

变量:确定单一变量,对网站当前版本的该变量进行所需的更改。

试验:网站的访问者将被随机分配到两个版本,并收集相应的数据。

结果:通过假设检验与置信区间来分析收集到的数据,得出结论。



统计学原理

从原理上看,A/B测试通过抽取样本来估计总体,在上面的例子中:

样本 是随机抽取使用该版本的用户的点击动作(0或1)
总体 是(如果网站全面改版)所有使用该版本的用户的点击动作(0或1)

但这样就足够了吗?如果我们最后得出的结果是A版本点击率5%,B版本点击率5.2%,B版本一定就是更好的?事实上这很有可能只是由抽样误差引起的。

这时我们就需要通过 假设检验 对结论进行数据支撑



假设检验

针对具体业务问题,我们可以将其提取成统计问题。以新旧哪个版本的点击率更高这个业务问题为例,假设检验的步骤如下

1. 提出假设

将新版本的点击率写成p1,旧版本的点击率写成p2
H0:p1=p2
H1:p1>p2
原假设H0是新旧版本点击率没有差异,备选假设H1是新版本点击率高于旧版本。
如果有足够的证据去拒绝原假设H0,我们就可以得到 p1>p2 的结论。

2. 确定显著性水平a

提前设定一个比例。如果测试结果出现的概率低于这个比例,我们就有足够的理由拒绝原假设H0。一般取5%。

3. 确定检验统计量

为了计算测试结果出现的概率,我们需要一个已知概率分布的统计量。一般对比双样本转化比率差异用z统计量,z服从标准正态分布。
                                    Z := \frac{p_1^\prime-p_2^\prime}{\sqrt{p^\prime(1-p^\prime)(\frac{1}{n_1}+\frac{1}{n_2})}} \sim N(0,1)

4. 根据样本计算统计量及p值

我们通过试验得到了该统计量的值。由于已知其概率分布,我们能算出“出现比试验结果更极端情况”的概率,即p值。

5. 得出结论

如果p值小于我们之前设定的显著性水平,我们就有足够的证据拒绝H0假设,即新版本点击率比旧版本高
如果p值不小于我们之前设定的显著性水平,我们没有足够的证据拒绝H0假设,即新旧版本点击率没有明显差别



统计量

统计量z是怎么来的呢?为什么z服从标准正态分布?

首先要明确一点,我们对比两个版本的点击率,就是在进行双样本比例假设检验,因为我们有两个总体。

首先是单总体比例假设检验

假设我们有随机变量 (xi), i=1,...,n,xi\in{0,1},0代表失败,1代表成功
那么xi服从伯努利分布,xi~Bernoulli(p),p为总体比率
根据伯努利分布定义,xi的期望为p, xi的方差为 p(1-p)

现在我们考虑  p^\prime = (\sum^n_{i=1} x_i)/n
p' 的期望是 n*E(x)/n = p
p' 的方差是 n*var(x)/n^2 = p(1-p)/n

现在我们考虑统计量 Z := \frac{p^\prime-p}{\sqrt{\frac{p(1-p)}{n}}}
根据中心极限定理,不论xi服从什么分布,当n趋向无穷时,Z都服从标准正态分布

然后是双总体比例假设检验

首先我们有原假设 H0: p1=p2

如果 xi~Bernoulli(p1) 来自总体1,yi~Bernoulli(p2) 来自总体2,x之间iid,y之间iid,x与y独立  p_1^\prime = (\sum^{n_1}_{i=1} x_i)/n_1 , \quad p_2^\prime = (\sum^{n_2}_{i=1} y_i)/n_2
p1' 期望为 p1,方差为 p1(1-p1)/n1
p2' 期望为 p2,方差为 p2(1-p2)/n2

因为在H0假设下 p1=p2:=p
p1' - p2' 期望为 p1-p2=0
p1' - p2' 方差为 p(1-p)(1/n1+1/n2)

由于 p1=p2=p 未知,我们用样本统计量 p'=(n1*p1'+n2*p2')/(n1+n2) 来代替 p

根据中心极限定理
Z := \frac{p_1^\prime-p_2^\prime}{\sqrt{p^\prime(1-p^\prime)(\frac{1}{n_1}+\frac{1}{n_2})}} \sim N(0,1) 服从标准正态分布



Python代码实现

在这个模拟例子里,我们分别在两个版本抽取了1000个样本

版本1获得237个点击,点击率为23.7%
版本2获得195个点击,点击率为19.5%
Z统计量为2.28,p值为0.0112<0.05

所以我们得出结论,版本1点击率显著高于版本2



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2 A/B测试介绍 公司希望测试新特性或某个网页页面的版本时, 通常使用的方法叫做 A/B 测试 , 这种方法的原...
    IntoTheVoid阅读 1,652评论 0 3
  • A/B-test解读 A/B-test是为同一个目标制定两个方案,在同一时间维度,分别让组成成分相同(相似)的用户...
    敢敢宝宝阅读 2,559评论 0 9
  • 曾几何时,我们抱着一个AB测试的异常数字欣喜若狂,又在下一次测试的效果反转中怅然若失,最终于数据波动中浮浮沉沉,一...
    Mr墨叽阅读 431评论 0 2
  • 《R语言与统计分析》的读书笔记 本书的重点内容及感悟: 第三章 概率与分布 1、随机抽样 通过sample()来实...
    格式化_001阅读 6,782评论 1 12
  • 冬天还是来了,不管你是否期待它的的临近,它就这样,带着寒风夹着细雨轰轰烈烈的朝我—一个惧怕冬天的孩子,驶来... ...
    2005莫失莫忘阅读 116评论 0 1