16-A/B测试进阶
开篇
- 数据驱动决策流程
- AB Test可解决的问题
- 课程内容
统计篇:A/B测试的前提与理论基础
统计基础:系统掌握指标的统计属性
- 业务中常用指标
- 均值类的指标,比如用户的平均使用时长、平均购买金额、平均购买频率,等等
- 概率类的指标,比如用户点击的概率(点击率)、转化的概率(转化率)、购买的概率(购买率),等等
- 指标概率分布
-
在数量足够大时,均值类指标服从正态分布;概率类指标本质上服从二项分布,但当数量足够大时,也服从正态分布
-
正态分布是 A/B 测试的指标中最主要的分布,是计算样本量大小和分析测试结果的前提
-
中心极限定理(Central Limit Theorem)
- 这其实是均值类变量的特性:当样本量足够大时,均值类变量会趋近于正态分布。这背后的理论基础,就是中心极限定理
- 统计上约定俗成的是,样本量大于 30 就属于足够大了。在现在的大数据时代,我们的样本量一般都能轻松超过 30 这个阈值,所以均值类指标可以近似为正态分布
-
二项分布(Binomial Distribution)
- 只有两种结果的事件叫做二元事件(Binary Event)。二元事件在生活中很常见,比如掷硬币时只会出现正面或者反面这两种结果,所以统计学中有专门有一个描述二元事件概率分布的术语,也就是二项分布(Binomial Distribution)
- 在二项分布中,有一个从实践中总结出的经验公式:min(np,n(1-p)) >= 5。其中,n 为样本大小,p 为概率的平均值
- 这个公式的意思是说,np 或者 n(1-p) 中相对较小的一方大于等于 5,只有二项分布符合这个公式时,才可以近似于正态分布。这是中心极限定理在二项分布中的变体
-
统计基础:深入理解A/B测试中的假设检验
- 假设检验 (Hypothesis Testing) 是什么?
- 假设检验,其实就是检测通过样本数据产生的假设在总体数据(即事实)上是否成立
- 在 A/B 测试的语境中,假设一般是指关于实验组和对照组指标的大小的推断
- 假设检验中的“假设”是什么?
- 在假设检验中的“假设”是一对:零假设(Null Hypothesis)和备择假设(Alternative Hypothesis),它们是完全相反的。在 A/B 测试的语境下,零假设指的是实验组和对照组的指标是相同的,备择假设指的是实验组和对照组的指标是不同的
- 单尾检验又叫单边检验(One-sided Test),它不仅在假设中说明了两个比较对象不同,并且还明确了谁大谁小,比如实验组的指标比对照组的指标大
- 双尾检验又叫双边检验(Two-sided Test),指的是仅仅在假设中说明了两个比较对象不同,但是并没有明确谁大谁小
- 在 A/B 测试的实践中,更推荐使用双尾检验
- 在 A/B 测试的实践中,更推荐使用双尾检验,我们在实践中使用 A/B 测试,就是希望能够通过数据来驱动决策。我们要尽量减少在使用数据前产生的任何主观想法来干扰数据发挥作用。所以,双尾检验这种不需要我们明确谁大谁小的检验,更能发挥数据的作用
- 双尾检验可以帮助我们全面考虑变化带来的正、负面结果,在实践中,我们期望改变可以使指标朝着好的方向变化,但是万一指标实际的变化与期望的正好相反呢?这就可以体现双尾检验的优势了。双尾检验可以同时照顾到正面和负面的结果,更接近多变的现实情况。但是单尾检验只会适用于其中一种,而且通常是我们期望的正面效果
- 假设检验中的“检验”都有哪些,该怎么选取
- 从“假设”的角度来分
- 单尾检验
- 双尾检验
- 根据比较样本的个数进行分类
- 单样本检验(One-Sample Test)
- 当一组样本数据和一个具体数值进行比较时,就用单样本检验
- 双样本检验(Two-Sample Test)
- 当两组样本数据进行比较时,就用双样本检验。比如 A/B 测试中实验组和对照组的比较
- 配对检验(Paired Test)
- 当比较同一组样本数据发生变化前和发生变化后时,就用配对检验
- 在 A/B 测试中,使用双样本检验
- 单样本检验(One-Sample Test)
- 根据样本服从分布分类
-
选择 T 检验还是 Z 检验,主要看样本量的大小和是否知道总体方差(Population Variance)
-
T 检验(T Test)
- 当我们不知道总体方差时,使用 T 检验
-
Z 检验(Z Test)
- 当我们已知总体方差,且样本量大于 30 时,使用 Z 检验
-
具体到 A/B 测试实践中,一个经验就是:均值类指标一般用 T 检验,概率类指标一般用 Z 检验(比例检验)
- 样本量大的情况下均值类指标是正态分布,正态分布的总体方差的计算需要知道总体中各个数据的值,这在现实中几乎做不到,因为我们能获取的只是样本数据。所以总体方差不可知,选用 T 检验
- 概率类指标是二项分布,二项分布的总体方差的计算不需要知道总体中各个数据的值,可以通过样本数据求得总体方差。而且现实中 A/B 测试的样本量一般都远大于 30,所以选用 Z 检验
- 对于 A/B 测试来说,要选用双尾、双样本的比例检验(概率类指标)或 T 检验(均值类指标)
-
- 从“假设”的角度来分
- A/B 测试可能出现的结果
-
接受零假设,拒绝备择假设,也就是说实验组和对照组的指标是相同的
-
接受备择假设,拒绝零假设,也就是说实验组和对照组的指标是不同的
-
- 第一类错误(Type I Error):统计上的定义是拒绝了事实上是正确的零假设。在 A/B 测试中,零假设是两组的指标是相同的,当假设检验推断出两组指标不同,但事实上两组指标相同时,就是第一类错误。我们把两组指标不同称作阳性(Positive)。所以,第一类错误又叫假阳性(False Positive)。发生第一类错误的概率用α表示,也被称为显著水平(Significance Level)。“显著”是指错误发生的概率大,统计上把发生率小于 5% 的事件称为小概率事件,代表这类事件不容易发生。因此显著水平一般也为 5%
- 第二类错误(Type II Error):统计上的定义是接受了事实上是错误的零假设。在 A/B 测试中,当假设检验推断出两组指标相同,但事实上两组指标是不同时,就是第二类错误。我们把两组指标相同称作阴性(Negative),所以第二类错误又叫假阴性(False Negative)。发生第二类错误的概率用β表示,统计上一般定义为 20%
-
- 如何通过假设检验得到测试结果
- P 值法
- 在统计上,P 值就是当零假设成立时,我们所观测到的样本数据出现的概率。在 A/B 测试的语境下,P 值就是当对照组和实验组指标事实上是相同时,在 A/B 测试中用样本数据所观测到的“实验组和对照组指标不同”出现的概率
- 如果我们在 A/B 测试中观测到“实验组和对照组指标不同”的概率(P 值)很小,比如小于 5%,是个小概率事件,虽然这在零假设成立时不太可能发生,但是确实被我们观测到了,所以肯定是我们的零假设出了问题。那么,这个时候就应该拒绝零假设,接受备择假设,即两组指标是不同的
- 当 P 值小于 5% 时,我们拒绝零假设,接受备择假设,得出两组指标是不同的结论,又叫做结果显著;当 P 值大于 5% 时,我们接受零假设,拒绝备择假设,得出两组指标是相同的结论,又叫做结果不显著
- 置信区间法
- 在统计上,对于一个随机变量来说,有 95% 的概率包含总体平均值(Population mean)的范围,就叫做 95% 的置信区间,你可以直接把它理解为随机变量的波动范围,95% 的置信区间就是包含了整个波动范围的 95% 的区间
- A/B 测试本质上就是要判断对照组和实验组的指标是否相等,那怎么判断呢?答案就是计算实验组和对照组指标的差值δ。因为指标是随机变量,所以它们的差值δ也会是随机变量,具有一定的波动性,这就意味着,我们就要计算出δ的置信区间,然后看看这个置信区间是否包括 0。如果包括 0 的话,则说明δ有可能为 0,意味着两组指标有可能相同;如果不包括 0,则说明两组指标不同
- P 值法
基础篇:从0到1,带你建立规范的A/B测试流程
科学、规范的A/B测试流程,是什么样的
确定目标和假设:好的目标和假设是什么
-
把产品 / 业务的变化作为原因,把业务目标变成结果,我们就把业务问题转换成了因果推断。而对于做 A/B 测试来说,把业务问题转换成因果推断,也就意味着找到了测试的目标。所谓的假设,在 A/B 测试的语境下,就是既包含了想要做出的改变,又包含了期望达到的结果
-
该如何确定目标和假设
- 首先,分析问题,确定想要达到的结果
- 其次,提出解决业务问题的大致方案
- 最后,从大致的解决方案中提取出具体的假设
-
- A/B 测试是因果推断,所以我们首先要确定原因和结果
- 目标决定了结果(用户留存), 而假设又决定了原因(增加自动播放的功能),所以目标和假设对于 A/B 测试来说,是缺一不可
-
A/B 测试的指标有哪几类
- 评价指标(Evaluation Metrics)
- 评价指标,一般指能驱动公司 / 组织实现核心价值的指标,又被称作驱动指标。评价指标通常是短期的、比较敏感、有很强的可操作性,例如点击率、转化率、人均使用时长等
- 评价指标是能够直接评价 A/B 测试结果的指标,是我们要重点关注的
- 护栏指标(Guardrail Metrics)
- 护栏指标属于 A/B 测试中基本的合理性检验(Sanity Check),就像飞机起飞前的安全检查一样。它的作用就是作为辅助,来保障 A/B 测试的质量
- 衡量 A/B 测试是否符合业务上的长期目标,不会因为优化短期指标而打乱长期目标
- 确保从统计上尽量减少出现各种偏差(Bias),得到尽可能值得信任的实验结果
- 护栏指标属于 A/B 测试中基本的合理性检验(Sanity Check),就像飞机起飞前的安全检查一样。它的作用就是作为辅助,来保障 A/B 测试的质量
- 评价指标(Evaluation Metrics)
-
什么样的指标可以作为评价指标
- 评价指标的第一个特征,就是可归因性
- 评价指标要有的第二个特征:可测量性
- 敏感性和稳定性
- 如果实验中的变量变化了,评价指标要能敏感地做出相应的变化;但如果是其他因素变化了,评价指标要能保持相应的稳定性
- 用 A/B 测试来检测单次的变化时(比如单次推送 / 邮件)一般选用短期效果的指标,因为长期效果目标通常对单次变化并不敏感
- 用 A/B 测试来检测连续的、永久的变化时(比如增加产品功能),可以选用长期效果的指标
-
如何测量评价指标的敏感性和稳定性
- 业界通常采用 A/A 测试来测量稳定性
- 和 A/B 测试类似,A/A 测试(A/A Test)也是把被测试对象分成实验组和对照组。但不同的是,A/A 测试中两组对象拥有的是完全相同的体验,如果 A/A 测试的结果发现两组的指标有显著不同,那么就说明要么分组分得不均匀,每组的数据分布差异较大;要么选取的指标波动范围太大,稳定性差
- 用回溯性分析来表征敏感性
- 如果没有之前实验的数据,或者是因为某些原因(比如时间不够)没有办法跑新的实验,那我们也可以通过分析历史数据,进行回溯性分析(Retrospective Analysis)。也就是在分析之前不同的产品变化时,去看我们感兴趣的指标是否有相应的变化
- 业界通常采用 A/A 测试来测量稳定性
-
如何选取具体的评价指标
- 第一,要清楚业务或产品所处的阶段,根据这个阶段的目标,来确定评价指标
- 第二,如果目标比较抽象,我们就需要采用定性 + 定量相结合的方法了
- 第三,如果有条件的话,你还可以通过公开或者非公开的渠道,参考其他公司相似的实验或者研究,根据自己的情况去借鉴他们使用的评价指标
确定指标:指标这么多,到底如何来选择
-
综合多个指标,建立总体评价标准
- 在实际的业务需求中,有时会出现多个目标,同一目标也可能有多个都很重要的评价指标,需要我们把它们都综合起来考虑
- 结合多个指标,构建一个总体评价标准 (Overall Evaluation Criteria,简称 OEC)
-
如何衡量评价指标的波动性
-
在统计学里面,指标的波动性通常用其平均值和平均值的标准差来表示,一个指标平均值的标准差越大,说明其波动性越大。这里面要注意,变量平均值的标准差又叫做标准误差(Standard Error)
-
评价指标的正常波动范围,就是置信区间
-
在实践中,计算波动范围一般有统计公式和实践经验两类方法
-
第一,根据统计公式来计算
-
置信区间 = 样本均值(Sample Mean) ± Z 分数 * 标准误差
-
对于简单的指标,主要是概率类和均值类,我们可以用统计公式来计算标准误差
-
概率类的指标,常见的有用户点击的概率(点击率)、转化的概率(转化率)、购买的概率(购买率),等等
-
这类指标在统计上通常服从二项分布,在样本量足够大的情况下,也可以近似为正态分布,这类指标在统计上通常服从二项分布,在样本量足够大的情况下,也可以近似为正态分布,概率指标的标准误差,我们可以通过下面这个公式计算
-
均值类的指标,常见的有用户的平均使用时长、平均购买金额、平均购买频率,等等。根据中心极限定理,这类指标通常也是正态分布,均值类的指标,常见的有用户的平均使用时长、平均购买金额、平均购买频率,等等。根据中心极限定理,这类指标通常也是正态分布
-
-
第二,根据实践经验来确定
- A/A 测试
- 我们可以跑多个不同样本大小的 A/A 测试,然后分别计算每个样本的指标大小,计算出来后,再把这些指标从小到大排列起来,并且去除最小 2.5% 和最大 2.5% 的值,剩下的就是 95% 的置信区间
- Bootstrapping 算法
- 我们可以先跑一个样本很大的 A/A 测试,然后在这个大样本中进行随机可置换抽样(Random Sample with Replacement), 抽取不同大小的样本来分别计算指标。然后采用和 A/A 测试一样的流程:把这些指标从小到大排列起来,并且去除最小 2.5% 和最大 2.5% 的值,得到 95% 的置信区间
- A/A 测试
-
-
-
护栏指标
-
A/B 测试往往改变的是业务中的某一部分指标(评价指标),所以我们很容易只关注短期的改变,却失去了对业务的大局观(比如长期的盈利能力 / 用户体验)的掌控或者统计上合理性的检查。因此在实践中,推荐每个 A/B 测试都要有相应的护栏指标
-
- 业务品质层面
- 在业务层面的护栏指标,是在保证用户体验的同时,兼顾盈利能力和用户的参与度
- 网络延迟
- 网页加载时间、App 响应时间等,都是表征网络延迟的护栏指标
- 闪退率
- 人均指标
- 收入角度,比如人均花费、人均利润等
- 用户参与度,比如人均使用时长、人均使用频率等
- 统计品质层面
- 统计方面主要是尽可能多地消除偏差,使实验组和对照组尽可能相似,比如检测两组样本量的比例,以及检测两组中特征的分布是否相似
- 实验 / 对照组样本大小的比例
- 在设计 A/B 测试的时候,我们就会预先分配好实验组和对照组,通常是把样本等分。也就是说,实验组和对照组样本大小的比例,预期是 1:1=1
- 实验 / 对照组中特征的分布
- A/B 测试中一般采取随机分组,来保证两组实验对象是相似的,从而达到控制其他变量、只变化我们关心的唯一变量(即 A/B 测试中的原因)的目的
- 业务品质层面
-
选取实验单位:什么样的实验单位是合适的
- 实验单位有哪些
- 用户层面(User Level)
- 用户层面是指,把单个的用户作为最小单位,也就是以用户为单位来划分实验组和对照组
- 第一种 ID 是用户 ID,也就是用户注册、登录时的用户名、手机号、电子邮箱,等等
- 第二种 ID 是匿名 ID,一般是用户浏览网页时的 Cookies
- 第三种 ID 是设备 ID
- 第四种 ID 是 IP 地址,它和实际的地理位置以及使用的网络都有关系
- 它们的准确度从高到低的顺序是:用户 ID > 匿名 ID(Cookies)/ 设备 ID > IP 地址
- 用户层面是指,把单个的用户作为最小单位,也就是以用户为单位来划分实验组和对照组
- 访问层面(Visit/Session Level)
- 访问层面是指把用户的每次访问作为一个最小单位
- 页面层面(Page Level)
- 页面层面指的是把每一个新的页面浏览(Pageview)作为最小单位
- 访问层面和页面层面的单位,比较适合变化不易被用户察觉的 A/B 测试,比如测试算法的改进、不同广告的效果等等;如果变化是容易被用户察觉的,那么建议你选择用户层面的单位
- 从用户层面到访问层面再到页面层面,实验单位颗粒度越来越细,相应地可以从中获得更多的样本量。原因也很简单,一个用户可以有多个访问,而一个访问又可以包含多个页面浏览
- 用户层面(User Level)
- 确定实验单位的三大原则
- 确定实验单位的三大原则
- 保证用户获得最好的体验几乎是所有产品的目标之一,用户体验的连贯性尤其重要,否则,同一个用户同时出现在实验组和对照组,就会体验到不同的功能、得到不同的体验。这种体验的不连贯性,就会给用户带来困惑和沮丧,很容易导致用户流失
- 实验单位要和评价指标的单位保持一致
- A/B 测试的一个前提是实验单位相互独立且分布相同的(Independent and identically distributed),简称 IID。如果两个单位不一致,就会违反相互独立这一前提,破坏了 A/B 测试的理论基础,从而导致实验结果不准确
- 样本数量要尽可能多
- 在 A/B 测试中,样本数量越多,实验结果就越准确。但增加样本量的方法有很多,我们绝对不能因为要获得更多的样本量,就选择颗粒度更细的实验单位,而不考虑前面两个原则
- 确定实验单位的三大原则
选择实验样本量:样本量越多越好吗
-
打破误区:样本量并不是越多越好
- 从统计理论上来说,确实是这样。因为样本量越大,样本所具有的代表性才越强。但在实际业务中,样本量其实是越少越好
- A/B 测试所需的时间 = 总样本量 / 每天可以得到的样本量
- 从公式就能看出来,样本量越小,意味着实验所进行的时间越短。在实际业务场景中,时间往往是最宝贵的资源,毕竟,快速迭代贵在一个“快”字
- 在 A/B 测试中,既要保证样本量足够大,又要把实验控制在尽可能短的时间内
-
样本量计算背后的原理
-
如何理解 Power
- Power,又被称作 Statistical Power。在统计理论中,Power = 1–β,第二类错误率β(Type II Error)
- Power 的本质是概率,在 A/B 测试中,如果实验组和对照组的指标事实上是不同的,Power 指的就是通过 A/B 测试探测到两者不同的概率
- 现在如果 A/B 测试有 80% 的 Power,就意味着这个 A/B 测试有 80% 的概率可以准确地检测到这两组用户注册率的不同,得出统计显著的结果。换句话说,这个 A/B 测试有 20% 的概率会错误地认为这两组用户的注册率是相同的
- Power 越大,说明 A/B 测试越能够准确地检测出实验组与对照组的不同(如果两组事实上是不同的)
-
四个因素和样本量 n 的关系
- 显著水平(Significance Level)α
- 显著水平和样本量成反比:显著水平越小,样本量就越大。这个也不难理解。因为显著水平又被称为第一类错误率(Type I Error)α,想要第一类错误率越小,结果越精确,就需要更大的样本量
- Power (1 – β)
- Power 和样本量成正比:Power 越大,样本量就越大。Power 越大,就说明第二类错误率(Type II Error)β越小。和第一类错误类似,想要第二类错误率越小,结果越精确,就需要更大的样本量
- 实验组和对照组的综合方差 σ2pooled
- 方差和样本量成正比:方差越大,样本量就越大,方差是用来表征评价指标的波动性的,方差越大,说明评价指标的波动范围越大,也越不稳定,那就更需要更多的样本来进行实验,从而得到准确的结果
- 实验组和对照组评价指标的差值δ
- 差值和样本量成反比:差值越小,样本量就越大。因为实验组和对照组评价指标的差值越小,越不容易被 A/B 测试检测到,所以我们需要提高 Power,也就是说需要更多的样本量来保证准确度
- 显著水平(Significance Level)α
-
实践中该怎么计算样本量
-
在非均分的情况下,只有相对较小组的样本量达到最小样本量,实验结果才有可能显著,并不是说实验组越大越好,因为瓶颈是在样本量较小的对照组上
-
所以只有两组均分,才能使两组的样本量均达到最大,并且使总样本量发挥最大使用效率,从而保证A/B 测试更快更准确地进行
-
估算实验组和对照组评价指标的差值δ
-
第一种方法是从收益和成本的角度进行估算
-
第二种方法是,如果收益和成本不好估算的话,我们可以从历史数据中寻找蛛丝马迹,算出这些评价指标的平均值和波动范围,从而估算一个大概的差值。
-
-
计算实验组和对照组的综合方差σ2pooled
-
选取历史数据,根据不同的评价指标的类型,来选择相应的统计方法进行计算。评价指标的类型主要分为概率类和均值类这两种
-
-
案例
分析测试结果:你得到的测试结果真的靠谱吗
- 什么时候可以查看测试结果
- A/B 测试所需的时间 = 总样本量 / 每天可以得到的样本量
- 具体到 A/B 测试的实践中,我们要确定测试时间,除了考虑样本量的大小外,还要考虑指标周期性变化的因素
- 保障统计品质的合理性检验
-
检验实验 / 对照组样本量的比例
-
我们预设的是,实验组和对照组的样本量各占总样本量的 50%,现在我们来看看实验过程中有没有发生什么变化
-
-
检验实验 / 对照组中特征的分布
- A/B 测试中实验组和对照组的数据要相似才具有可比性。这里的相似,我们可以通过比较两组的特征分布来判断
-
这两个合理性检验是都要进行的,这是保障实验质量的关键。这两种检验如果没有通过的话都会使实验结果不准确,具体来说,实验 / 对照组样本量的比例和实验设计不相同时会出现样本比例不匹配问题(Sample Ratio Mismatch),实验 / 对照组的特征分布不相似则会导致辛普森悖论问题(Simpson Paradox)
-
- 如何分析 A/B 测试的结果
- 首先我们可以用统计中的假设检验(Hypothesis Testing)计算出相关的统计量,然后再来分析测试的结果。最常用的统计量是用 P 值(P value)和置信区间 (Confidence Interval) 这两种统计量
- Z 检验(Z Test)
- 当评价指标为概率类指标时(比如转化率,注册率等等),一般选用 Z 检验(在 A/B 测试中有时又被称为比例检验(Proportion Test))来计算出相应的 P 值和置信区间
- T 检验(T Test)
- 当评价指标为均值类指标时(比如人均使用时间,人均使用频率等等),且在大样本量下可以近似成正态分布时,一般选用 T 检验来计算相应的 P 值和置信区间
- Bootstrapping
- 当评价指标的分布比较复杂,在大样本量下也不能近似成正态分布时(比如 70% 用户的使用时间,OEC 等),一般采用 Bootstrapping 的方法,从 P 值或者置信区间的定义来计算 P 值和置信区间
- 无论是 P 值法还是置信区间法,都可以用来分析 A/B 测试结果是否具有统计显著性。那么,在实际应用中该如何选择呢?两者有什么差别吗
- 其实,在大部分情况下这两种方法是通用的,只要选择一种就可以。但如果需要考虑实施变化后的收益和成本的关系时,我们就要选择置信区间法了
- 因为要考虑收益和成本的关系时,除了满足结果在统计上是显著的(两组指标不相同,差值的置信区间不包括 0)还不够,更要让结果在业务上也是显著的(两组指标不仅要不相等,而且其差值δ >= δ收支平衡,并且差值的置信区间的范围都要比 δ收支平衡 大)
A/B测试的规范框架
进阶篇:怎么在A/B测试的实践中避坑
测试结果不显著,要怎么改善
- 为什么会出现“实验结果不显著”
- A/B 测试中的变化确实没有效果,所以两组的指标在事实上是相同的
- 如果是第一种原因,就证明这个变化对产品 / 业务优化没有效果。那我们要考虑放弃这个变化,或者去测试新的变化
- A/B 测试中的变化有效果,所以两组的指标在事实上是不同的。但是由于变化的程度很小,测试的灵敏度,也就是 Power 不足,所以并没有检测到两组指标的不同
- 如果是第二种原因,那我们可以从 A/B 测试的角度进行一些优化和调整。具体来说就是,通过提高 Power 来提高 A/B 测试检测到实验结果不同的概率
- 影响 Power 的因素
- 样本量和 Power 成正比。即通过增大样本量就可以提高 Power
- 方差和 Power 成反比。即通过减小方差就可以提高 Power
- A/B 测试中的变化确实没有效果,所以两组的指标在事实上是相同的
- 如何通过增加样本量来提高 Power
- 延长测试时间
- 增加测试使用流量在总流量中的占比
- 多个测试共用同一个对照组
- 总结
- 如果时间允许,最常用的是延长测试时间的方法,因为操作起来最简单
- 如果时间不充足的,可以优先选择增加测试使用流量在总流量中的占比,因为可以节省时间
- 当有多个测试同时进行,而且对照组又相同的情况下,就可以把多个对照组合并成一个
- 如何通过减小方差来提高 Power
-
减小指标的方差
- 第一种方式:保持原指标不变,通过剔除离群值(Outlier)的方法来减小方差
- 比如可以根据指标的分布,只选取 95% 的取值范围,然后把剩下的 5% 的离群值剔除掉
- 第二种方式:选用方差较小的指标
- 取值范围窄的指标比取值范围广的指标方差要小。比如点击者量比点击量的方差小
- 第一种方式:保持原指标不变,通过剔除离群值(Outlier)的方法来减小方差
-
倾向评分匹配(Propensity Score Matching)
- 倾向评分匹配,简称 PSM,是因果推断的一种方法,目的是解决实验组和对照组分布不均匀的问题
- 如果说合理性检验是帮我们确定两组分布是否相似的方法,那么 PSM,就是帮我们找出两组中相似部分的回溯性分析方法。简单来说,两组的各个特征越相似,就说明两组的方差越小
- PSM 的基本原理,就是把一组中的数据点,找到在另一组和它们相似的数据点,进行一对一的匹配,这个相似性是通过比较每个数据点的倾向评分(Propensity Score)得到的
-
在触发阶段计算指标
- 从分配和触发的关系来看,A/B 测试可以分为两种
- 变化不需要条件触发。所有用户在被分配到实验组后,就都可以体验到 A/B 测试中的变化
- 变化需要条件触发。在被分配到实验组的所有用户中,只有满足一定条件的用户才会触发 A/B 测试中的变化
- 从分配和触发的关系来看,A/B 测试可以分为两种
-
常见误区及解决方法(上):多重检验问题和学习效应
-
多重检验问题(Multiple Testing Problem)
- 多重检验问题,又叫多重测试问题或多重比较问题(Multiple Comparison Problem),指的是当同时比较多个检验时,第一类错误率α就会增大,而结果的准确性就会受到影响这个问题
-
多重检验为什么会是一个问题
-
5% 看上去是个小概率事件,但是如果我们同时比较 20 个检验(测试)呢?你可以先思考一下,如果每个检验出现第一类错误的概率是 5%,那么在这 20 个检验中至少出现一个第一类错误的概率是多少呢?
-
- 随着检验次数的增加,FWER,也就是出现第一类错误的概率会显著升高
- 当α越小时,FWER 会越小,上升的速度也越慢
-
-
什么时候会遇到多重检验问题
- 第一种形式,当 A/B 测试有不止一个实验组时
- 个实验组只变化一个变量,在分析结果时分别用每个实验组和共同的对照组进行比较,这种测试方法也叫做 A/B/n 测试。比如我想要改变广告来提升其效果,那么想要改变的变量包括内容、背景颜色、字体大小等等,这个时候我就要有相对应的 3 个实验组,然后把它们分别和对照组进行比较
- 第二种形式,当 A/B 测试有不止一个评价指标时
- 第三种形式,当你在分析 A/B 测试结果,按照不同的维度去做细分分析(Segmentation Analysis)时
- 比如对于一个跨国公司来说,很多 A/B 测试会在全球多个国家同时进行,这时候如果我们想要看 A/B 测试中的变化对于各个国家的具体影响时,就会以国家为维度来做细分的分析,会分别比较单个国家中的两组指标大小,那么此时分析每个国家的测试结果就是一个检验,多个国家则是多个检验
- 第四种形式,当 A/B 测试在进行过程中,你不断去查看实验结果时
- 每次查看的测试都和上一次的不一样,每查看一次结果都算是一次检验,这样也会产生多重检验问题
- 第一种形式,当 A/B 测试有不止一个实验组时
-
如何解决多重检验问题
- 保持每个检验的 P 值不变,调整α
- 降低α是一种解决办法,最常用的调整α的方法是Bonferroni 校正(Bonferroni Correction),其实很简单,就是把α变成α/n;其中 n 是检验的个数。比如α=5%,那当我们比较 20 个检验时,校正之后的α=5%/20 = 0.25%,此时的 FWER =1−(1−0.25%)20 = 4.88% ,和我们最初设定的α=5% 差不多
- 保持α不变,调整每个检验的 P 值
- 根据实践经验,在检测次数较大时(比如上百次,这种情况在 A/B 测试中出现的情况一般是做不同维度的细分分析时,比如对于跨国公司来说,有时会有上百个 markets), Bonferroni 校正会显著增加第二类错误率β,这时候一个比较好的解决办法就是去调整 P 值,常用的方法就是通过控制FDR(False Discovery Rate)来实现;其中最常用的是BH 法(Benjamini-Hochberg Procedure)就行了。BH 法会考虑到每个 P 值的大小,然后做不同程度的调整。大致的调整方法就是把各个检验计算出的 P 值从小到大排序,然后根据排序来分别调整不同的 P 值,最后再用调整后的 P 值和α进行比较
- Python 中的multipletests函数很强大,里面有各种校正多重检验的方法,其中就包括我们今天讲的 Bonferroni 校正和 BH 法,我们使用时只需要把不同的 P 值输入,选取校正方法,这个函数就会给我们输出校正后的 P 值
- 保持每个检验的 P 值不变,调整α
-
学习效应 (Learning Effect)
- 当我们想通过 A/B 测试检验非常明显的变化时,比如改变网站或者产品的交互界面和功能,那些网站或者产品的老客户往往适应了之前的交互界面和功能,而新的交互界面和功能对他们来说需要一段时间来适应和学习。所以往往老用户在学习适应阶段的行为会跟平时有些不同,这就是学习效应
- 学习效应在实践中有哪些表现形式
- 第一种是积极的反应,一般也叫做新奇效应(Novelty Effect),指的是老用户对于变化有很强的好奇心,愿意去尝试
- 第二种是消极的反应,一般也叫做改变厌恶(Change Aversion)。指的是老用户对于变化比较困惑,甚至产生抵触心理
-
学习效应该如何检测
- 第一种方法是表征实验组的指标随着时间(以天为单位)的变化情况
- 如果是新奇效应,实验组的指标可能会由刚开始的迅速提升,到随着时间慢慢降低
- 如果是改变厌恶,实验组的指标可能会由刚开始的迅速降低,到随着时间慢慢回升
- 第二种方法是只比较实验组和对照组中的新用户
- 如果我们在新用户的比较中没有得出显著结果(在新用户样本量充足的情况下),但是在总体的比较中得出了显著结果,那就说明这个变化对于新用户没有影响,但是对于老用户有影响,那么大概率是出现了学习效应
- 在实践中我们可以用以上方法检测出学习效应,不过要想真正排除学习效应的影响,得到准确的实验结果,还是要延长测试时间,等到实验组的学习效应消退再来比较两组的结果
- 第一种方法是表征实验组的指标随着时间(以天为单位)的变化情况
常见误区及解决方法(下):辛普森悖论和实验组/对照组的独立性
- 辛普森悖论
-
辛普森悖论,实际上就是由于实验中两组在不同细分领域中的分布不均造成的
- 解决一个问题的最好方法就是减少或者避免它的产生
- 如果我们在进行总体分析和细分分析时发现了辛普森悖论,最好的解决办法就是重新跑实验,看看两组在不同细分领域的分布不均会不会消失
- 实验组和对照组要相互独立
- A/B 测试有一个前提:实验组和对照组的实验单位是要相互独立的,意思是说测试中各组实验单位的行为仅受本组体验的影响,不能受其他组的影响。这个前提又叫做 Stable Unit Treatment Value Assumption (SUTVA)
- 因为 A/B 测试的本质是因果推断,所以只有在实验组和对照组相互独立,互不干扰的情况下,如果测试结果有显著的不同,那么才能把这个显著不同归因成实验组相对于对照组的变化,否则就很难建立准确的因果关系
- 破坏两组独立性的表现形式有哪些
-
第一类业务是社交网络 / 通讯类业务
- 在这类业务中,会存在网络效应。网络效应也就是网络中相邻的各个节点会相互影响。如果节点 A 在实验组,而它相邻的节点 B 在对照组,这时候两者就不是独立的
-
第二类业务是共享经济类业务
- 共享经济类业务一般是双边市场(Two-Sided Market),即公司只提供交易平台,供给方和需求方均是用户。典型代表包括淘宝、滴滴、Uber、共享单车、共享租赁、爱彼迎 (Airbnb),等等。在这类业务中,由于供需关系是动态平衡的,一方的变化必然会引起另一方的变化,从而造成实验中两组相互影响
-
第三类业务是共享资源类业务
- 在营销预算固定的情况下,我们用 A/B 测试来验证不同广告的效果。如果发现我们在实验组改进后的广告效果更好,点击率更高,那么这就会造成对照组的广告预算减少,从而影响到对照组的广告效果。因为线上的广告大部分是按点击次数付费的,所以这时候实验组广告花的钱就越多,在营销预算固定的情况下就会抢占对照组的预算。以此来看,通过 A/B 测试得出的实验组的广告效果就会被高估
-
- 如何避免破坏两组的独立性
-
第一种方法是从地理上进行分离
-
第二种方法是从资源上进行分离
-
第三种方法是从时间上进行分离
-
第四种方法是通过聚类(Clustering)的方法进行分离
-
什么情况下不适合做A/B测试
- A/B 测试在什么情况下不适用
- 当没有办法控制想要测试的变量时
- 比如我们想要了解用户从 QQ 音乐换到网易云音乐后使用情况的变化,那更换音乐 App 就是我们想要测试的变量。需要注意的是,我们无法帮助用户决定是否要更换音乐 App 的行为,因此我们也没有办法做到真正的随机分组
- 当有重大事件发布时
- 比如,一个公司如果想要改变自己的商标,就不能事先把用户进行分组,让实验组的用户接触新商标,对照组的用户接触旧商标
- 当用户数量很少时
- 当没有办法控制想要测试的变量时
- 当 A/B 测试不适用时有哪些替代方法
-
当 A/B 测试不适用时,我们通常会选用非实验的因果推断方法和用户研究两类方法来替代,让你在想做因果推断却又不能进行 A/B 测试时,有新的思路和方法
-
当 A/B 测试不适用时有哪些替代方法
-
非实验的因果推断方法,又叫观察性研究,这其中最常用的就是倾向评分匹配(Propensity Score Matching),简称 PSM,本质就是在历史数据中,通过模型的方法,人为地(而不是像实验那样随机地)构建出相似的实验组和对照组,最后再对两组进行比较
-
-
用户研究
- 用户研究适用于 A/B 测试无法进行时,比如新产品 / 业务发布前的测评,我们就可以通过直接或间接的方式,和用户交流沟通来获取信息,从而判断相应的变化会对用户产生什么影响
- 深度用户体验研究(Deep User Experience Research)
- 焦点小组(Focus Group)
- 调查问卷(Survey)
-
融会贯通:A/B测试面试必知必会
-
-
-
当这两个的 P 值都小于 5% 时,我该怎么比较哪个变化对业务产生的影响更大呢
- 第一种方法就是估算变化带来的业务影响
- 第二种方法是计算效应值(Effect Size)。这种方法适用于变化相似且评价指标相同时
-
-
-