聊一聊AB测试实验结果分析

从事互联网工作的同学,对“AB测试”概念一定不会陌生,如果你觉得陌生,建议换一家互联网公司看看。
AB测试流程上看,可简单分为三部:

  • 用户筛选
  • 实验策略
  • 结果分析

前两部有比较标准的实现流程。
用户筛选:比如账号随机、人群画像分层筛选的
实验策略:一般会涉及一个实验系统

前两步功能可能工程实践多一些,暂不讲述,今天讲讲——结果分析。

假设你对一个app首页做了一个瀑布流优化,你拿到实验组、控制组(参照组)的CTR数据,“假设检验”流程如下:

  • H0:实验组CTR<=参照组CTR
  • H1:假设不成立,实验有效
  • P值:0.05

我们可以得到实验组、参照组的均值方差,我们假定人数够多的情况下,是符合正态分布的,所以上述描述,可以转化为:
1、随机抽取足够大的两组用户,分别统计CTR,求差值:
ctr_diff = 实验组CTR - 参照组CTR
ctr_diff 显然是符合正态分布的

2、根据 ctr_diff,我们可以假设全局正态分布的均值0,方差=ctr_diff的方差
3、所以根据1、2,可以计算得到p值

p值小于0.05,你会选择上线新的瀑布流优化版本。流程上是OK的,但是可能存在问题。

1、CTR高是否核心业务贡献就高,比如停留时长呢?支付转换呢?
2、实验的时机,是否会出现人群偏差,比如寒暑假,自然学生人群占比可能多一点(年龄分布抽样可以解决部分问题)
3、老用户的守旧倾斜(不接受新的变化),是否对结果有“否定作用”

所以,你可能不能只选择CTR,首选,我们衡量的指标是多元化的,可以选择对业务KPI相关的核心指标进一步佐证。
多指标的操作流程是:

  • 每组假设检验
  • 每组验证p值

多组检验验证p值=0.05 是不合适的,容易产生type I error(阿尔法错误,“冒进”错误)
所以Bonferroni提出了一种Bonferroni校正方法(Bonferroni Method),即一种降低p值的再检验方法:

  • p值/指标数量

Bonferroni校正方法是一种较为严格的方法,如果能够拒绝原假设,那就放心上线吧。但是,宁愿错杀也不接受的,可能犯了type II error (贝塔错误,"保守"错误)
Holm 提出了一种改进方法,较为融合,也即改进p值的对比方法,可参考:Holm–Bonferroni_method

  • 最小的p值和p值/指标数量,第二小的p值和p值/(指标数量-1)比较,以此类推
聊一聊AB测试实验结果分析