A/B测试的三要素
A/B测试是产品运营中常会用到的一种方法,通常是基于“如果改变某变量,那么目标指标会有改善”
这样的假设。
A/B测试主要考虑三要素:
变量 样本 时间
变量
变量来自于假设,以及衡量试验效果的指标。
如果改动变量X,那么指标Y会发生变化
,这背后的含义包括:
把Y视为因变量,X是自变量,那么意味着X和Y是高度关联的(不一定是因果关系); 变量X是可以操作的,即可以通过产品策略或者运营活动等使其发生改变;
在“变量”这个维度下,主要关注:
效果评价指标 试验操作变量 控制(匹配)变量 场景筛选变量 分组随机变量
效果评价指标
用来衡量在产品或者运营上做出改动后的效果的变量(上面提到的因变量Y),可以是单个变量,也可以多个,e.g.转化率、点击率、交易额等。
需要注意的是,这个评价指标是要在AB测试开展前就需要想好的。
试验操作变量
即组间差异的变量,e.g. A组用户不发红包,B组发放5元红包,C组发放10元红包,那么试验变量就是红包金额;
一般情况下,试验中的ABC组中有一组是作为参考基线(baseline),通常“基线组”是“不做操作”的,因为要区分“自然变化量”和“人为改变量”,基线组试验前后发生的变化可以理解为“自然变化量”,而真正进行了干预的其他组别发生的变化量,要减去这个“自然变化量”后才能得到“人为改变量”。
控制(匹配)变量
会影响效果评价指标的其他变量,这类变量需要在基线组和操作组中进行匹配,否则试验出的差异可能是由这些变量引起,e.g.是否新老客、会员等级、优惠偏好等;
场景筛选变量
做A/B测试一般不是面向所有用户,而是针对于特定的业务场景,e.g. 优化新客在android系统上的某注册环节以提升注册成功率
,那么这个假设对应的业务场景就有两个筛选条件:用户状态 == '新客' & app操作系统 == 'android'
,这些用来圈定业务场景的变量也可以称为“场景定位变量”。
分组随机变量
也就是决定用户随机分组的那个变量,这类变量通常是具有随机性的独立变量(和上面的那些变量没啥关系),比如cookie_id、设备ID,或者其他具备随机性和独立性的数字串(e.g. 试验期间首次访问应用的时间转码),通过判断奇偶数来划分试验组。分组也可能是3组以上的,比如可以计算数字ID求3的余数。
实际操作中,上面提到的控制(匹配)变量和分组随机变量会一同参与到“随机分组”的过程。
假设现在需要控制(匹配)的变量只有性别
且所有用户的性别都是已知的。设男女比例是7:3
,每组用户量是1000人(达到统计显著所需样本量),一共两组,那么可以类似分层抽样先选定了符合业务场景的男性用户1400名及和女性用户600名,然后通过设备ID对两组用户进行随机分组,然后得到的4个小组归并为两组(700名男性用户+300名女性用户),这样在性别上就匹配好了。
当控制(匹配)变量不止一个的时候,就需要分多个层来抽样了,道理基本相通。变量的取值有离散值或者连续值两种,遇到连续值的控制变量,也可以分箱转化为离散值然后做分层。
样本
在“样本维度”上通常关注业务筛选条件
以及样本量
。
业务筛选条件
上面已经提到了A/B测试是面向具体的业务场景的,所以在业务上会做限定,上面提到的“场景筛选变量”本质就是筛选业务场景。
通常业务场景可以从“人货场”3个维度去限定:
人(用户) :具有什么属性的用户才是本次试验关注的目标? e.g.属性特征、行为特征、交易特征等; 货(商品) :这里是指广义上的商品,可以是实物,也可以是服务或者内容(e.g.视频、文章之类),对“货”的圈定,可以是通过用户行为来筛选,e.g.用户在商详页停留了10秒以上但未购买的SKU,也可以是商品自身的属性,e.g. 所属品类(栏目)、品牌等级、价格、差评率、优惠度等; 场(渠道) :可以是业务的入口终端,e.g.PC\app\小程序、android\ios等,也可以是业务环节等,e.g.注册环节、支付页面等;
样本数量大小
样本量上首先是要保证能达到统计效力,以确保组间差异在统计意义上是显著的(而不是随机误差造成)。
要计算样本量大小,可以借助样本量计算在线工具[1],根据统计公式来反推也可以。
此外,还要注意转化率,用户从进入产品一路到达试验关注的环节可能要经过层层“转化”,如果试验配置的时候入口的用户量和试验所需的样本量是不一样的,e.g. 试验所需的样本量为2000,但是从访问到达试验环节的转化率为10%的话,那么从访问层圈定的用户实际上是2W人,如果A/B测试平台能直接配置到对应的业务环节就不用担心这个问题。
时间
第三个要素是时间,主要关注“开始时间”和“结束时间”。时间的颗粒度,方案赛马。
开始时间
什么时候开始?一般情况下,要避免重大产品运营事件,e.g.节假日、大促活动、产品发版日等。
当然,作为用户,可能不太能接受——正用着app,页面刷着刷着突然就大变样了——所以,从更细的时间颗粒度上来看,一般是用户夜间访问量最低谷的搞这种操作。
持续时间
持续时间主要考虑:
在一定时间内收集足够的样本,因为每天到访的符合试验条件的用户量可能会很少,比如新客、复购的老客等,e.g.总样本量需要1W,每天符合条件的用户有1K,理论上试验要持续至少10天; 用户行为的稳定性,比如“新奇效应”——产品改版后首次使用行为和后续的行为可能存在差异——相对于原版是有提升还是没啥差别?还有就是“学习效应”,比如刚开始用华为手机的时候和旧手机的操作方式差异很大,但是用惯了之后,玩得比以前还溜,但是不能以用户“正在学习”时的状态和“已经毕业”的状态来对比(旧的熟悉的版本就好比“毕业”状态),一般以用户掌握并适应某种行为的状态定义为“成熟”的行为。 不同用户回流周期不一样 ,这个实际上是用户群结构的问题,假设现在的产品功能改动是面向所有老客,因为产品的属性,老客的回流周期差异可能会很大,e.g.积极的用户可能访问间隔是一周,还有一部分用户是半个月的访问周期,如果不同访问周期的用户在目标行为上存在较大差异,那就要“等迟到的人一起集合”,尽量保证大多数的代表用户群能进入试验,这个时候决定试验时间的就是用户的回流周期了。
以上,暂时就分析这些。
A/B测试的内容当然不仅仅包含文中所提到的内容,欢迎留言交流。
参考资料
样本量计算在线工具: http://www.evanmiller.org/ab-testing/sample-size.html