4. 分流比例设计:等比例分流 vs 非等比例分流、最小样本量估算、统计功效分析

分流比例设计是A/B测试的基石,直接影响实验的灵敏度、持续时间和资源消耗。本章将深入剖析等比例与非等比例分流的适用场景,并系统讲解最小样本量估算与统计功效分析的核心方法。

4.1 等比例分流 vs 非等比例分流

分流比例决定了实验组与对照组的样本分配方式。两种主流策略各有优劣,选择取决于实验目标、风险容忍度和业务约束。

对比维度 等比例分流 (50/50) 非等比例分流 (如 10/90, 1/99)
统计功效 在总样本固定时,功效最高 功效降低,需更大总样本补偿
实验时长 最短,收敛最快 更长,尤其当实验组比例极小时
风险暴露 50%用户暴露于新模型,风险较高 实验组比例小,风险可控
业务干扰 对整体指标影响较大 对核心业务指标冲击小
适用场景 低风险、高置信度要求的核心验证 高风险模型、灰度发布、流量敏感型业务
关键原则:在风险可控的前提下,优先选择等比例分流以最大化统计功效。非等比例分流仅用于高风险实验或流量受限场景,且需提前计算样本量补偿。

4.2 最小样本量估算

最小样本量是确保实验能够检测到预期效应量的最低用户数。估算公式基于假设检验原理,核心输入参数包括:

  • 效应量 (Effect Size, δ):预期的最小可检测差异(如转化率提升 0.5%)
  • 显著性水平 (α):通常设为 0.05(I 类错误概率)
  • 统计功效 (1-β):通常设为 0.80(II 类错误概率)
  • 基线转化率 (p₀):对照组当前指标值

对于二项分布指标(如转化率),单组最小样本量估算公式为:

n = ( (Z_α/2 + Z_β)² × (p₀(1-p₀) + p₁(1-p₁)) ) / (p₁ - p₀)²

其中:
Z_α/2 = 1.96 (α=0.05 双尾)
Z_β   = 0.84 (功效=0.80)
p₀    = 对照组基线转化率
p₁    = 实验组预期转化率 (p₀ + δ)
实用建议:实际应用中,建议在理论样本量基础上增加 10%-20% 的冗余,以应对用户流失、数据清洗和流量波动。可使用在线计算器或 Python 的 statsmodels.stats.proportion.proportion_effectsize 快速估算。

4.3 统计功效分析

统计功效是实验正确拒绝原假设(即检测到真实差异)的概率。功效分析帮助回答:“如果模型确实有效,我们有多大把握能发现它?”

功效受四个因素影响:

  1. 样本量 (n):样本越大,功效越高
  2. 效应量 (δ):效应越大,越容易被检测
  3. 显著性水平 (α):α 越宽松(如 0.10),功效越高,但假阳性风险增加
  4. 数据变异性 (σ):方差越小,功效越高
常见陷阱:许多团队只关注样本量估算,却忽略实验后的功效验证。如果实验结果为“不显著”,应先检查功效是否足够,而非直接判定模型无效。低功效下的“不显著”结论不可靠。

4.4 分流比例与样本量、功效的关系

下图展示了不同分流比例下,为达到 80% 功效所需的总样本量变化趋势:

分流比例 vs 所需总样本量 (功效=80%, α=0.05, δ=1%) 50/50 30/70 20/80 10/90 5/95 0 50k 100k 150k 200k 50k 77k 102k 154k 231k 实验组比例越低,所需总样本量呈非线性增长,5/95 分流需 231k 样本,是 50/50 的 4.6 倍

4.5 分流比例选择决策流程

以下决策树帮助团队根据实验条件选择最优分流比例:

分流比例选择决策流程 开始:确定实验目标 模型风险是否较高? 是 否 非等比例分流 (5/95 或 10/90) 等比例分流 (50/50) 计算最小样本量 (按实验组比例调整) 计算最小样本量 (标准公式) 验证功效 ≥ 80% 启动实验

4.6 实战案例:样本量与功效计算

假设某推荐模型预期将点击率从 5% 提升至 5.5%(效应量 δ=0.5%),设定 α=0.05,功效=0.80:

import math

p0 = 0.05      # 基线点击率
p1 = 0.055     # 预期点击率
delta = p1 - p0
z_alpha = 1.96  # α=0.05 双尾
z_beta = 0.84   # 功效=0.80

# 单组样本量公式
n = ((z_alpha + z_beta)**2 * (p0*(1-p0) + p1*(1-p1))) / (delta**2)
n = math.ceil(n)
print(f"等比例分流 (50/50): 每组需 {n} 样本,总样本 {2*n}")
# 输出: 等比例分流 (50/50): 每组需 15682 样本,总样本 31364

# 非等比例分流 (10/90) 调整
n_control = math.ceil(n * (0.9 / 0.1))  # 对照组放大
n_treatment = n
print(f"非等比例分流 (10/90): 实验组 {n_treatment},对照组 {n_control},总样本 {n_treatment + n_control}")
# 输出: 非等比例分流 (10/90): 实验组 15682,对照组 141138,总样本 156820
结论:等比例分流仅需 31k 总样本,而非等比例 10/90 分流需要 157k 总样本——是前者的 5 倍。在风险允许时,等比例分流能大幅降低实验成本和时间。

4.7 常见误区与最佳实践

误区 正确做法
只关注样本量,忽略功效验证 实验前计算样本量,实验后验证实际功效
非等比例分流不调整样本量 按比例因子放大对照组样本,确保实验组达到最小样本量
效应量设置过小或过大 基于历史数据和业务价值设定合理的效应量
忽略多重比较校正 多指标或多版本实验时,使用 Bonferroni 或 FDR 校正
实验中途调整分流比例 严格保持分流比例不变,避免引入时间偏差
最佳实践清单:
  • 实验前使用功效分析工具(如 G*Power、Python statsmodels)进行预计算
  • 为高风险实验设置“止损线”,一旦负面指标超过阈值立即停止
  • 记录每次实验的分流比例、样本量、功效和效应量,形成实验知识库
  • 在实验报告中明确标注“功效是否达标”,提升结论可信度