Cuped-AB检验

Cuped-AB检验是AB测试方法论中的高级方法,全称为”Controlled-experiment Using Pre-Experiment Data for AB testing”,它通过利用实验前的相关数据来降低方差,显著提高实验的统计功效。

适用场景

  • 指标类型:二分类指标或连续指标
  • 关键特征:存在与目标指标强相关的预实验数据
  • 应用优势:用”预知信息”降低方差,显著提高检验功效
  • 典型场景:用户行为有历史数据可参考的实验

核心原理

Cuped-AB检验是CUPED方法在AB测试中的具体应用,核心思想是通过控制与结果相关的协变量来减少方差。

数学表达

对于结果变量Y和预实验协变量X,Cuped调整后的新变量为:

其中:

  • 是实验期间观察到的原始指标
  • 是预实验期的相关指标(协变量)
  • 是X对Y的影响系数(通常通过回归估计)
  • 是X的总体均值

关键步骤

  1. 选择合适的预实验协变量(与目标指标高相关)
  2. 估计协变量与目标指标间的关系(值)
  3. 计算调整后的指标Y_adj
  4. 使用调整后的指标进行标准AB测试(如两比例Z-t检验

方法优势

与传统AB测试方法相比,Cuped-AB检验具有显著优势:

  1. 大幅提高统计功效:同样样本量下能检测到更小的效应
  2. 减少所需样本量:达到同样功效所需样本量减少
  3. 缩短实验周期:加快决策速度,提高迭代效率
  4. 增强结果稳定性:减少随机波动对结果的影响

实际应用流程

  1. 准备阶段

    • 收集预实验数据作为协变量
    • 确保协变量与预期指标有较强相关性
    • 验证实验组和对照组的协变量分布相似
  2. 分析阶段

    • 计算最优θ值(通常通过最小二乘法)
    • 对原始指标进行CUPED调整
    • 基于调整后指标进行假设检验
  3. 结果解读

    • 确认方差减少效果
    • 评估统计显著性
    • 解读实际业务意义

与其他方法的结合

Cuped-AB检验可以与多种统计方法结合:

实施注意事项

  1. 协变量选择

    • 协变量必须是实验前的数据,不能被实验本身影响
    • 协变量应与目标指标有较强相关性
    • 避免使用过多协变量导致过拟合
  2. 方法限制

    • 需要有可靠的预实验数据
    • 对θ估计的准确性依赖较高
    • 在某些场景可能需要非线性CUPED方法

代码实现示例

# Python实现CUPED方法
import numpy as np
import statsmodels.api as sm
 
# 假设有预实验数据X和实验结果Y
# X_control, X_treatment: 对照组和实验组的预实验数据
# Y_control, Y_treatment: 对照组和实验组的实验结果
 
# 步骤1: 估计theta
X_all = np.concatenate([X_control, X_treatment])
Y_all = np.concatenate([Y_control, Y_treatment])
X_all_with_const = sm.add_constant(X_all)
model = sm.OLS(Y_all, X_all_with_const)
results = model.fit()
theta = results.params[1]  # 第一个参数是常数项,第二个是theta
 
# 步骤2: 计算X的均值
mu_X = np.mean(X_all)
 
# 步骤3: 计算CUPED调整后的Y
Y_control_adj = Y_control - theta * (X_control - mu_X)
Y_treatment_adj = Y_treatment - theta * (X_treatment - mu_X)
 
# 步骤4: 使用调整后的Y进行标准t检验
from scipy import stats
t_stat, p_value = stats.ttest_ind(Y_treatment_adj, Y_control_adj)

Cuped-AB检验是用户增长与营销优化方法论中提高实验效率的重要工具,尤其适合需要高敏感度检测或样本量有限的场景。