paper2skills Playbook

CUPED Variance Reduction(方差缩减)

Skill-CUPED-Variance-Reduction · 02-A_B实验

causalexperiment其他WF-G Listing内容优化
年化 ROI加速实验迭代,隐性价值
业务视角
适用角色运营负责人 / 产品经理 · 广告优化师 · 选品负责人
适用平台Amazon Listing · TikTok 广告素材 · DTC 落地页
什么情况下用改了主图/标题/价格,不确定销量变化是改动导致的还是流量波动;两个方案团队各持己见,需要数据裁决
成功是什么样的每次改动都有 ≥95% 置信度的数据结论,好的改动快速全量,坏的及时止损
业务痛点
改了主图感觉好多了但不确定小范围测试结果好全量后没效果测试周期短结论不可靠

1. 解决的问题

CUPED (Controlled-experiment Using Pre-Experiment Data) 用实验前数据作为协变量,减少实验组间方差,使同样的样本量能检测到更小的效应量。核心公式:$Y_{cuped} = \bar{Y} - \theta(\bar{X} - \mu_X)$,其中 $X$ 是实验前同一用户的指标值,$\theta = \text{Cov}(Y,X)/\text{Var}(X)$。方差缩减率 $\approx 1 - \rho^2_{Y,X}$。若实验前购买金额

2. 核心算法逻辑

CUPED (Controlledexperiment Using PreExperiment Data) 用实验前数据作为协变量,减少实验组间方差,使同样的样本量能检测到更小的效应量。核心公式:$Y_{cuped} = \bar{Y} \theta(\bar{X} \mu_X)$,其中 $X$ 是实验前同一用户的指标值,$\theta = \text{Cov}(Y,X)/\text{Var}(X)$。方差缩减率 $\approx

3. 业务应用场景

A/B 测试吸奶器新详情页——实验前 14 天用户浏览时长作为协变量 $\rho=0.65$→方差缩减 42%→所需样本量从 10,000 降至 5,800。测试周期从 2 周缩短到 10 天。

年化:加速实验迭代,隐性价值 20-40 万元。

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

加速实验迭代,隐性价值

7. 代码模板

代码块数量:1 · 路径:未检测到

import numpy as np

def cuped_adjust(Y_treatment, Y_control, X_treatment, X_control):
    theta = np.cov(np.concatenate([Y_treatment, Y_control]), 
                   np.concatenate([X_treatment, X_control]))[0,1] / np.var(np.concatenate([X_treatment, X_control]))
    Yt_adj = Y_treatment - theta * (X_treatment - np.mean(X_treatment))
    Yc_adj = Y_control - theta * (X_control - np.mean(X_control))
    var_reduction = 1 - np.var(Yt_adj - Yc_adj) / np.var(Y_treatment - Y_control)
    return {'adj_diff': np.mean(Yt_adj)-np.mean(Yc_adj), 'var_reduction': var_reduction}

np.random.seed(42)
X = np.random.normal(100,20,2000)
Yt = X*0.7 + np.random.normal(105,8,1000)
Yc = X*0.7 + np.random.normal(100,8,1000)
r = cuped_adjust(Yt, Yc, X[:1000], X[1000:])
print(f"Variance reduction: {r['var_reduction']:.0%}")
assert r['var_reduction'] > 0.3
print("[✓] CUPED 测试通过")

8. 论文来源

未自动抽取;请查看原始 Skill 卡片。