---
name: experiment-plan
description: 在 A/B 测试开始前写好测试方案：可证伪的假设、一个主要指标和若干护栏指标、最小可检测效应（MDE）、附计算过程的样本量和时长估算、样本比例失衡（SRM）检查、停止规则，以及事先写好的决策规则。适用于有人要对页面、定价、新手引导或邮件做 A/B 测试、分流测试或实验，并要一份测试方案、假设、样本量，或问要跑多久时。
---

# 实验方案

只有在开始前就写清楚“什么结果会改变我们的做法”，实验才值得做。样本量和决策规则要事先定好；看到数字之后再决定，会把噪音变成“胜利”。好的方案能让另一个人来跑这个测试，并得出同样的决定。

## 适用场景

- 要对页面、流程、邮件、价格或功能上线 A/B 测试之前。
- 有人问“这个要跑多久？”或“需要多少用户？”。
- 之前的测试提前下了结论，团队想要更严格的流程。
- 不适用于在没有方案的情况下解读一个已经结束的测试。不适用于定性研究：那要用 interview-guide。

## 需要准备

- 要测试的改动，以及团队为什么认为它有用。
- 主要指标和它当前的基线（例如注册率 4.0%）。没有基线就问一次；没有基线无法估算样本量，此时把样本量标为“[待定：需要基线]”。
- 每周会进入测试的流量或用户数。没有就把时长标为“[待定]”。
- 可选：值得采取行动的最小提升幅度，以及不能变差的指标。

## 步骤

1. **写一个可证伪的假设。** “基于 [依据]，我们认为对 [人群] 做 [改动] 会提高 [主要指标]。如果 [指标] 至少提升 [MDE]，就说明假设成立。”如果没有依据，就直说；那么这个测试属于探索性测试。
2. **选一个主要指标和 1 到 3 个护栏指标。** 主要指标决定测试结果。护栏指标是不能变差的指标，比如退款、退订、页面加载时间或客服工单。主要指标要选在测试周期内这个改动能影响到的、最接近最终结果的那个。
3. **设定最小可检测效应。** MDE 是测试能可靠检测到的最小变化。从业务角度来定：值得上线的最小提升。MDE 越小，需要的样本量就大得多。
4. **估算样本量和时长，并写出计算方法。** 默认值：5% 显著性水平（α）和 80% 统计功效，这是 Statsig 等工具的常用设置。对转化率，Evan Miller 的经验公式是每个版本 n = 16 × p(1 − p) ÷ δ²，其中 p 是基线转化率，δ 是 MDE 的绝对值。时长 =（n × 版本数）÷ 每周进入测试的用户数，向上取整到整周，确保覆盖一周中的每一天。上线前用计算器确认，并写明用的是哪个计算器。
5. **写停止规则。** 不要因为结果看起来显著就提前停止：Evan Miller 指出，反复偷看结果会推高假阳性。只有出现损害时才提前停止：护栏指标突破现在就定好的阈值，或者体验出现故障。解读结果前，先用卡方检验检查样本比例失衡（实际分流比例与计划不符）；微软的实验团队要求每个测试先通过这项检查。
6. **上线前写好决策规则。** 写明每种结果下怎么做：主要指标超过 MDE 且没有护栏指标被突破，就上线；有护栏指标被突破，就不上线；结果不确定，就保留对照版，并记录学到了什么。写明由谁决定。
7. **列出风险和结果解读日期。** 新奇效应、季节性、与其他测试重叠、埋点缺失。结果解读日期按时长来定，而不是按会议排期来定。

## 输出格式

