Files
test-repo/docs/zh-cn/appendix/5-data/ab-testing.md
T
2026-02-23 12:09:47 +08:00

19 KiB
Raw Blame History

A/B 测试:用数据"做决策"

::: tip 🎯 核心问题 如何科学地验证产品改动的效果? 这就像问:新按钮真的更好用吗?还是用户只是因为新鲜感多点了一下?A/B 测试解决的就是"用数据说话"的问题——不是我觉得好,而是数据证明真的好。 :::


0. 先问一个问题:你有没有经历过这些"伪成功"?

场景一:被数据骗了

你改了购物车的结算按钮颜色,从蓝变红。一周后一看数据:点击率提升了 30%!

你很高兴,宣布大获成功。但三周后,点击率悄悄回到了原水平,甚至还不如之前。

真相:这是"新奇效应"——用户因为好奇多点了几次,新鲜劲过后就恢复了。

场景二:假阳性陷阱

你同时测试了 20 个不同的改进方案。有一个方案显示"统计显著"(p < 0.05),你立即全量上线。

一个月后,用户满意度下降了。

真相:同时测试 20 个方案,即使全部无效,也有 64% 的概率至少有一个"显著"1 - 0.95^20)。你看到的"显著"只是随机波动。

场景三:辛普森悖论

你的数据显示:B 版本的转化率(7.3%)高于 A 版本(5.6%)。但拆分数据后却发现:

  • 移动端:A 8% > B 6%
  • 桌面端:A 4% > B 3%

每个渠道 A 都更好,但合并后 B 反而赢了

真相:流量分配不均(移动端占 80% 流量,且更多分配给了 B),导致加权平均后 B 看起来更好。


好的 A/B 测试就像科学的临床试验——严谨设计、足够样本、长期观察,才能得出可信结论。


1. 什么是 A/B 测试?

A/B 测试是一种对比实验方法:将用户随机分成两组,分别体验不同版本,比较关键指标(如转化率、点击率)的差异,从而判断哪个版本更优。

1.1 用医学试验来类比

医学试验 A/B 测试 说明
对照组(安慰剂) A组(对照组) 使用当前版本,作为基准
实验组(新药) B组(实验组) 使用新版本,验证效果
治愈率 转化率 衡量是否"成功"的指标
统计显著性 统计显著性 结果是否可信

关键原则:除了版本不同,其他所有条件必须相同(随机分配、同时运行、相同用户群)。

1.2 A/B 测试的完整流程

1. 提出假设
   ↓
2. 设计实验(确定指标、样本量)
   ↓
3. 开发并部署实验
   ↓
4. 运行实验(收集数据)
   ↓
5. 分析结果(统计检验)
   ↓
6. 做出决策(全量/放弃/迭代)

2. A/B 测试的核心价值

2.1 避免"拍脑袋决策"

没有 A/B 测试时,决策往往依赖:

  • HiPPOHighest Paid Person's Opinion):最高领导说了算
  • 设计直觉:设计师觉得这样更好看
  • 模仿竞品:竞争对手这么做,我们也这么做

问题:这些方法都忽略了真实的用户行为。

2.2 降低风险

上线前不知道用户会不会买账?先小范围测试,用 1% 流量验证,避免全量上线后造成损失。

2.3 持续优化

通过不断的小实验,积累小的提升,最终实现显著增长。这就是"增长黑客"的核心方法。


3. 实验设计:对照组与实验组

3.1 随机分配的重要性

正确的做法:每个用户有 50% 概率进入 A 组,50% 概率进入 B 组

错误的做法

  • 前半天所有用户进 A 组,后半天进 B 组(时间差异)
  • 移动端用户进 A 组,桌面端进 B 组(设备差异)
  • 新用户进 A 组,老用户进 B 组(用户类型差异)

为什么随机很重要?

只有随机分配,才能保证两组用户在其他所有方面都相似(年龄、设备、使用习惯等),这样才能公平比较。

3.2 流量分配演示

👇 动手试试看:点击下方按钮,观察流量如何随机分配到两组:

::: tip 💡 50/50 分配是最优的 虽然有 30/70 或 20/80 的分配策略,但 50/50 能最快检测出差异。除非你对新版本极度不放心,否则不推荐使用非对称分配。 :::


4. 样本量计算:需要多少用户才够?

4.1 为什么不能"看着办"

样本量太小 → 统计功效不足,即使有真实差异也检测不出来(假阴性) 样本量太大 → 浪费资源,运行时间过长

正确做法:实验前计算所需样本量。

4.2 影响样本量的四个因素

因素 影响 典型值
基准转化率 越高,所需样本越少 2% - 10%
最小检测提升 越小,所需样本越多 相对提升 5% - 20%
显著性水平 (α) 越小,所需样本越多 0.05 (95%置信度)
统计功效 (1-β) 越大,所需样本越多 0.8 (80%功效)

