A/B测试
AB测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组(目标人群)随机的访问这些版本,收集各群组的用户体验数据和业务数据,最后分析、评估出最好版本,正式采用。
为什么要进行A/B测试
1.产品的新功能对KPI影响有多大?
- 新版本哪个更好,按钮。。。
- 产品对KPI的影响有多大
2.什么时候适合进行A/B测试
- 决定是不是要使用新的产品设计和功能
- 新的产品和功能对我们的数据指标有多大的影响
- 通过真实数据和理论的比较,更好得了解用户
3.什么时候不适合进行A/B测试?
- 没有清晰的对照组
- 公司LOGO
- 很难获得用户的数据或者测试时间过长
4.A/B测试的基本统计学知识
假设检验
简单来说,就是要我们观察到的两组数据的差异,比偶然差异
大得多,我们就认为两组之间的差异是真实存在的。
原假设和备择假设
原假设(H0):两组没有差异
备择假设(Ha):两组有差异
- 当出现第一类错误时,可能导致错误上线一些无效策略,增加了
系统复杂度
原假设为真,不拒绝原假设,实际上两个版本没有任何区别,实验结果认为有差别,对产品功能进行改变,导致决策错误 - 出现第二类错误时,则可能会错过某些真正有助于体验提升的
有效策略
备择假设为真,接受原假设。实际上两个版本有区别,但是实验结果认为版本没有差别,没有投放版本更好的功能 - 第一类错误更严重,增加错误决策复杂度。第二类错误最坏就是保持原状。
置信水平、P值和统计功效
置信水平:可以接受的第一类错误发生的概率(自行规定,一般0.05)
P值:实际情况中第一类错误发生的概率,小于置信度时显著
统计功效:1 - (第二类错误发生的概率),一般0.8
5.设计A/B测试一般步骤
案例: 某公司准备新上线了一款夏日防晒外套,两个运营同事为选
择该外套的搜索结果主图产生了争论。
业务方找到你,希望你能够针对这两个不同的主图做一个AB
测试
第一步:确定目标及假设
- 目标
通过进行AB测试来实验更换产品主图对我们核心数据指标的影响 - 原假设:更换产品主图不会对搜索结果的点击率有影响
- 备择假设
- 把产品主图换成展示模特搭配的图片,能够增加搜索结果的
点击率 - 部分增加的点击量能够进一步转化成购买
- 点击量的增加在移动端更加明显
第二步:确定数据指标
- 核心指标
- 点击率:点击量/搜索结果展示量
- 购买率:有效订单/点击量(访客)
- 交易额
- 用户行为相关的数据指标
- 跳出率
- 页面访问时长
- 回访率
- 产品分享
第三步:确定最小提升值
这个数字最终会让我们决定我们需要多少测试多少用户及测试多长时间
- 当前点击率:5%
- 新版本可以接受的最小点击率:5.5%
我们要确保能够测试到足够的用户来观测到10% 的提升
第四步:计算测试的用户数量以及测试时长
理论上,样本量越多越好
当样本数量很少的时候,测试的结果不稳定,难以得出确信的结
论。
工作中,样本量越少越好
小公司流量有限; 试错成本大
网上有很多样本数量计算器,需要我们提供原始版本的数据
(通常是转化率)和统计显著性(一般是95%),有些计算器会
需要我们提供统计效力(一般是80%),然后就可以计算出我
们所需要的样本数量。
根据所需要的样本数量 & 测试网站/APP的日流量,就可以
计算出AB测试的时长。
其中n是每组所需样本量,因为A/B测试一般至少2组,所以实验
所需样本量为2n;
α和β分别称为第一类错误概率和第二类错误概率,一般分别取0.05和0.2;
Z为正态分布的分位数函数;Δ为两组数值的差异,如点击率1%到1.5%,那么Δ就是0.5%;
σ为标准差,是数值波动性的衡量,σ越大表示数值波动越厉害。
从这个公式可以知道,在其他条件不变的情况下,如果实验两组
数值差异越大或者数值的波动性越小,所需要的样本量就越小。
6.如何对A/B测试的结果进行分析
- 数据可靠性检查
检查一些不应该因为AB测试而产生变化的指标,如果这些指标发生了变化的话应当进一步查证这些变化的原因 - 显著性检验
如果结果显著:全局实施新的版本如果结果不显著:进行进一步的分析,比如对用户进行维度上的细分,着重关注有没有辛普森效应; 检查测试的设计是不是有问题
7.A/B测试里的坑
- 不要以全概偏
当我们做了一次A/B测试后,发现试验版本的数据结果并不
理想,于是就认定所有的地区或渠道的效果都是负面的,这
是典型的区群谬误。
在这个概念中,认为群体中的所有个体都有群体的性质。但
如果仅基于群体的统计数据,就对其下属的个体性质作出推
论,那么得出的结论往往是不准确的。
- 在谷歌和火狐浏览器表现都很好,在IE浏览器表现不好,可能是因为IE插件没更新,版本问题
- 如果因此给出B版本表现并不好的结论,有可能错过在谷歌和火狐的提升
- 不要因为观测到P值显著就提前结束测试
试验给出的p-value值是基于认为你设计的试验是已知样本和效应大小的,所以单纯使用p-value作为停止试验的准则是不太正确的。以及,如果你持续的监控试验的发展和p-value,就比较容易看到真实的效果。
- 有可能是某一天的特殊情况
- 也有可能是样本量过小
- 辛普森悖论
案例1: 假设我从医生处得知自己得了肾结石,该医生向我展示了两种疗法效果的对比数据。疗法A为开刀手术,疗法B为微创手术。
两种疗法效果对比如左图:
A疗法 | B疗法 | |
---|---|---|
患者人数 | 350 | 350 |
治愈成功率 | 83% | 75% |
从两组数据对比结果来看,我似乎应选择疗法B,因为其成功率更高。
但为了谨慎起见,我又咨询了一位医生。第二位医生向我展示了从同一个疗法实验中得出的另一种数据对比结果:
A疗法 | B疗法 | |
---|---|---|
小结石 | 87%(234/270) | 93%(81/87) |
大结石 | 69%(55/80) | 73%(192/263) |
据该医生解释,肾结石只分为小结石和大结石,没有中等大小的结石。而根据以上数据对比结果,他推荐使用疗法A,因为无论是治疗小结石还是大结石,疗法A的成功率都更高。
面对两个矛盾的测试结果,我应该选择哪种疗法呢?
正确的答案是B疗法!
为什么在第二个实验中B疗法对于大结石和小结石的治愈率均高于A,但是整体的治愈率却低于A疗法呢?仔细观察这组实验数据的话,我们不难发现数据的两个特征:
- 不管用什么疗法,大结石的治愈率都比小结石的治愈率低
- A疗法更常被用于小结石,而B疗法更常被用于治疗大结石
综上所述,当我们把整体数据结合起来的时候,同样的整体样本数量中,B疗法被大量用于治愈率较低的大结石,因此B疗法的整体治愈率被拉低了
案例2:辛普森悖论的其他案例
一所美国高校的两个学院,分别是法学院和商学院,新学期招生。人们怀疑这两个学院有性别歧视。两个学院的统计数据如左边表格所示,女生的录取率在两个学院均高于男生的录取率。
但是将两组数据结合在一起后,女生反而有着更低的录取率。
这个例子的数据特征和之前的例子相似:
- 录取率在两个学院之间有差别
- 男生和女生申请不同的学院的比例也有很大差别
因为男生更愿意申请录取率更高(相对于商学院来说)的法学院,从而拉升了男生的整体录取率
两个学院的总体录取率
录取 | 拒收 | 总数 | 录取比例 | |
---|---|---|---|---|
男生 | 209 | 95 | 304 | 68.8% |
女生 | 143 | 110 | 253 | 56.5% |
商学院
录取 | 拒收 | 总数 | 录取比例 | |
---|---|---|---|---|
男生 | 8 | 45 | 53 | 15.1% |
女生 | 51 | 101 | 152 | 33.6% |
法学院
录取 | 拒收 | 总数 | 录取比例 | |
---|---|---|---|---|
男生 | 201 | 50 | 251 | 80.1% |
女生 | 92 | 9 | 101 | 91.1% |
- 选择样本时要注意网络效应
网络效应是指样本和样本间存在某种联系,不在是互相
独立的样本,造成我们的测试结果不够准确。
例如,对Facebook用户群体活跃度测试,A群体中是否有一些人是B群体中的好友,两个群体之间是有正向或者负向影响的 - 在测试途中污染控制变量
如果在测试途中我们发现控制变量收到污染,应当停止
测试并依据具体的情形重新定义实验假设,重新测试 - 进行A/A 测试保证流量的可靠性
通过在正式A/B测试前进行A/A测试来观测被选中的流量是不是有偏差
在进行测试之前对两组变量进行差异分析,确保差异是AB测试的原因导致的
8.在A/B测试中如何避免辛普森悖论?
- 想要避免辛普森悖论,最主要是要对AB测试进行科学的流量分割,保证试验组和对照组里的用户特征是一致的,并且都具有代表性,可以代表总体用户特征。
- 在AB测试的设计上,如果我们觉得某两个变量对测试结果都有影响,那我们就应该把这两个变量放在同一层进行互
斥试验,不要让一个变量的试验动态影响另一个变量的检验。如果我们觉得一个试验可能会对新老客户产生完全不
同的影响,那么就应该对新客户和老客户分别展开定向试验,观察结论。 - 在AB测试结果的分析上,我们需要对结果进行多维度细分的对比。除了总体对比,也看一看对细分受众群体的试验
结果,不要以偏盖全,也不要以全盖偏。一个版本提升了总体活跃度,但是可能降低了年轻用户的活跃度,那么这个
试验版本是不是更好呢?一个试验版本提升总营收0.1%,似乎不起眼,但是可能上海地区的年轻女性iPhone用户的
购买率提升了20%。