数据分析中的 A/B 测试(A/B Testing)

394 阅读6分钟

A/B 测试

A/B测试作为一种广泛应用于互联网公司的在线实验方法,可以帮助我们判断新功能或改进方案是否真正有效,从而指导产品的迭代和优化。但是如何设计和分析A/B测试,并从中获得可靠的结论,需要我们对统计学原理和最佳实践有更深入的理解。

什么是 A/B 测试?

A/B测试本质上是一种受控实验(Controlled Experiment),它模拟了科学实验中的对照组设置。我们将用户随机分为两组:A组(对照组)使用当前的产品版本,B组(实验组)使用新版本或改进后的版本。在相同的时间维度内,我们观察和比较两组用户在关键指标(如点击率、转化率等)上的表现差异,从而评估新版本是否比当前版本更有效。

A/B测试遵循以下两个关键原则:

  1. 单一变量原则: A组和B组之间应该只有一个可控的变量发生变化,其他条件都保持一致,避免引入混杂变量影响实验结果。
  2. 随机分配原则: 用户被随机分配到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 测试

  1. 确定指标

    • 不变指标(Invariant Metrics) :对于实验组和对照组而言,恒定不变的指标。实验结束后可用于完整性检查,确保整个实验是在单一变量下进行的,提高实验结论的准确性。
    • 评估指标:用于评价优化方案是否得到具体改善的指标,如人均收入或点击率。选择指标时需要注意其稳定性和敏感性。
  2. 确定显著性水平、统计功效和实际显著性水平

    • 显著性水平:原假设正确时错误拒绝的概率(第一类错误概率 α)。
    • image.png
    • 统计功效:原假设错误时拒绝原假设并接受替代假设的概率(避免第二类错误的概率 1-β)。显著性水平越低,第一类错误概率越小,但第二类错误概率会增加。
    • 第二类错误: image.png
    • 一般情况下,显著性水平设定为 0.05,统计功效设定为 0.8。然而,考虑到成本和其他因素,实际显著水平通常会更高,更为严格。
  3. 确定样本量

    • 选择实际使用该功能的用户作为样本,确定总体。
    • 每组样本量计算公式:16(σ)2/(δ)216 * (\sigma)^2 / (\delta)^2,实验组和对照组的总样本量为两者之和。
    • σ\sigma 为评估指标在总体中的标准差,δ\delta 为根据显著性水平确定的评估指标差异。
    • δ\delta 为根据之前挑选的显著性水平来确定的评估指标,需要在实验组和对照组之间形成的差异
    • 公式为δ=xˉ实验组xˉ对照组组\delta = \bar{x}_{实验组} - \bar{x}_{对照组组} ,他们分别是实验组和对照组的评估指标平均值。
  4. 确定实验时长

    • 计算样本量后,根据每天的用户使用量和实验比例,确定实验天数。延长实验时长以确保结果的稳定性。
    • 假设计算出样本量是1000(一个组的),并且每天有2000名用户使用该功能,所以可以使用10%的数据来进行实验,即200用户然后分散到两组100,100,所以需要1000 / 100 = 10天
    • 不能完全使用第一天的数据是因为:不能完全保证一天的效果好,所以拉长时间到长期上线,确保上线后也能保持住相同的效果。
  5. 影响因素

    • 周期性趋势和季节性趋势:延长实验周期或跳过特定时期以减少影响。
    • 考虑首位效应(primacy effect) 与新奇效应(Novelty effect) :人们在看到新的事物心理会有不一样的反映;容易出现在实验初期,一般实验运行一段时间之后这些影响的效果会逐渐减弱。

实验数据分析

  1. 数据做完整性检查,确保遵循单一变量和随机性前提(sanity check)

    • 如果数据没有通过完整性检查:分析通过不完整性检查的原因是什么,一定不能根据这个数据进行分析和得出结论
    • 方法:对数据进行更加细致的分类,看更多维度,具体不能通过完整性检查的要素是出现在哪个细分组,甚至可以对每一天的数据进行检查和分析检查完后重新设计实验,重新取得实验数据
  2. 通过完整性检查后得出结论

    • 差异不显著:

      • 找到差异并不显著的具体原因
      • 方法:细分数据,拆成更多的小组,探寻原因出现在那个领域,拆维度一定要注意辛普森悖论 Simpson's Paradox(总体的趋势很可能与与分量的趋势相反)
      • 用其他的验证手段或者实验方法和我们目前的实验做一个交叉比对,看看不同的实验方法结论是否一样
    • 差异显著:

      • 下结论之前对数据进行更细致的分析,去分组和分类看这个改善出现在那个领域。

如何发行新产品并持续监测

  • 逐步增加用户量:从小规模开始,逐渐增加用户流量和比例,直到 100% 上线。
  • 持续监测:注意首位效应和新奇效应,初期斜率可能较高,逐步稳定。