直觉理解

  • 你想检测的差异越小(比如只提升 5%),就需要更多样本才能"看清"
  • 你想要的结果越确定(比如 99% 置信度 vs 95%),就需要更多证据

4.3 样本量计算公式

对于比例指标(转化率),简化的样本量公式为:

n = (Zα + Zβ)² × [p1(1-p1) + p2(1-p2)] / (p2 - p1)²

其中:

  • n = 每组所需样本量
  • Zα = 显著性水平对应的 Z 值(α=0.05 时,Zα=1.96
  • = 统计功效对应的 Z 值(80%功效时,Zβ=0.84
  • p1 = 基准转化率
  • p2 = 目标转化率 = p1 × (1 + 相对提升)

4.4 样本量计算示例

场景:购物车结算按钮,当前转化率 5%,希望检测 20% 的相对提升(即 6%)。

  • p1 = 5% = 0.05
  • p2 = 6% = 0.06
  • Zα = 1.96 (α=0.05)
  • = 0.84 (80%功效)
n = (1.96 + 0.84)² × [0.05×0.95 + 0.06×0.94] / (0.06 - 0.05)²
n ≈ 6,932

每组需要 6,932 个样本,两组共需 13,864 个样本

如果每天有 5,000 个访客,大约需要 3 天才能达到足够样本量。

::: tip 💡 在线计算工具


5. 统计显著性:如何判断结果"可信"?

5.1 P 值是什么?

P 值:如果两个版本真的没有差异(零假设为真),观察到当前数据(或更极端数据)的概率。

通俗理解:P 值越小,说明"纯属巧合"的可能性越小。

常用阈值

  • p < 0.05:统计显著,有 95% 的信心说差异不是随机的
  • p < 0.01:高度显著,有 99% 的信心
  • p ≥ 0.05:不显著,差异可能是随机波动

5.2 置信区间

置信区间:真实差异可能落入的范围。

示例:

  • 相对提升:+15%
  • 95% 置信区间:[+5%, +25%]

解读:我们有 95% 的信心认为,真实提升在 5% 到 25% 之间。

::: warning ⚠️ 常见误解 置信区间不是"有 95% 的概率在这个区间内",而是"如果我们重复实验 100 次,95 次的区间会包含真实值"。

对于单次实验,真实值要么在区间内,要么不在。但我们不知道是哪种情况。 :::

5.3 A/B 组结果对比演示

👇 动手试试看:调整转化率和样本量,观察统计显著性的变化:

关键观察

  1. 相对提升越大P 值越小(越容易显著)
  2. 样本量越大P 值越小(越容易显著)
  3. 转化率越低,需要更大样本量才能达到相同显著性

6. A/B 测试的常见误区

6.1 过早停止实验(Peeking 问题)

问题:看到结果"显著"就立即停止实验,不再继续观察。

真相:P 值会随着数据积累而波动。你看到的"显著"可能只是暂时的随机波动。

Airbnb 的真实案例

  • 第 7 天:p = 0.05,结果显著,B 版本领先
  • 第 14 天:p = 0.15,不再显著
  • 第 30 天:p = 0.42,完全中性

如果第 7 天就停止,就会得出错误的结论。

解决方案

  • 实验前计算所需样本量,达到后才能分析
  • 使用序贯检验(Sequential Testing),预设"窥探"点和调整后的显著性阈值

6.2 辛普森悖论

问题:分组看 B 更差,但合并后 B 反而更好(或相反)。

根本原因:混淆变量(Confounding Variable)分布不均。

示例

移动端(占 80% 流量):
- A 组:8% 转化率(分配了 40% 流量)
- B 组:6% 转化率(分配了 40% 流量)

桌面端(占 20% 流量):
- A 组:4% 转化率(分配了 10% 流量)
- B 组:3% 转化率(分配了 10% 流量)

合并数据:
- A 组:(8%×0.4 + 4%×0.1) / 0.5 = 7.2%
- B 组:(6%×0.4 + 3%×0.1) / 0.5 = 5.4%

但如果是这样分配:
移动端:A 组 40% 流量,B 组 40% 流量
桌面端:A 组 0% 流量,B 组 20% 流量(不平衡!)

合并数据:
- A 组:(8%×0.4) / 0.4 = 8%
- B 组:(6%×0.4 + 3%×0.2) / 0.6 = 5%
但如果不加权,直接平均:A=5.6%, B=7.3%B 反而赢了!)

解决方案

  • 确保随机化正确,每个子群体流量分配一致
  • 按关键维度(设备、流量来源、用户类型)分别分析
  • 使用 A/A 测试验证随机化是否有效

6.3 P-hackingP 值操纵)

