第4章 样本量计算前置条件:最小可探测效应、统计功效、显著性水平、流量比例、计算工具与查表
样本量计算是A/B测试从设计走向执行的必经关卡。本章围绕5个核心前置条件——最小可探测效应(MDE)、统计功效、显著性水平、流量比例以及计算工具/查表——给出可复用的SOP操作框架。在实验开始前完成本章流程,能有效避免“跑完发现样本量不足”或“流量浪费在无法检测的微小效应上”两类典型问题。
适用场景
| 场景 | 说明 | 优先级 |
|---|---|---|
| 设计新A/B测试实验时 | 在编写实验计划阶段,需要确定每组最低样本量 | 必用 |
| 评估实验可行性 | 在给定每日流量下判断实验是否能在合理时间内完成 | 必用 |
| 多指标实验参数调优 | 当需要同时检测多个效应量时,对比不同参数组合下的样本需求 | 推荐 |
| 评审已有实验方案 | 复盘历史实验的样本量是否充足,判断结果可信度 | 可选 |
前置条件
- 明确的实验假设:已完成第3章“假设形成与指标定义”,知道核心指标(如转化率、留存率)及其基线值。
- 基线指标数值:至少过去7天的稳定均值,用于计算相对MDE。
- 实验设计类型:确认使用双尾检验还是单尾检验(通常为双尾)。
- 可用流量预估:每日可进入实验的独立用户数(或事件数)。
- 业务最小值得关注提升:产品/业务方给出“低于此值不值得投入工程资源”的效应门槛。
操作步骤
-
设定显著性水平(α)
- 默认值:0.05(双尾),对应95%置信区间。
- 严格场景(如涉及资金/安全):0.01。
- 探索性场景:0.10。
- 📌 输出:记录所选的α值,并在实验方案中注明。
-
设定统计功效(1 − β)
- 默认值:0.80(β = 0.20)。
- 关键决策实验(如改版核心漏斗):建议 0.90。
- 注意:功效每提高0.10,样本量约增加30%~50%。
- 📌 输出:记录所选的功效值。
-
确定最小可探测效应(MDE)
- 定义:在给定α和功效下,实验能够可靠检测到的最小效应量。
- MDE = 绝对提升(如转化率+1%)或相对提升(如+10%)。
- 业务驱动:产品经理提供“最小值得投入的资源门槛”。例如:若日活提升0.5%即可覆盖开发成本,则MDE设为0.5%。
- 经验参考:多数产品优化实验的MDE在相对提升5%~20%之间。
- 💡 选值技巧:MDE越小,所需样本量越大。若流量有限,可适当放宽MDE,优先检测大效应。
- 📌 输出:记录MDE的绝对值与相对值。
-
确定流量分配比例
- 默认:对照组 : 实验组 = 50 : 50。
- 若存在多个实验组,需调整比例(如40:30:30)。
- 比例偏差会导致其中一组样本量不足,降低整体统计功效。
- 📌 输出:记录流量分配方案(如“对照组50%,实验组50%”)。
-
选择计算工具并执行计算
- 在线工具:Evan Miller’s A/B测试样本量计算器、Optimizely Sample Size Calculator。
- Python:使用
statsmodels或自定义函数。 - R:使用
pwr包。 - 查表法:使用预计算的样本量速查表(见下方示例)。
Python 计算示例(双样本比例检验):
import math def calc_sample_size(p1, mde_rel, alpha=0.05, power=0.80, ratio=1): """ p1 : 基线转化率 (0~1) mde_rel : 相对提升 (如0.10 表示10%) alpha : 显著性水平 power : 统计功效 ratio : 实验组/对照组样本量比值 """ p2 = p1 * (1 + mde_rel) z_alpha = 1.96 # alpha=0.05 双尾 z_beta = 0.84 # power=0.80 p_avg = (p1 + p2 * ratio) / (1 + ratio) n = (z_alpha + z_beta)**2 * (p1*(1-p1)/ratio + p2*(1-p2)) / (p2-p1)**2 return math.ceil(n) # 示例:基线转化率10%,相对提升10%,α=0.05,功效=0.80,1:1分配 n_per_group = calc_sample_size(0.10, 0.10) print(f"每组所需样本量: {n_per_group}")查表示例(基线转化率10%,α=0.05,功效=0.80):
相对提升(MDE) 每组所需样本量 5% ~15,700 10% ~3,900 15% ~1,700 20% ~950 📌 输出:记录每组样本量、总样本量、计算工具名称及版本。 -
验证流量可行性
- 公式:所需总样本量 ÷ 每日可用流量 ≤ 可接受实验天数。
- 若超出可用范围,需返回步骤1~4调整参数(如增大MDE、降低功效或延长实验周期)。
- ⚠️ 常见错误:直接用总样本量除以日流量,忽略流量比例中的对照组/实验组分配。务必按“每组样本量 × 组数”计算总样本量。
- 📌 输出:可行性结论(通过 / 需调整)。
核心参数速查表
| 参数 | 符号 | 常见取值 | 对样本量的影响 |
|---|---|---|---|
| 显著性水平 | α | 0.05(默认)、0.01、0.10 | α↓ → 样本量↑ |
| 统计功效 | 1−β | 0.80(默认)、0.90 | 功效↑ → 样本量↑ |
| 最小可探测效应 | MDE | 5%~20%(相对提升) | MDE↓ → 样本量↑↑ |
| 流量比例 | r | 1:1(默认)、2:1、3:1 | 偏离1:1 → 总样本量↑ |
输入输出物
| 类别 | 项目 | 说明 |
|---|---|---|
| 输入 | α 值 | 显著性水平(默认0.05) |
| 功效值 | 统计功效(默认0.80) | |
| 基线指标值 | 当前核心指标数值(如转化率10%) | |
| 最小可探测效应(MDE) | 绝对或相对提升值 | |
| 输出 | 每组所需样本量 | 对照组和实验组各自需要的最小样本量 |
| 总样本量 | 各组样本量之和 | |
| 预估实验天数 | 总样本量 ÷ 每日可用流量 |
责任边界
| 角色 | 职责 | 交付物 |
|---|---|---|
| 产品经理 | 提供业务层面的MDE期望值,确认“最小值得关注的提升” | MDE 业务定义文档 |
| 数据分析师 | 设定统计参数(α、功效),执行计算,输出样本量报告 | 样本量计算表 + 可行性结论 |
| 工程团队 | 确认流量分配的技术可行性,提供每日可用流量数据 | 流量预估数据 |
| 实验负责人 | 审批最终参数组合,确保方案在资源和时间上可执行 | 实验计划审批单 |
记录材料
- □ 显著性水平 α:_____(默认0.05)
- □ 统计功效 1−β:_____(默认0.80)
- □ MDE 绝对值:_____,相对值:_____
- □ 流量分配比例(对照组:实验组):_____
- □ 计算工具名称/版本:_____
- □ 每组样本量:_____,总样本量:_____
- □ 每日可用流量:_____,预估实验天数:_____
- □ 可行性结论:□ 通过 □ 需调整
异常处理
| 异常现象 | 根本原因 | 处理措施 |
|---|---|---|
| 所需样本量远超可用流量 | MDE设置过小,或功效/α要求过高 | 增大MDE(接受只检测较大效应),或降低功效至0.80,或延长实验周期 |
| MDE无法被业务方明确给出 | 缺乏历史效应量参考 | 使用行业经验值(如相对提升10%),或做一次小流量预实验估算效应量 |
| 流量比例不是1:1 | 技术限制或多实验组冲突 | 使用支持非均衡比例的计算公式,重新计算每组样本量 |
| 计算工具输出结果差异大 | 不同工具使用的近似公式或参数默认值不同 | 统一使用同一种工具(推荐 Python + statsmodels),并在实验方案中注明计算方式 |
验收标准
- 所有5个前置条件(α、功效、MDE、流量比例、计算工具)均已明确记录。
- 样本量计算结果在可用流量范围内,或已给出明确的调整方案。
- 计算过程可复现:使用的工具、参数值、计算公式(或代码)均已存档。
- 业务方已确认MDE符合“最小值得关注”的业务预期。
- 数据组和工程组已签字确认流量分配方案可行。