A/B 测试
A/B测试作为一种广泛应用于互联网公司的在线实验方法,可以帮助我们判断新功能或改进方案是否真正有效,从而指导产品的迭代和优化。但是如何设计和分析A/B测试,并从中获得可靠的结论,需要我们对统计学原理和最佳实践有更深入的理解。
什么是 A/B 测试?
A/B测试本质上是一种受控实验(Controlled Experiment),它模拟了科学实验中的对照组设置。我们将用户随机分为两组:A组(对照组)使用当前的产品版本,B组(实验组)使用新版本或改进后的版本。在相同的时间维度内,我们观察和比较两组用户在关键指标(如点击率、转化率等)上的表现差异,从而评估新版本是否比当前版本更有效。
A/B测试遵循以下两个关键原则:
- 单一变量原则: A组和B组之间应该只有一个可控的变量发生变化,其他条件都保持一致,避免引入混杂变量影响实验结果。
- 随机分配原则: 用户被随机分配到A组或B组,减少选择偏差,确保两组用户的特征大体相当,使实验结果具有代表性和可推广性。
具体而言,A/B 测试帮助我们判断某种方案或策略是否可行。实验开始时,通常有一个现有版本(A 版本)和一个改进后的版本(B 版本)。用户被随机分成两组,一组使用 A 版本,另一组使用 B 版本。在相同的时间维度内,观测两组用户的数据和反馈,最终根据假设检验原理判断 B 版本相较于 A 版本是否带来了统计学上的显著差异,并确定这些差异是否能带来具体的商业价值。
A/B 测试的用途
除了产品改进方案的效果评估外,A/B测试在互联网公司还有以下常见应用场景:
- 测试新功能或新产品的上线效果
- 优化用户界面和内容布局
- 营销渠道和广告策略的转化率优化
- 确定商业模式和定价策略
从统计学的本质来看,A/B 测试即为假设检验,帮助我们了解哪种策略更优。A/B 测试适用于从 1 到 100 的产品改进,而不适用于从 0 到 1 的创新。如果实验需要特别长的时间,A/B 测试可能无法进行,因为这会破坏单一变量原则。
不适用于 A/B 测试的情况
对于那些不适合A/B测试的场景,我们可以采用其他方法,如用户行为日志分析、回溯分析、用户体验研究、焦点小组和调查、人工评估等。
如何设计 A/B 测试
-
确定指标
- 不变指标(Invariant Metrics) :对于实验组和对照组而言,恒定不变的指标。实验结束后可用于完整性检查,确保整个实验是在单一变量下进行的,提高实验结论的准确性。
- 评估指标:用于评价优化方案是否得到具体改善的指标,如人均收入或点击率。选择指标时需要注意其稳定性和敏感性。
-
确定显著性水平、统计功效和实际显著性水平
- 显著性水平:原假设正确时错误拒绝的概率(第一类错误概率 α)。
- 统计功效:原假设错误时拒绝原假设并接受替代假设的概率(避免第二类错误的概率 1-β)。显著性水平越低,第一类错误概率越小,但第二类错误概率会增加。
- 第二类错误:
- 一般情况下,显著性水平设定为 0.05,统计功效设定为 0.8。然而,考虑到成本和其他因素,实际显著水平通常会更高,更为严格。
-
确定样本量
- 选择实际使用该功能的用户作为样本,确定总体。
- 每组样本量计算公式:,实验组和对照组的总样本量为两者之和。
- 为评估指标在总体中的标准差, 为根据显著性水平确定的评估指标差异。
- 为根据之前挑选的显著性水平来确定的评估指标,需要在实验组和对照组之间形成的差异
- 公式为,他们分别是实验组和对照组的评估指标平均值。
-
确定实验时长
- 计算样本量后,根据每天的用户使用量和实验比例,确定实验天数。延长实验时长以确保结果的稳定性。
- 假设计算出样本量是1000(一个组的),并且每天有2000名用户使用该功能,所以可以使用10%的数据来进行实验,即200用户然后分散到两组100,100,所以需要1000 / 100 = 10天
- 不能完全使用第一天的数据是因为:不能完全保证一天的效果好,所以拉长时间到长期上线,确保上线后也能保持住相同的效果。
-
影响因素
- 周期性趋势和季节性趋势:延长实验周期或跳过特定时期以减少影响。
- 考虑首位效应(primacy effect) 与新奇效应(Novelty effect) :人们在看到新的事物心理会有不一样的反映;容易出现在实验初期,一般实验运行一段时间之后这些影响的效果会逐渐减弱。
实验数据分析
-
数据做完整性检查,确保遵循单一变量和随机性前提(sanity check)
- 如果数据没有通过完整性检查:分析通过不完整性检查的原因是什么,一定不能根据这个数据进行分析和得出结论
- 方法:对数据进行更加细致的分类,看更多维度,具体不能通过完整性检查的要素是出现在哪个细分组,甚至可以对每一天的数据进行检查和分析。检查完后重新设计实验,重新取得实验数据
-
通过完整性检查后得出结论
-
差异不显著:
- 找到差异并不显著的具体原因
- 方法:细分数据,拆成更多的小组,探寻原因出现在那个领域,拆维度一定要注意辛普森悖论 Simpson's Paradox(总体的趋势很可能与与分量的趋势相反)
- 用其他的验证手段或者实验方法和我们目前的实验做一个交叉比对,看看不同的实验方法结论是否一样
-
差异显著:
- 下结论之前对数据进行更细致的分析,去分组和分类看这个改善出现在那个领域。
-
如何发行新产品并持续监测
- 逐步增加用户量:从小规模开始,逐渐增加用户流量和比例,直到 100% 上线。
- 持续监测:注意首位效应和新奇效应,初期斜率可能较高,逐步稳定。