问题:通过尝试不同方法,直到找到"显著"结果。

常见形式

  • 子群挖掘:主指标不显著,就按年龄、地区、设备细分,宣称某个子群显著
  • 选择性报告:同时测了 10 个指标,只报告显著的 1 个
  • 延长实验:看到 p = 0.06,就再跑几天,"看看能不能降到 0.05 以下"

问题:这些都会大幅增加假阳性率。

解决方案

  • 预先注册假设和指标,实验过程中不改变
  • 同时测试多个指标时,使用 Bonferroni 校正或 FDRFalse Discovery Rate)控制
  • 严格控制"窥探"次数

6.4 新奇效应

问题:用户因好奇点击新功能,导致短期数据虚高。

示例

  • 新按钮上线首周:点击率 +30%
  • 第二周:+15%
  • 第三周:+5%
  • 第四周:0%(甚至 -2%,新鲜感过后,用户发现并不好用)

解决方案

  • 至少运行 2 个完整业务周期(通常 2-4 周)
  • 观察趋势是否稳定,而不是只看绝对值
  • 对长期指标(如用户留存)的重视度高于短期指标(如点击率)

6.5 统计功效不足

问题:样本量太小,即使有真实差异也检测不出来(假阴性)。

示例:预期提升 5%,但只跑了 1,000 个样本,结果显示"不显著",你就放弃了。

实际上,如果检测 5% 的提升,需要约 30,000 样本才能达到 80% 功效。

解决方案

  • 实验前必须计算样本量
  • 如果资源有限,可以考虑:
    • 提高最小检测提升(比如从 5% 改为 10%)
    • 降低统计功效(从 80% 降到 70%,但会增加假阴性风险)
    • 延长测试时间

7. 实战案例

7.1 案例 1:按钮颜色测试

背景:电商网站购物车结算按钮,当前为蓝色,想测试红色是否能提升转化率。

实验设计

  • 假设:红色按钮更醒目,能提升转化率 10%
  • 指标:结算按钮点击率(点击次数 / 访问次数)
  • 基准转化率:5%
  • 目标转化率:5.5%(相对提升 10%)
  • 所需样本量:每组约 30,000(使用在线计算器)
  • 流量分配:50/50
  • 显著性水平:α = 0.05
  • 统计功效:80%

结果

  • 运行 7 天后达到所需样本量
  • A 组(蓝):5.02%
  • B 组(红):5.15%
  • 相对提升:+2.6%
  • P 值:0.23(不显著)
  • 95% 置信区间:[-1.7%, +6.9%]

决策:结果不显著,无法确认红色按钮更好。考虑到:

  1. 转化率提升很小(即使真实,也只有 2.6%)
  2. 置信区间包含 0(甚至包含负值)
  3. 红色按钮可能影响品牌一致性

最终决定:保持蓝色按钮,尝试其他优化方向(如按钮文案、大小、位置)。


7.2 案例 2:注册流程简化

背景:SaaS 产品注册流程需要填写 10 个字段,想测试减少到 5 个字段是否能提升注册率。

