4. 统计功效分析:功效函数、样本量对功效的影响、如何计算最小样本量以达到预期功效

在 Champion Challenger 实验中,我们不仅关心“差异是否统计显著”,更关心“当真实差异存在时,我们有多大的概率能检测到它”。这就是统计功效(Statistical Power)的核心问题。本章将深入剖析功效函数、样本量与功效的关系,并给出计算最小样本量的实操方法。

4.1 统计功效的定义与功效函数

统计功效定义为:当备择假设 H₁ 为真时,正确拒绝原假设 H₀ 的概率,即 Power = 1 − β,其中 β 为第二类错误(假阴性)概率。功效函数则描述了功效与效应量(Effect Size)、样本量(n)、显著性水平(α)以及检验类型之间的数学关系。

核心公式(两独立样本 t 检验,双侧):
Power = Φ( |δ| / (σ · √(2/n)) − z_{1−α/2} )
其中 δ = μ₁ − μ₂ 为真实差异,σ 为总体标准差,n 为每组样本量,z 为分位数,Φ 为标准正态累积分布函数。

从功效函数可以看出,功效是四个参数的函数:

参数 符号 对功效的影响方向 实验设计中的可操作性
效应量 δ / σ 效应量越大,功效越高 通过业务调研预估最小有意义差异
样本量 n 样本量越大,功效越高 主要设计杠杆,可主动调整
显著性水平 α α 越大,功效越高(但假阳性风险上升) 通常固定为 0.05,不轻易放宽
检验类型 单侧/双侧 单侧检验功效更高 需有明确方向性假设时才使用
💡 实验设计提示: 在 Champion Challenger 场景中,效应量通常取“业务认为值得投入的最小提升幅度”,例如转化率提升 0.5 个百分点。不要用历史观测到的效应量,那会引入“胜利者偏差”。
功效函数曲线族:不同样本量下的功效 vs 效应量 效应量 (Cohen's d) 统计功效 (Power) 0.0 0.2 0.4 0.6 0.8 0.0 0.2 0.4 0.6 0.8 1.0 Power = 0.8 n=100 n=200 n=500 α=0.05,双侧检验。样本量越大,曲线越陡峭,在更小的效应量下即可达到 0.8 功效。

4.2 样本量对功效的影响:边际递减效应

样本量是实验设计者最直接的调控工具。但样本量与功效并非线性关系——当样本量较小时,增加样本量对功效的提升非常显著;当样本量达到一定规模后,继续增加样本量带来的功效增益会迅速衰减。这就是“边际递减效应”。

⚠️ 常见误区: 盲目追求超大样本量不仅浪费计算资源和流量,还可能因“统计显著性陷阱”检测到业务上毫无意义的微小差异。Champion Challenger 实验应优先确定最小有意义效应量(MDE),再反推所需样本量。

下表展示了在固定效应量(Cohen's d = 0.3)和 α = 0.05(双侧)条件下,样本量变化对功效的具体影响:

每组样本量 (n) 统计功效 (Power) 功效增量 (ΔPower) 边际效率 (ΔPower / Δn)
50 0.29 — —
100 0.52 +0.23 0.0046
200 0.80 +0.28 0.0028
300 0.92 +0.12 0.0012
500 0.99 +0.07 0.0004

从表中可以清晰看到:从 n=50 增加到 n=100,功效提升 0.23;而从 n=300 增加到 n=500(增加 200 个样本),功效仅提升 0.07。实验设计的目标是找到“功效曲线肘部”——即达到目标功效(通常 0.8)所需的最小样本量,而不是追求极致功效。

4.3 如何计算最小样本量以达到预期功效

计算最小样本量的标准流程分为四步:

  1. 确定设计参数: 设定显著性水平 α(通常 0.05)、目标功效 1−β(通常 0.80)、检验类型(单侧/双侧)。
  2. 定义最小有意义效应量(MDE): 与业务方对齐,确定“值得 Champion 替换 Challenger 的最小提升幅度”。例如,转化率从 5% 提升到 5.3%,即绝对提升 0.3 个百分点,相对提升 6%。
  3. 预估总体标准差 σ: 使用历史数据或小规模预实验估算。对于二项分布指标(如转化率),σ = √(p(1−p)),其中 p 为基线率。
  4. 代入公式或使用统计软件求解 n: 对于两独立样本均值检验(或比例检验),可使用以下近似公式:
最小样本量近似公式(两独立样本,双侧检验):
n = 2 · ( (z_{1−α/2} + z_{1−β}) / (δ / σ) )²
其中 z_{1−α/2} 和 z_{1−β} 为标准正态分位数。
当 α=0.05(双侧),1−β=0.80 时:z_{1−α/2}=1.96,z_{1−β}=0.84,公式简化为:
n ≈ 2 · (2.80 / (δ/σ))² = 15.68 / (δ/σ)²

实际工作中,推荐使用 Python 的 statsmodels 库或 R 的 pwr 包进行精确计算。以下是 Python 代码示例:

import statsmodels.stats.power as smp

# 参数设置
effect_size = 0.3       # Cohen's d = 0.3
alpha = 0.05            # 显著性水平
power = 0.80            # 目标功效
ratio = 1.0             # 对照组与实验组样本量比例

# 计算所需样本量(每组)
n_per_group = smp.tt_ind_solve_power(
    effect_size=effect_size,
    alpha=alpha,
    power=power,
    ratio=ratio,
    alternative='two-sided'
)

print(f"每组所需最小样本量: {np.ceil(n_per_group)}")
# 输出: 每组所需最小样本量: 176
🔧 实操建议: 在 Champion Challenger 实验中,建议在计算出的最小样本量基础上增加 10%~20% 的余量,以应对流量波动、用户流失、数据清洗等不可控因素。同时,如果实验涉及多个指标,应取所有指标所需样本量的最大值。
最小样本量计算决策流程 ① 输入设计参数 α=0.05, Power=0.80, 双侧检验 ② 定义最小有意义效应量 (MDE) 例如:转化率提升 0.3pp (相对 6%) ③ 预估总体标准差 σ 历史数据或预实验:σ = √(p(1−p)) ④ 代入公式 / 统计软件求解 n n ≈ 15.68 / (δ/σ)² 或 smp.tt_ind_solve_power() 输出:每组最小样本量 n 业务对齐 是前提 建议增加 10%~20% 余量

4.4 实际案例:Champion Challenger 转化率实验

场景: 某电商平台当前 Champion 版本转化率为 5.0%,业务方认为 Challenger 版本至少需要将转化率提升到 5.4%(绝对提升 0.4pp,相对提升 8%)才值得全量上线。设定 α=0.05,目标功效 0.80,采用双侧检验。

计算步骤:

  • 效应量: δ = 0.004(绝对差异),σ = √(0.05 × 0.95) ≈ 0.2179,Cohen's h = 0.004 / 0.2179 ≈ 0.0184(比例检验使用 arcsine 转换更精确,此处为近似)。
  • 代入公式: n ≈ 15.68 / (0.0184)² ≈ 15.68 / 0.000338 ≈ 46,390(每组)。
  • 使用 Python 精确计算(比例检验):
from statsmodels.stats.proportion import proportion_effectsize
from statsmodels.stats.power import zt_ind_solve_power

# 计算效应量 (Cohen's h)
effect_h = proportion_effectsize(prop1=0.054, prop2=0.050, method='arcsin')
print(f"Cohen's h = {effect_h:.4f}")

# 计算所需样本量
n_per_group = zt_ind_solve_power(
    effect_size=effect_h,
    alpha=0.05,
    power=0.80,
    ratio=1.0,
    alternative='two-sided'
)
print(f"每组所需最小样本量: {np.ceil(n_per_group)}")
# 输出: Cohen's h = 0.0184
# 输出: 每组所需最小样本量: 46390
📊 结果解读: 每组需要约 46,390 个用户,两组共约 92,780 个用户。如果平台日均流量为 50,000,则实验需要运行约 2 天。考虑到流量波动和用户去重,建议运行 3~4 天,并预留 10% 的样本余量(每组约 51,000)。

4.5 常见陷阱与避坑指南

陷阱 描述 正确做法
使用观测效应量代替 MDE 用历史实验观测到的效应量作为输入,导致样本量被低估 始终使用业务定义的“最小有意义效应量”
忽略多重比较校正 多个指标同时检验时未调整 α,导致整体假阳性率膨胀 使用 Bonferroni 或 FDR 校正,或提高单指标 α 要求
假设总体标准差已知且固定 用点估计代替区间,忽略标准差的不确定性 使用保守估计(取标准差上限),或进行敏感性分析
样本量计算后不做余量预留 实验过程中因用户流失、数据异常导致有效样本不足 在计算值基础上增加 10%~20% 余量
⚠️ 关键提醒: 统计功效分析不是一次性工作。在实验进行中,应持续监控实际效应量和功效变化。如果中期分析发现实际效应量远小于预期,应考虑延长实验时间或重新评估实验必要性,避免在低功效下做出错误结论。