注意:这是一篇最初以英文发表的博客的中文翻译,您可以在这里找到原文:https://statsig.com/blog/cuped
CUPED(使用实验前数据的受控实验)自2013年微软推出以来,在在线实验中越来越受欢迎。它是提高实验项目速度和准确性的最强大的算法工具之一。
在运行实验时,经常会看到结果刚好在统计显著性范围之外。在频率主义框架中,这不足以证明您的更改导致了用户行为的差异。
要在存在真实效应时获得统计显著的结果,通常需要更多的样本量。然而,增加样本量既昂贵又耗时,因为这通常意味着延长实验的注册窗口。
即使是像 Facebook 和亚马逊这样的大公司,在等待实验成熟时也会遇到困难,特别是在寻找小效应时。对于较小的公司来说,由于样本量要求,测量小效应大小在实践中可能是不可行的。
CUPED 通过使用实验前数据来解释结果数据中的一些方差,使得用较小的样本量更容易检测到真实效应,从而解决了这一挑战。
CUPED 的核心概念很简单:实验中并非所有方差都是随机的。用户结果的许多差异是基于与实验无关的预先存在的因素。
想象一下测试人们是否在负重的情况下跑得更慢。如果我们简单地记录两组(有负重和无负重)的一英里时间,观察到的时间可能会有很大的方差和重叠。
然而,如果我们通过要求参与者在实验前跑一英里来建立基线,我们可以测量他们相对于典型表现的变化:
人员 | 组别 | 基线一英里时间 | 实验一英里时间 | 变化 |
Sally | 负重 | 6:30 | 6:40 | +10 |
Dave | 无负重 | 7:08 | 7:10 | +2 |
Jane | 负重 | 7:30 | 8:20 | +50 |
Bob | 无负重 | 9:15 | 9:00 | -15 |
通过关注相对于基线的变化而不是原始的一英里时间,我们将指标的范围从140秒减少到65秒。这个较低的范围意味着我们计算中的方差更少,从而导致更精确的统计测试。
随机分配有时会导致实验组具有不同的基线特征。CUPED 有助于纠正这些预先存在的差异。
如果一组的平均基线更快,他们的实验结果也往往会更快。CUPED 通过相对于较慢的组向下调整较快组的指标来进行调整,从而允许更公平的比较。
CUPED 的一些变体使用"非参数"或"分桶"方法。这涉及根据用户的实验前指标将用户分成组,并测量相对于每组平均指标值的变化。
更复杂的 CUPED 实现可以包含除目标指标的实验前值之外的其他信息。任何独立于实验组分配的变量都可能用于进一步减少方差。
我们不能简单地从用户的实验值中减去他们的先前值,因为过去的行为并不总是未来行为的完美预测器。
给定指标的 T 检验在数学上等同于运行一个回归,其中因变量是您的指标,自变量是用户的实验组。
当我们将基线指标作为回归中的一个因素包含时,我们可以显著降低标准误差并提高统计功效。这是 CUPED 背后的核心概念。
CUPED 调整的公式是:
Ycv = Y + θ(μx) - θX
其中:
Y 是实验值
X 是实验前值
μx 是 X 的总体均值
θ 是最小化方差的常数(通常是 OLS 回归的斜率)
当 θ 等于 X 和 Y 的协方差除以 X 的方差时,调整后估计量的方差被最小化。这与 OLS 回归中的斜率系数相同。
我们估计量的最终方差是: Var(Ycv) = Var(Y)(1-ρ²)
其中 ρ 是 X 和 Y 之间的相关性。由于 ρ 的范围在 [-1, 1] 之间,这个新方差将始终小于或等于原始方差。
要实施 CUPED:
计算 Y 和 X 之间的协方差以及 X 的方差和均值
使用这些值计算 θ
对于每个用户,计算他们的个人实验前值
将总体统计数据连接到用户级数据
使用上述公式计算每个用户的调整项
像往常一样运行您的统计分析,使用调整后的指标
CUPED 对于有历史数据的现有用户的实验最有效
您需要确保您的指标数据可以追溯到实验前数据窗口开始之前
CUPED 的有效性取决于指标与同一用户过去值的相关程度
对于没有实验前数据的新用户,您可以将他们排除在 CUPED 调整之外,或使用其他协变量,如人口统计数据
CUPED 是一种强大的技术,可以通过减少方差显著提高实验的统计功效。通过利用实验前数据,您可以用相同的样本量检测到更小的效应,或者用更小的样本量实现相同的统计功效,从而实现更快、更准确的实验。