实验设计

  • 假设:字段更少 → 注册率更高
  • 指标:注册完成率(完成注册数 / 开始注册数)
  • 基准转化率:25%
  • 目标转化率:30%(相对提升 20%
  • 所需样本量:每组约 2,000
  • 流量分配:50/50

结果

  • A 组(10 字段):24.8%
  • B 组(5 字段):31.2%
  • 相对提升:+25.8%
  • P 值:< 0.001(高度显著)
  • 95% 置信区间:[+18.2%, +33.4%]

决策:结果高度显著,全量上线 5 字段版本。

后续跟踪

  • 新用户注册率提升了 25.8%
  • 用户质量(后续付费率)没有下降
  • 用户反馈"注册很快很方便"

7.3 案例 3:推荐算法优化

背景:视频网站推荐算法,想测试新的协同过滤算法是否能提升用户观看时长。

实验设计

  • 假设:新算法推荐更精准 → 观看时长更长
  • 指标:人均每日观看时长(分钟)
  • 基准:45 分钟/天
  • 目标:提升 5% → 47.25 分钟/天
  • 所需样本量:每组约 10,000 用户
  • 运行时间:至少 4 周(覆盖完整用户行为周期)

结果(4 周后)

  • A 组(旧算法):45.2 分钟/天
  • B 组(新算法):46.8 分钟/天
  • 相对提升:+3.5%
  • P 值:0.07(接近显著,但未达到 0.05 阈值)
  • 95% 置信区间:[-0.2%, +7.2%]

决策

  1. 统计不显著,但趋势积极(P 值接近 0.05)
  2. 置信区间下限接近 0(-0.2%),风险很小
  3. 新算法成本增加不大(服务器资源 +5%)

最终决定:谨慎全量上线,但:

  • 持续监控关键指标
  • 准备快速回滚方案
  • 一个月后重新评估

一个月后

  • 观看时长提升稳定在 +4%
  • 用户留存率无显著变化
  • 服务器成本增加可接受

结论:实验成功。


8. 用 AI 辅助 A/B 测试设计

AI 可以帮助你快速设计实验、计算样本量、分析结果。关键在于提供清晰的上下文。

8.1 提示词模板:样本量计算

你是一位资深的 A/B 测试专家。请帮我计算实验所需的样本量。

## 业务背景
[描述你的业务场景,例如:电商网站、SaaS 产品、移动 App]

## 当前指标
- 关键指标:[转化率/留存率/点击率等]
- 当前数值:[基准值,如 5%]
- 指标类型:[比例指标/均值指标]

## 实验设计
- 预期相对提升:[如 10%,即从 5% 提升到 5.5%]
- 显著性水平 (α)0.05 (95% 置信度)
- 统计功效 (1-β)0.8 (80%)
- 流量分配:50/50

## 请求
1. 计算每组所需样本量
2. 假设每天有 [X] 个访问用户,估算需要运行多少天
3. 给出实验设计建议

8.2 提示词模板:结果分析

你是一位资深的 A/B 测试专家。请帮我分析实验结果。

## 实验结果
- A 组(对照组):
  - 样本量:10,000
  - 转化数:500
  - 转化率:5.0%

- B 组(实验组):
  - 样本量:10,000
  - 转化数:550
  - 转化率:5.5%

## 请求
1. 计算相对提升(百分比)
2. 计算 Z 值和 P 值
3. 计算 95% 置信区间
4. 判断是否统计显著(α = 0.05)
5. 给出决策建议(全量/放弃/继续观察)
6. 指出实验可能存在的偏倚或问题

8.3 提示词模板:常见问题诊断

你是一位资深的 A/B 测试专家。我的实验遇到了问题,请帮我诊断。

## 问题描述
[描述你遇到的问题,例如:
- 运行两周后 P 值仍在 0.5 左右,完全不显著
- A 组和 B 组数据差异很大,完全不像随机分配
- 第 3 天结果显示显著,但第 7 天又不显著了]

## 实验信息
- 指标:[转化率等]
- 基准值:[如 5%]
- 预期提升:[如 10%]
- 流量分配:[50/50]
- 运行天数:[如 7 天]
- 总样本量:[如 5,000]

## 请求
1. 分析可能的原因
2. 提供诊断建议
3. 给出解决方案

::: tip 💡 追问技巧

  • "请用通俗语言解释什么是 P 值"
  • "我的置信区间包含 0,这意味着什么?"
  • "如何判断是否存在辛普森悖论?"
  • "什么情况下可以使用非 50/50 的流量分配?" :::

名词速查表

名词 英文 解释
A/B 测试 A/B Testing 对比实验,随机分配用户到不同版本,比较指标差异
对照组 Control Group 使用当前版本的组(A 组),作为基准
实验组 Treatment Group 使用新版本的组(B 组),验证效果
转化率 Conversion Rate 完成目标行为的用户占比(如购买、注册)
零假设 Null Hypothesis 假设两组没有差异的起点,目标是"推翻"它
P 值 P-value 如果零假设为真,观察到当前数据的概率
统计显著性 Statistical Significance P 值 < 0.05,结果不太可能是随机的
置信区间 Confidence Interval 真实差异可能落入的范围(如 95% CI)
统计功效 Statistical Power 检测到真实效应的概率(1-β),通常 80%
第一类错误 Type I Error 假阳性(说有差异,实际没有),α 控制
第二类错误 Type II Error 假阴性(说没差异,实际有),β 控制
显著性水平 Significance Level 容忍第一类错误的概率,通常 α = 0.05
效应量 Effect Size 差异的大小(相对提升多少),不只是是否显著
样本量 Sample Size 每组需要的用户数,需提前计算
随机分配 Random Assignment 每个用户有相同概率进入任一组
单尾检验 One-tailed Test 只检验"更好"(不关心"更差"
双尾检验 Two-tailed Test 检验"有差异"(更好或更差都算)
辛普森悖论 Simpson's Paradox 分组看趋势一致,合并后趋势相反
P-hacking P-hacking 操纵数据或方法以获得显著结果
新奇效应 Novelty Effect 用户因好奇产生的短期行为变化
序贯检验 Sequential Testing 预设多个检查点,动态调整显著性阈值

参考资源

在线工具

经典文章

书籍推荐

  • 《Trustworthy Online Controlled Experiments》- Ron Kohavi 等
  • 《Designing Experiments》- Geoffrey Keppel

相关文章