```markdown
# 实验方案：[名称]

**负责人：** [姓名] · **决策人：** [姓名] · **开始：** [日期] · **结果解读：** [日期]

## 假设
基于 [依据]，我们认为对 [人群] 做 [改动] 会提高 [指标]。如果 [指标] 至少提升 [MDE]，就说明假设成立。

## 版本
- **对照版：** [当前体验]
- **版本 B：** [改动]
- **分流：** [例如 50/50] · **人群：** [谁进入测试，谁被排除]

## 指标
| 指标 | 角色 | 基线 | 阈值 |
|---|---|---|---|
| [指标] | 主要指标 | [比率] | MDE：[绝对值和相对值] |
| [指标] | 护栏指标 | [比率] | 差于 [数值] 即停止 |

## 样本量和时长
- α = [0.05] · 功效 = [80%] · 基线 p = [比率] · MDE 绝对值 δ = [数值]
- 估算：n = 16 × p(1 − p) ÷ δ² = [计算过程] ≈ 每个版本 [n]
- 每周进入测试的用户：[n] → 时长：[n] 周
- 确认工具：[计算器名称，或“待确认”]

## 停止规则
- 结果正向时不提前停止。
- 出现以下损害时停止：[护栏阈值] 或 [体验故障]。
- 样本比例检查：解读结果前，对分组人数做卡方检验；不通过就先排查，再分析。

## 决策规则
- **上线**，如果：[条件]
- **不上线**，如果：[条件]
- **结果不确定：** [怎么处理]

## 风险
- [风险] — [应对措施]
```

## 示例

**输入：** “我们想测试一个更短的注册表单（3 个字段，而不是 7 个）。定价页访客的注册率是 4%。每周大约 6,000 名访客。如果能提升 1 个百分点，我们就上线。”

**输出：**

```markdown
# 实验方案：精简注册表单

**负责人：** [姓名] · **决策人：** [姓名] · **开始：** [日期] · **结果解读：** 开始后 3 周

## 假设
基于 [待确认：依据，例如表单分析显示用户在第 4 个字段流失]，我们认为对定价页访客使用 3 个字段的注册表单会提高注册率。如果注册率至少提升 1 个百分点（从 4% 到 5%），就说明假设成立。

## 版本
- **对照版：** 7 个字段的表单
- **版本 B：** 3 个字段的表单（邮箱、密码、公司名称 [待确认]）
- **分流：** 50/50 · **人群：** 定价页的新访客；已登录用户排除在外

## 指标
| 指标 | 角色 | 基线 | 阈值 |
|---|---|---|---|
| 注册率 | 主要指标 | 4.0% | MDE：+1.0 个百分点（相对 25%） |
| 注册后 7 天内激活 | 护栏指标 | [待定：基线] | 比对照版低 [数值] 以上即停止 |
| 垃圾注册 | 护栏指标 | [待定：基线] | 翻倍即停止 |

## 样本量和时长
- α = 0.05 · 功效 = 80% · 基线 p = 0.04 · MDE 绝对值 δ = 0.01
- 估算：n = 16 × 0.04 × 0.96 ÷ 0.01² = 每个版本 6,144
- 每周进入测试的用户：6,000 → 12,288 ÷ 6,000 = 2.05 周 → 3 周
- 确认工具：上线前用样本量计算器确认

## 停止规则
- 结果正向时不提前停止。
- 垃圾注册翻倍，或表单无法提交时，停止。
- 解读结果前做样本比例检查。

## 决策规则
- **上线**，如果注册率至少高出 1 个百分点、统计显著，并且没有护栏指标被突破。
- **不上线**，如果激活率下降超过阈值，即使注册率上升。
- **结果不确定：** 保留 7 个字段的表单；下一步每次只删一个字段来测试。

## 风险
- 字段减少后，销售跟进时可用的信息可能变少 — 请销售负责人确认他们用到哪些字段。
- 测试期间如果有节假日，流量会失真 — 开始前先查日历。
```

## 发送前检查

- [ ] 假设写明了改动、人群、指标和 MDE。
- [ ] 只有一个主要指标，并且至少有 1 个带停止阈值的护栏指标。
- [ ] 写出了样本量的计算过程和所用的输入；缺少的输入标为待定。
- [ ] 时长向上取整到整周。
- [ ] 决策规则涵盖上线、不上线和结果不确定三种情况，并写明由谁决定。
- [ ] 没有出现用户没提供的基线、流量数字或依据。

## 常见错误

- 看了流量之后再选 MDE，好让测试一周就能“跑完”。先按值得上线的幅度选 MDE，再接受由此得出的时长。
- 跑一个流量撑不起来的测试。如果时长超过大约 8 周（这个技能的默认值），就测试更大的改动，或者换一个基线更高的指标。
- 结果出来之后才加护栏指标。护栏指标必须在上线前写进方案。
