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

73 KiB
Raw Blame History

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

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


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

但在讨论这些问题之前,让我们先理解一些基础概念...

0.1 什么是"实验"

想象你在超市买牙膏,货架上摆着两个品牌:

  • 品牌 A:你用了 5 年,很熟悉
  • 品牌 B:新产品,说"美白效果更好"

你会怎么选?

大多数人会这样做

  • 看价格
  • 看包装
  • 看广告
  • 问朋友推荐
  • 或者...两个都买,自己试试哪个更好

最后一种就是"实验"——通过实际使用来比较哪个更好。

::: tip 💡 实验的本质 实验 = 对比 + 观察

  • 对比:至少要有两个选项(A 和 B
  • 观察:在相同条件下,测量它们的表现 :::

0.2 为什么要做"对比实验"?

场景:你的老板说

"我看了竞品,他们的按钮是红色的,很醒目!我们也把按钮改成红色吧,这样点击率肯定会提升!"

看起来很合理,对吧?

但是...

问题 1:竞品的产品和你一样吗?

  • 竞品的用户可能是年轻人(喜欢鲜艳颜色)
  • 你的用户可能是商务人士(偏好专业感)
  • 竞品的页面风格是暗色(红色更突出)
  • 你的页面风格是亮色(红色可能太刺眼)

问题 2:你怎么知道"醒目"就一定好?

  • 也许红色太刺眼,用户反而觉得不安全
  • 也许用户习惯了蓝色,改成红色会困惑
  • 也许点击率提升了,但转化率下降了(点进去的人不买了)

问题 3:即使看起来"更好",这是巧合吗?

  • 也许你改按钮的那一周,刚好赶上促销活动
  • 也许那一周是节假日,用户本身就比较活跃
  • 也许竞争对手刚好那周服务器崩溃,用户都跑到你这里了

::: warning ⚠️ 生活中的"伪因果关系" "我穿上这件球衣后,球队就赢了!"

真的是球衣的功劳吗?也许:

  • 球队最近状态本来就很好
  • 这场比赛对手较弱
  • 其他队员发挥超常

单次观察无法确定因果关系,需要对比实验。 :::

0.3 为什么不能"简单对比"?

错误的对比方式一:时间先后对比

第一周:蓝色按钮,点击率 5%
第二周:改成红色按钮,点击率 7%
结论:红色按钮更好!

问题:这两周的其他条件可能完全不同

  • 第一周可能是工作日,第二周是周末
  • 第一周可能下雨,第二周晴天
  • 第一周可能刚开学,第二周是假期

错误的对比方式二:不同用户群对比

移动端用户:使用蓝色按钮,点击率 8%
桌面端用户:使用红色按钮,点击率 5%
结论:蓝色按钮更好!

问题:移动端和桌面端用户本身的行为就不同

  • 移动端用户可能更年轻、更爱点击
  • 桌面端用户可能更谨慎、更有目的性
  • 设备屏幕大小不同,本身就影响点击行为

::: tip 💡 正确的对比实验 同时、随机、相同条件

  • 同时:两个版本在相同时间段运行
  • 随机:用户随机分配到不同版本
  • 相同条件:除了版本不同,其他所有条件都一样

这样,任何差异只能归因于"版本不同"。 :::

0.4 一个完整实验的基本步骤

让我们用一个完整的例子来说明:

场景:你想知道"免费试用 7 天"和"首次购买打 8 折"哪个更能吸引用户

步骤 1:明确问题

  • 比较对象:免费试用 vs 折扣
  • 成功标准:用户付费率

步骤 2:设计对比

  • A 组:看到"免费试用 7 天"
  • B 组:看到"首次购买 8 折"
  • 其他条件完全相同

步骤 3:随机分配

  • 来到网站的用户,随机进入 A 组或 B 组
  • 每个人 50% 概率

步骤 4:收集数据

  • 记录每组有多少人看到优惠
  • 记录每组有多少人最终付费

步骤 5:分析结果

  • A 组:1000 人看到,80 人付费(8%)
  • B 组:1000 人看到,120 人付费(12%
  • B 组比 A 组高 50%

步骤 6:得出结论

  • 折扣比免费试用更有效
  • 以后全部使用折扣策略

这就是 A/B 测试的完整思路!


现在,让我们回到开头的问题...

0.5 你有没有经历过这些"伪成功"?

场景一:被数据骗了

你改了购物车的结算按钮颜色,从蓝变红。一周后一看数据:点击率提升了 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 测试?

1.1 最简单的定义

A/B 测试就是把用户随机分成两组:

  • A 组:看到旧版本
  • B 组:看到新版本

然后比较两组的关键指标(比如点击率、转化率),看看哪个版本更好。

用一句话总结:让数据告诉我们哪个版本更有效,而不是靠猜测。

1.2 A/B 测试的核心要素

要做一个合格的 A/B 测试,需要满足以下几个条件:

条件 1:随机分配

  • 每个用户被分配到 A 组或 B 组的概率是相等的
  • 就像抛硬币,正面朝上进 A 组,反面朝上进 B 组
  • 用户自己不能选择,你也"不能挑选"

为什么随机? 假设你想测试新首页设计:

错误做法:把新首页给"新用户",旧首页给"老用户"

  • 问题:新老用户的行为本身就不一样
  • 新用户可能更愿意探索(点击率高)
  • 老用户更习惯旧设计(不愿改变)
  • 你不知道是"首页设计"的差异,还是"用户类型"的差异

正确做法:新老用户都随机分配到新旧首页

  • 新用户:一半看新首页,一半看旧首页
  • 老用户:一半看新首页,一半看旧首页
  • 这样才能公平比较

条件 2:同时运行

  • A 组和 B 组在相同时间段运行
  • 不能今天跑 A,明天跑 B

为什么同时? 假设你今天测试蓝色按钮,明天测试红色按钮:

问题

  • 今天可能是周一(工作日,用户少)
  • 明天可能是周六(周末,用户多)
  • 今天可能下雨,明天可能晴天
  • 这些"时间因素"会影响结果,和按钮颜色无关

正确做法:蓝色和红色按钮在同一天、同一时间测试

条件 3:只改变一个变量

  • 除了你要测试的东西(比如按钮颜色),其他所有条件都保持相同
  • 页面布局、文案、位置、功能...都一样

为什么只改变一个?

假设你同时改了:

  • 按钮颜色:蓝 → 红
  • 按钮文案:"立即购买" → "马上抢购"
  • 按钮大小:小 → 大

如果结果变好了,你不知道是哪个改动起了作用。如果变差了,你也不知道哪个改坏了。

正确做法:一次只测试一个变化

条件 4:定义清晰的指标

  • 实验前明确要测量什么
  • 不能"到时候看情况"

常见的指标类型

  • 转化率:完成购买的比例
  • 点击率:点击按钮的比例
  • 注册率:完成注册的比例
  • 留存率:第二天还回来的比例

1.3 A/B 测试不是万能的

A/B 测试适合的场景:

  • 测试页面设计(颜色、布局、文案)
  • 测试功能流程(注册步骤、结算流程)
  • 测试推荐算法(商品推荐、内容推荐)
  • 测试价格策略(折扣、促销)

A/B 测试不适合的场景:

  • 长期战略调整(品牌定位、市场方向)
  • 重大产品创新(全新功能、全新业务)
  • 需要很长时间才能看到效果的改变(SEO、品牌认知)

::: tip 💡 判断是否需要 A/B 测试 问自己三个问题

  1. 能快速看到结果吗?(几周内,不是几个月)
  2. 能随机分配用户吗?(不会严重影响用户体验)
  3. 能量化指标吗?(有明确的数字可以比较)

如果三个答案都是"是",那就可以考虑 A/B 测试。 :::

1.4 A/B 测试 vs 其他"对比方法"

对比方法 做法描述 问题
直觉判断 "我觉得红色更好" 你的直觉不代表用户想法
竞品模仿 "竞品这么做,我们也这么做" 产品不同,用户不同,结果可能不同
时间先后对比 "改完后,数据变好了" 可能是其他因素(促销、季节)导致的
部分用户对比 "移动端用新设计,桌面端用旧设计" 移动端和桌面端用户本身行为就不同
A/B 测试 "同时、随机、相同条件对比" 排除其他因素,结果是可靠的

1.5 用医学试验来类比

1.6 用医学试验来类比

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

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

1.7 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.0 从一个完整的例子开始

场景:你的公司要测试一个新的"购物车按钮"

当前情况

  • 购物车按钮是蓝色的,文案是"立即购买"
  • 放置在页面右下角
  • 当前转化率是 5%(100 个访客,5 个购买)

你的想法

  • 如果把按钮改成红色,更醒目,转化率可能会提升
  • 如果把按钮放得更大,更容易点击,转化率可能会提升

问题:怎么知道这些想法是否有效?


步骤 1:明确你要测试什么

你需要先明确:

  • 测试变量:你要改变什么?
    • 选项 A:按钮颜色(蓝 → 红)
    • 选项 B:按钮大小(小 → 大)
    • 选项 C:按钮位置(右下 → 左下)

重要:一次只测试一个变量!

假设你决定测试按钮颜色


步骤 2:明确成功指标

你怎么知道"红色更好"?

  • 指标 1:点击率(点击按钮的人数 / 访问人数)
  • 指标 2:转化率(购买人数 / 访问人数)
  • 指标 3:收入(总销售额)

建议:选择最能反映业务目标的指标。

对于购物车按钮,转化率是最直接的指标。


步骤 3:设计实验版本

A 组(对照组)

  • 蓝色按钮
  • 文案"立即购买"
  • 位置右下角
  • 大小正常

B 组(实验组)

  • 红色按钮(这是唯一的变化!)
  • 文案"立即购买"(相同)
  • 位置右下角(相同)
  • 大小正常(相同)

关键原则:只有按钮颜色不同,其他所有条件都相同。


步骤 4:确定流量分配

选项 150/50 分配

  • 50% 用户看到 A 组
  • 50% 用户看到 B 组

选项 290/10 分配

  • 90% 用户看到 A 组(安全版本)
  • 10% 用户看到 B 组(实验版本)

建议

  • 如果对新版本有信心,用 50/50(最快得到结果)
  • 如果担心新版本有风险,用 90/10(更保守)

假设你选择 50/50 分配


步骤 5:计算所需样本量

你需要回答几个问题:

  • 当前转化率5%
  • 期望检测的提升20%(从 5% 提升到 6%
  • 显著性水平0.0595% 置信度)
  • 统计功效80%

使用在线计算器,得出:

  • 每组需要约 6,000 个样本
  • 两组共需要 12,000 个样本

如果你的网站每天有 3,000 个访客,大约需要 4 天


步骤 6:确定运行时长

最少运行时间:达到样本量所需时间(4 天)

建议运行时间:至少 2 个完整业务周期(通常 2 周)

为什么?

  • 覆盖工作日和周末(用户行为不同)
  • 覆盖月初和月末(消费习惯不同)
  • 避免"新奇效应"(用户因好奇产生的短期行为)

假设你决定运行 2 周


步骤 7:制定决策规则

在实验开始前,明确决策规则:

如果 B 组显著更好(提升 > 20%p < 0.05

  • 全量上线红色按钮

如果 B 组显著更差(降低 > 10%p < 0.05

  • 放弃红色按钮,保持蓝色按钮

如果结果不显著(p ≥ 0.05

  • 转化率差异不大(在 ±10% 以内)
  • 保持蓝色按钮,尝试其他优化方向

步骤 8:准备监控和回滚

监控指标

  • 每天检查转化率
  • 检查是否有异常(如转化率暴跌)
  • 检查用户投诉

回滚计划

  • 如果发现严重问题,立即停止实验
  • 准备快速切换回蓝色按钮

步骤 9:运行实验

  • 开发并部署实验代码
  • 确保随机分配正常工作
  • 开始收集数据
  • 不要中途停止(除非有严重问题)

步骤 10:分析结果

2 周后:

  • A 组:6,000 人,300 人购买(5.0%
  • B 组:6,000 人,330 人购买(5.5%
  • 相对提升:+10%
  • P 值:0.12(不显著)
  • 95% CI[-2%, +22%]

决策:结果不显著,置信区间包含 0。保持蓝色按钮。


这就是完整的实验设计流程!

现在,让我们深入了解每个环节...

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 为什么不能"看着办"

问题:样本量太小时会发生什么?

假设你想测试新按钮是否能提升转化率,真实情况是新按钮确实能提升 5%。

但你只测试了 100 个用户

  • A 组:100 人,5 人点击(5%
  • B 组:100 人,6 人点击(6%
  • P 值:0.75(不显著)

你会得出错误结论"新按钮没有效果"

真相:新按钮确实有效,但因为样本量太小,统计功效不足,无法检测出这个差异。

这就是假阴性(第二类错误)。


问题:样本量太大时会有什么问题?

如果你测试了 100 万个用户:

  • 花费 3 个月时间才收集够数据
  • 占用了大量服务器资源
  • 延迟了其他实验的进度

而且,你检测到的是 0.01% 的微小提升,即使真实存在,也没有业务价值。

样本量太小的风险:浪费机会(错过真实改进) 样本量太大的风险:浪费时间(运行太久,资源浪费)

正确做法:实验前计算所需样本量,在"能够检测到有意义的提升"和"合理的实验时间"之间取得平衡。

4.2 用投票来理解样本量

场景:你想预测选举结果

假设有 1000 万选民,你想预测候选人 A 和 B 谁会赢。

问题:你需要调查多少人?

  • 调查 10 个人?太少,不靠谱
  • 调查 100 个人?还是太少
  • 调查 1,000 个人?可以,误差约 ±3%
  • 调查 10,000 个人?更好,误差约 ±1%
  • 调查 1,000,000 个人?没必要,误差只比 1,000 人好一点点

关键发现

  • 样本量从 10 增加到 1,000 → 准确度大幅提升
  • 样本量从 1,000 增加到 1,000,000 → 准确度提升很小

A/B 测试也是一样的道理

  • 不是样本越多越好
  • 而是"足够"就好
  • "足够"取决于你想检测多小的差异

4.3 影响样本量的四个因素

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

直觉理解

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

因素 1:基准转化率

问题:为什么基准转化率越高,需要的样本越少?

想象两个场景:

  • 场景 A:基准转化率 50%(掷硬币,50% 正面)
  • 场景 B:基准转化率 1%(罕见事件,只有 1% 的人会购买)

在场景 A

  • 你掷 100 次硬币,正面会出现 50 次左右
  • 即使有波动,也在 40-60 次之间
  • 你不需要太多样本就能"确定"正面率

在场景 B

  • 你测试 100 个用户,可能只有 1 个人购买
  • 如果运气好,可能 3 个人购买(3 倍差异!)
  • 如果运气不好,可能 0 个人购买
  • 你需要大量样本才能"确定"真实转化率

结论:转化率越低,随机波动越大,需要更多样本来"降噪"。


因素 2:最小检测提升

这是最重要的因素!

问题:你想检测多小的差异?

  • 检测 20% 的提升(从 5% 到 6%):需要约 6,000 样本/组
  • 检测 5% 的提升(从 5% 到 5.25%):需要约 100,000 样本/组

差距巨大!

为什么?

想象你在测量两根头发的长度差异:

  • 差异 1 毫米:用普通尺子就能看出来
  • 差异 0.001 毫米:需要显微镜才能看出来

统计检验也是一样:

  • 大差异(提升 20%):"普通尺子"(小样本)就能看出来
  • 小差异(提升 5%):"显微镜"(大样本)才能看出来

::: tip 💡 如何选择"最小检测提升"? 问自己三个问题

  1. 业务上什么提升是有意义的?

    • 提升 1%:太小,没意义
    • 提升 5%:还行,可以接受
    • 提升 20%:很好,值得做
  2. 你能等待多久?

    • 检测 5% 提升 → 需要 1 个月
    • 检测 20% 提升 → 只需要 1 周
    • 时间紧迫?选择较大的提升目标
  3. 有多少流量?

    • 日活 1,000 → 无法检测小提升
    • 日活 100,000 → 可以检测小提升

建议:选择"最小有意义的提升"作为目标,不要贪心求小。 :::


因素 3:显著性水平 (α)

什么是显著性水平?

显著性水平(α)是你能容忍的"假阳性"概率。

  • α = 0.05:容忍 5% 的假阳性(95% 置信度)
  • α = 0.01:容忍 1% 的假阳性(99% 置信度)

假阳性是什么?

假阳性 = "说有效,实际无效"

例子:

  • 新按钮其实没有效果(真实转化率都是 5%)
  • 但因为随机波动,B 组恰好表现更好(5% vs 6%)
  • 你错误地认为"新按钮有效",并全量上线
  • 上线后,发现转化率并没有提升

这就是假阳性

为什么 α 越小,样本量越大?

想象你在做"无罪推定":

  • α = 0.05:需要"比较确凿的证据"才能定罪
  • α = 0.01:需要"非常确凿的证据"才能定罪

"非常确凿"需要更多证据(更大样本量)。

建议

  • 大多数情况用 α = 0.05(行业标准)
  • 如果是高风险决策(如价格策略),可以用 α = 0.01

因素 4:统计功效 (1-β)

什么是统计功效?

统计功效(1-β)是检测到真实效应的概率。

  • 功效 = 80%:如果有真实差异,有 80% 的概率能检测出来
  • 功效 = 90%:如果有真实差异,有 90% 的概率能检测出来

假阴性是什么?

假阴性 = "说无效,实际有效"

例子:

  • 新按钮确实有效(真实转化率从 5% 提升到 6%)
  • 但因为样本量太小,检验结果显示"不显著"p = 0.15
  • 你错误地认为"新按钮无效",放弃了它
  • 你错过了一个提升 20% 的机会!

这就是假阴性

为什么功效越大,样本量越大?

想象你在安检:

  • 功效 80%:能检测出 80% 的危险品(漏掉 20%)
  • 功效 90%:能检测出 90% 的危险品(漏掉 10%)

检测率越高,需要更灵敏的设备(更大样本量)。

建议

  • 大多数情况用功效 80%(行业标准)
  • 如果样本量充足,可以用 90%(更保险)

4.4 样本量计算公式

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

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.0 为什么需要"统计显著性"?

场景:你做了一个 A/B 测试

A 组(蓝色按钮):1000 个用户,50 个点击 → 点击率 5%
B 组(红色按钮):1000 个用户,60 个点击 → 点击率 6%

看起来 B 更好,对吧?

但是...

问题:这 10 个点击的差异,是真实的,还是巧合?

想象一下:

  • 也许分配到 B 组的用户,今天心情特别好,更爱点击
  • 也许 B 组恰好多了几个"重度点击用户"
  • 也许这只是随机波动,下次再测试 A 组反而更好

这就是"统计显著性"要解决的问题

  • 如何判断这个差异是"真实的",而不是"随机的"
  • 多大的差异才能相信是真实的?

::: tip 💡 统计显著性的本质 统计显著性 = 差异不太可能是随机产生的

就像抛硬币:

  • 抛 10 次,出现 7 次正面 → 可能是巧合
  • 抛 100 次,出现 70 次正面 → 这枚硬币可能有问题

差异越大、样本越多,越不可能是巧合。 :::


5.1 P 值是什么?

5.1.1 用抛硬币来理解 P 值

问题:这枚硬币是公平的吗?

假设你有一枚硬币,你想知道它是不是公平的(正面和反面的概率各 50%)。

实验 1:抛 10 次

  • 结果:7 次正面,3 次反面(正面率 70%)

你会想:"这枚硬币可能偏向正面?"

但是,即使硬币是公平的,抛 10 次出现 7 次或更多正面的概率大约是 17%

P 值 = 17%

意思是:如果硬币是公平的,有 17% 的概率会看到这种结果(或更极端)。

结论:P 值太大,无法确定硬币不公平。7 次正面可能是随机波动。


实验 2:抛 100 次

  • 结果:70 次正面,30 次反面(正面率 70%)

现在的差异还是 70%,但样本量大多了!

如果硬币是公平的,抛 100 次出现 70 次或更多正面的概率大约是 0.00004%

P 值 < 0.0001%

意思是:如果硬币是公平的,几乎不可能看到这种结果。

结论:P 值非常小,我们可以很有信心地说:这枚硬币确实不公平!


5.1.2 P 值的正式定义

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

用通俗语言说

  • P 值 = "纯属巧合"的概率
  • P 值 = "随机波动"的可能性
  • P 值 = "即使版本没有差异,也会看到这种结果"的概率

5.1.3 P 值的判断标准

常用阈值

P 值范围 结论 解释
p < 0.01 高度显著 只有 1% 的概率是巧合(99% 信心)
p < 0.05 统计显著 只有 5% 的概率是巧合(95% 信心)
p ≥ 0.05 不显著 可能是随机波动,无法确定差异真实

为什么是 0.05

这是科学界的"传统标准"(可以理解为行业约定俗成):

  • 意思是:我们容忍 5% 的"假阳性"风险
  • 也就是说,即使两个版本真的没有差异,我们也有 5% 的概率错误地认为"有差异"

::: tip 💡 如何记忆 P 值 P 值越小,越可信

  • p = 0.30 → 有 30% 概率是巧合 → 不可信
  • p = 0.10 → 有 10% 概率是巧合 → 不太可信
  • p = 0.05 → 只有 5% 概率是巧合 → 勉强可信
  • p = 0.01 → 只有 1% 概率是巧合 → 很可信
  • p < 0.001 → 几乎不可能是巧合 → 非常可信 :::

5.1.4 P 值不是什么?

::: warning ⚠️ 常见的 P 值误解

误解 1:"P 值越小,差异越大"

错误!P 值只告诉你"差异是否真实",不告诉你"差异有多大"。

例子:

  • 差异 0.1%,样本 100 万 → p < 0.001(显著,但差异很小)
  • 差异 50%,样本 10 → p = 0.15(不显著,但差异很大)

正确理解P 值衡量的是"信心",不是"效果大小"。


误解 2"P < 0.05 就是正确的,P ≥ 0.05 就是错误的"

错误!0.05 只是一个人为设定的阈值,不是魔法分界线。

  • p = 0.049 和 p = 0.051 几乎没有区别
  • 但一个是"显著",一个是"不显著"

正确理解:P 值是一个连续的"信心程度",不要过度依赖 0.05 这个分界线。


误解 3"P < 0.05 意味着有 95% 的概率 B 版本更好"

错误!P 值不是"B 版本更好的概率"。

P 值说的是:如果两个版本真的没有差异,看到这种结果的概率。

正确理解P 值是对"零假设"的检验,不是直接给出"B 更好的概率"。


误解 4"P ≥ 0.05 就证明两个版本没有差异"

错误!"不显著"只意味着"无法确定差异存在",不等于"证明差异不存在"。

可能的原因:

  • 样本量太小(没收集足够数据)
  • 差异太小(需要更多样本才能检测到)
  • 确实没有差异

正确理解"不显著" = "证据不足",不是"证明无效"。 :::

5.1.5 P 值是如何计算的?

不需要记住公式,但要理解思路

假设 A/B 测试的结果:

  • A 组:1000 人,50 人点击(5%)
  • B 组:1000 人,60 人点击(6%)

P 值的计算思路

  1. 假设零假设成立:A 和 B 真的没有差异(真实转化率都是 5%)
  2. 计算"标准误":在 1000 个样本下,转化率会自然波动多少
  3. 计算 Z 值:观察到的差异(1%)是标准误的多少倍
  4. 查表得出 P 值:这个 Z 值对应的概率

简化版计算(不严谨,但帮助理解)

标准误 ≈ √[p×(1-p)/n] = √[0.05×0.95/1000] ≈ 0.7%

观察差异 = 6% - 5% = 1%

Z 值 = 观察差异 / 标准误 = 1% / 0.7% ≈ 1.43

查表:Z = 1.43 → P ≈ 0.15

结论P = 0.15 > 0.05,不显著,这个 1% 的差异可能是随机波动。

::: tip 💡 实际应用 你不需要手动计算 P 值!

使用在线工具:

你需要做的是:

  1. 输入 A 组和 B 组的样本量、转化数
  2. 工具自动计算 P 值
  3. 根据 P 值判断是否显著 :::

5.2 置信区间:估计真实的提升范围

5.2.1 为什么要用"区间"而不是"点估计"

场景:你做了一次 A/B 测试

结果:

  • B 版本比 A 版本提升了 10%

问题:这个 10% 是"准确的"吗?

答案是:不准确

为什么?因为你只测试了一部分用户,不是全部用户。如果你:

  • 换一批用户再测试一次 → 可能是 8%
  • 下个月再测试一次 → 可能是 12%
  • 明年再测试一次 → 可能是 5%

每次测试的结果都会略有不同(这就是"抽样波动"

所以,我们不应该给出一个精确的数字(点估计),而应该给出一个范围(区间估计)

::: tip 💡 区间估计 vs 点估计 点估计"提升 10%"(太精确,不可信)

区间估计"提升在 5% 到 15% 之间"(更诚实,更符合实际)

就像你问朋友"从你家到公司要多久?"

不精确但诚实"大概 30 到 40 分钟吧,看路况" 精确但不现实"准确需要 34 分 27 秒" :::

5.2.2 置信区间是什么?

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

示例

  • 你观察到 B 版本比 A 版本提升了 10%
  • 95% 置信区间:[+5%, +15%]

意思是

  • 我们有 95% 的信心,真实提升在 5% 到 15% 之间
  • 真实提升低于 5% 或高于 15% 的概率,只有 5%

5.2.3 理解"95% 置信"

::: warning ⚠️ 常见误解 错误理解:"真实值有 95% 的概率在区间内"

正确理解:"如果我们重复实验 100 次,95 次的区间会包含真实值"

对于单次实验:

  • 真实值要么在区间内,要么不在
  • 我们不知道是哪种情况
  • 但我们有 95% 的信心,这个方法是可靠的 :::

用类比来理解

想象你是一个射击运动员,你射了 100 枪:

  • 95 枪都打在靶子上("置信区间"覆盖了"真实目标"
  • 5 枪脱靶了("置信区间"没有覆盖"真实目标"

每次射击前,你都有 95% 的信心会打中靶子。

但你射出一枪后,这一枪要么中,要么不中。你不能说"这一枪有 95% 的概率中靶"。

置信区间也是一样:每次实验都有 95% 的可靠性,但对于单次实验,真实值要么在区间内,要么不在。

5.2.4 置信区间的可视化

场景 1:结果显著

A 组:5%
B 组:6%
相对提升:+20%
95% CI[+10%, +30%]
    0% ─────┼──────────────────┼──── 40%
           ↑                ↑
        下限(+10%)      上限(+30%)
           ✅ 整个区间都 > 0,结果显著

解读:我们有 95% 的信心,真实提升在 10% 到 30% 之间。即使是最保守估计(10%),也是正提升。


场景 2:结果不显著

A 组:5%
B 组:5.5%
相对提升:+10%
95% CI[-5%, +25%]
   -5% ─┼────┼──────────────────┼──── 30%
       ↑    ↑
      0%  上限(+25%)
       ⚠️ 区间包含 0,结果不显著

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

  • 可能是正提升(最高 +25%
  • 可能是负提升(最低 -5%,即 B 更差)
  • 无法确定方向,所以"不显著"

5.2.5 置信区间与 P 值的关系

重要结论

  • 如果 95% 置信区间不包含 0 → P < 0.05(显著)
  • 如果 95% 置信区间包含 0 → P ≥ 0.05(不显著)

记忆技巧

  • 区间完全在 0 的右边(都是正数)→ B 更好
  • 区间完全在 0 的左边(都是负数)→ A 更好
  • 区间跨越 0(有正有负)→ 不确定

5.2.6 置信区间的宽度:什么决定了宽度?

观察

  • 样本量越大 → 区间越窄(越精确)
  • 转化率越高 → 区间越窄(越精确)
  • 置信度越高 → 区间越宽(更保守)

例子

场景 1:样本小,区间宽
A 组:100 人,5 人点击(5%)
B 组:100 人,6 人点击(6%
95% CI[-8%, +28%](很宽,不确定)

场景 2:样本大,区间窄
A 组:10,000 人,500 人点击(5%
B 组:10,000 人,600 人点击(6%
95% CI[+10%, +30%](较窄,较确定)

::: tip 💡 置信区间的实际应用 看到置信区间后,你应该想

  1. 区间是否包含 0

    • 不包含 → 结果显著,可以做决策
    • 包含 → 结果不显著,需要更多数据
  2. 区间有多宽?

    • 很宽 → 不确定,需要更多样本
    • 很窄 → 很确定,可以信任结果
  3. 下限是多少?

    • 即使是最保守估计,效果如何?
    • 如果下限已经满足业务需求,可以上线
  4. 上限是多少?

    • 最好的情况下能提升多少?
    • 帮助评估"潜在收益" :::

5.3 A/B 组结果对比演示

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

关键观察

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

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

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

6.1.1 一个真实的故事

场景:你的老板急于看到结果

你设计了一个 A/B 测试,测试新的首页设计:

实验计划

  • 需要运行 2 周
  • 每组需要 10,000 个样本
  • 目标:检测 10% 的提升

第 3 天(早上)

  • A 组:1,000 人,50 人点击(5%)
  • B 组:1,000 人,70 人点击(7%)
  • P 值:0.04(显著!)

你的老板看到数据,兴奋地说:"B 版本领先了 40%!而且已经显著了!我们不用等 2 周了,今天就全量上线 B 版本吧!"

你犹豫了一下...但还是上线了。


第 7 天

  • A 组:3,000 人,150 人点击(5%
  • B 组:3,000 人,170 人点击(5.67%
  • P 值:0.35(不显著了)

老板:"没关系,还是 B 更好,只是统计波动。"


第 14 天(原计划结束)

  • A 组:10,000 人,500 人点击(5%
  • B 组:10,000 人,510 人点击(5.1%
  • P 值:0.80(完全不显著)
  • 95% CI[-6%, +8%]

真相揭晓:两个版本几乎没有任何差异!

如果你第 3 天就停止实验,你会错误地认为"B 版本提升 40%",并全量上线一个实际上没有效果的版本。


6.1.2 为什么会发生这种情况?

P 值的波动性

想象你在抛硬币,判断它是否公平:

  • 前 10 次:7 次正面(p = 0.17,看似不公平)
  • 前 50 次:30 次正面(p = 0.20,看似不公平)
  • 前 100 次:55 次正面(p = 0.37,看起来公平)

如果你只抛 10 次就下结论,你会错误地认为"硬币不公平"。

A/B 测试也是一样:

  • 数据少的时候,随机波动大,P 值不稳定
  • 数据多的时候,随机波动小,P 值才稳定

过早停止 = 在随机波动中做决策


6.1.3 正确的做法

方案 1:预先设定样本量,严格达到后才分析

步骤:
1. 实验前计算所需样本量(如 10,000 人/组)
2. 设置"检查点":只在第 14 天检查一次
3. 达到样本量之前,不看数据,不做决策
4. 第 14 天分析结果,做决策

优点:简单、可靠、不会出错 缺点:如果版本有严重问题,要等很久才能发现


方案 2:序贯检验(Sequential Testing

步骤:
1. 预设多个"检查点"(如第 3、7、14 天)
2. 每个检查点使用"更严格"的显著性阈值
3. 第 3 天:p < 0.01 才停止(更严格)
4. 第 7 天:p < 0.025 才停止
5. 第 14 天:p < 0.05 才停止(正常)

优点:可以提前发现极端情况(好的或坏的) 缺点:计算复杂,需要专门工具

::: tip 💡 实践建议 如果你是初学者:使用方案 1(简单可靠) 如果你有经验:使用方案 2(更灵活)

无论用哪种方案,都不要"每天看数据,觉得好就停止"。 :::


6.2 辛普森悖论

6.2.1 一个令人困惑的故事

场景:你的数据分析结果互相矛盾

你的电商网站测试了一个新的"推荐算法":

整体数据

  • A 组(旧算法):转化率 5.6%
  • B 组(新算法):转化率 7.3%
  • 结论B 版本更好!提升 30%

你很高兴,准备全量上线新算法。


但是,你的同事提出了一个问题:"我们能不能按设备类型分别看看数据?"

分开后的数据

移动端

  • A 组:转化率 8%
  • B 组:转化率 6%
  • 结论A 版本更好!

桌面端

  • A 组:转化率 4%
  • B 组:转化率 3%
  • 结论A 版本更好!

等等,发生了什么?

  • 移动端:A 更好(8% > 6%
  • 桌面端:A 更好(4% > 3%
  • 合并后:B 更好(7.3% > 5.6%

每个分组的赢家都是 A,但合并后赢家却是 B!

这就是辛普森悖论


6.2.2 为什么会发生这种情况?

问题出在"样本分布不均"

让我们看看真实的样本分布:

移动端80% 的流量):

  • A 组:40% 流量(4,000 人,320 人购买 → 8%
  • B 组:40% 流量(4,000 人,240 人购买 → 6%

桌面端20% 的流量):

  • A 组:0% 流量(没有人!)
  • B 组:20% 流量(1,000 人,30 人购买 → 3%

合并后的数据(错误计算):

  • A 组:320 / 4,000 = 8%
  • B 组:(240 + 30) / 5,000 = 5.4%

但如果你直接平均(错误的做法):

  • A 组:只有移动端数据,8%
  • B 组:(6% + 3%) / 2 = 4.5%

不对,让我们重新计算正确的加权平均:

正确的加权平均

  • A 组:8%(因为只有移动端)
  • B 组:6% × 80% + 3% × 20% = 5.4%

等等,A 更好才对(8% > 5.4%)!

那为什么你之前看到 B 更好(7.3% > 5.6%)?

真相:流量分配完全混乱了!

实际上,如果随机分配正确,移动端和桌面端应该各有 50% 流量进入 A/B 组。


6.2.3 正确的随机化应该是这样的

移动端(假设 8,000 人):

  • A 组:4,000 人(50%),320 人购买(8%
  • B 组:4,000 人(50%),240 人购买(6%

桌面端(假设 2,000 人):

  • A 组:1,000 人(50%),40 人购买(4%
  • B 组:1,000 人(50%),30 人购买(3%

合并后的数据(正确的加权平均):

  • A 组:(320 + 40) / 5,000 = 7.2%
  • B 组:(240 + 30) / 5,000 = 5.4%

结论A 更好(7.2% > 5.4%

移动端和桌面端的结论一致!


6.2.4 如何避免辛普森悖论?

方法 1:确保随机化正确

  • 每个子群体(移动端、桌面端)内部,流量必须是 50/50
  • 不能出现"移动端全是 A 组,桌面端全是 B 组"的情况

方法 2:按关键维度分别分析

  • 不要只看整体数据
  • 分别看移动端、桌面端、新用户、老用户、不同地区...
  • 确保每个分组的结论是一致的

方法 3:使用 A/A 测试验证随机化

A/A 测试:两个组使用完全相同的版本,看是否有差异

如果 A/A 测试显示"显著差异" → 说明随机化有问题 如果 A/A 测试显示"无显著差异" → 说明随机化正常

::: tip 💡 实践建议 每次 A/B 测试前,先问自己

  1. 我的关键维度是什么?(移动端/桌面端?新用户/老用户?)
  2. 每个维度内部的流量分配是否均匀?
  3. 如果按维度分组,结论是否一致?

如果答案不确定,先做 A/A 测试验证随机化。 :::


6.3 P-hackingP 值操纵)

6.3.1 一个"只要我想,就能显著"的故事

场景:你想发表一个"成功"的实验结果

你的公司鼓励"数据驱动决策",但你的实验结果总是"不显著"。

压力之下,你想:"有没有办法让结果变显著?"


尝试 1:主指标不显著,那就换个指标

原始计划

  • 主指标:购买转化率
  • 结果:A 组 5%B 组 5.1%p = 0.60(不显著)

你试了其他指标

  • 点击率:A 组 10%B 组 11%,p = 0.15(还是不显著)
  • 注册率:A 组 8%,B 组 9%,p = 0.20(不显著)
  • 页面停留时间:A 组 30 秒,B 组 32 秒,p = 0.08(接近了!)
  • 添加购物车率:A 组 15%,B 组 17%,p = 0.03(显著了!)

你报告说:"新版本提升了添加购物车率,我们应该上线!"

问题:你测了 5 个指标,即使全部无效,也有 1 - 0.95^5 = 23% 的概率至少有一个"假阳性"。


尝试 2:主指标不显著,那就细分用户群

原始数据(整体):

  • A 组:5%
  • B 组:5.1%
  • p = 0.60(不显著)

你开始细分

  • 新用户:A 组 4%B 组 4.5%p = 0.25
  • 老用户:A 组 6%B 组 6.2%p = 0.40
  • 移动端:A 组 5%B 组 5.3%p = 0.30
  • 桌面端:A 组 5%B 组 5.1%p = 0.50
  • 18-25 岁:A 组 4.5%B 组 5.5%p = 0.04(显著了!)

你报告说:"虽然整体不显著,但对年轻用户效果显著,我们应该针对这个人群上线!"

问题:你测了 10 个子群体,即使全部无效,也有 40% 的概率至少有一个"假阳性"。


尝试 3:P 值接近 0.05,那就再跑几天

第 14 天

  • A 组:5%
  • B 组:5.2%
  • p = 0.08(接近显著了!)

你:"再跑几天,看看能不能降到 0.05 以下。"

第 16 天

  • A 组:5%
  • B 组:5.25%
  • p = 0.06(更接近了!)

你:"再跑一天!"

第 17 天

  • A 组:5%
  • B 组:5.3%
  • p = 0.048(终于显著了!)

你:"成功了!我们可以上线了!"

问题:如果你一直跑下去,P 值迟早会低于 0.05(纯随机波动),但这不代表真实差异。


6.3.2 为什么 P-hacking 是危险的?

故事结局

你的"成功"实验上线了。一个月后:

  • 转化率没有提升(因为本来就没有真实效果)
  • 开发团队浪费了一个月时间
  • 其他更有价值的实验被延迟

你失去了团队的信任,以后再也没有人相信你的"数据驱动决策"。


6.3.3 如何避免 P-hacking

原则 1:预先注册假设和指标

实验开始前,写下

  • 主指标是什么?(只能有 1-2 个)
  • 预期结果是什么?(提升多少?)
  • 如果不显著,怎么办?(放弃、迭代、还是延长?)

实验过程中,不允许改变


原则 2:控制多重检验

如果你必须测多个指标或子群体,使用更严格的阈值:

  • Bonferroni 校正:α = 0.05 / 指标数量

    • 测 5 个指标 → α = 0.01
    • 测 10 个指标 → α = 0.005
    • 只有 p < 0.005 才算显著
  • FDR 控制:允许一定比例的假阳性,但总体控制误报率


原则 3:诚实报告所有结果

不要只报告显著的指标

诚实报告示例

我们测试了新版本对 5 个指标的影响:

1. 添加购物车率:+13% (p = 0.03) ✅ 显著
2. 购买转化率:+2% (p = 0.60) ❌ 不显著
3. 点击率:+10% (p = 0.15) ❌ 不显著
4. 注册率:+12% (p = 0.20) ❌ 不显著
5. 页面停留时间:+7% (p = 0.08) ❌ 不显著

虽然只有"添加购物车率"显著,但其他关键指标(购买转化率)
没有提升,甚至有下降趋势。建议谨慎上线,或延长观察时间。

::: tip 💡 实践建议 问自己

"如果所有结果都不显著,我会怎么做?"

如果答案是"我会放弃",那就不要在结果出来后改变主意,挑选"显著"的指标。

诚实 > 成功 :::


6.4 新奇效应

6.4.1 一个"昙花一现"的故事

场景:新功能上线,数据暴涨!

你的公司发布了一个新功能:"智能推荐"。

第 1 周数据

  • 点击率:+30%
  • 使用率:+50%
  • 用户反馈:"太棒了!"

你高兴极了,准备全量推广并写成功案例。


第 2 周数据

  • 点击率:+15%
  • 使用率:+20%

你:"可能是波动,继续观察。"


第 3 周数据

  • 点击率:+5%
  • 使用率:+5%

你:"怎么突然降了?"


第 4 周数据

  • 点击率:0%
  • 使用率:-2%(比上线前还差!)
  • 用户反馈:"其实不太好用..."

真相:前两周的"暴涨"只是新奇效应,用户因为好奇多点了几次。新鲜感过后,真实使用习惯暴露无遗。

如果你第 1 周就全量推广并写成功案例,现在会非常尴尬。


6.4.2 为什么会有新奇效应?

人类的好奇心

想象你走进一家新餐厅:

  • 第 1 次:你点了招牌菜,觉得很好吃(新奇感)
  • 第 3 次:你点了其他菜,发现也就那样(新奇感消退)
  • 第 10 次:你开始觉得"其实家常菜更好吃"(真实偏好)

A/B 测试也是一样:

  • 短期:用户因好奇点击新功能(虚高)
  • 长期:用户发现新功能并不符合真实需求(回归真实)

6.4.3 哪些情况最容易产生新奇效应?

高风险场景

  • 全新的 UI 设计(用户可能因为"不一样"而点击)
  • 新功能(用户好奇"这是什么")
  • 新的交互方式(用户想"试试看")
  • 显眼的位置变化(用户"被迫注意到")

低风险场景

  • 后端算法优化(用户感知不到)
  • 性能优化(加载速度变快,用户不会因为"新奇"而点击)
  • 文案微调(影响较小)

6.4.4 如何避免新奇效应?

方法 1:至少运行 2 个完整业务周期

  • 如果业务有"周末效应"(周末活跃度高),至少运行 2 周
  • 如果业务有"月初月末效应"(月初消费高),至少运行 1 个月
  • 如果业务有"季节效应"(双 11、春节),避开这些时段

经验法则:至少 2-4 周,覆盖 2 个完整周期。


方法 2:观察趋势,而不是绝对值

好的趋势

第 1 周:+10%
第 2 周:+12%
第 3 周:+11%
第 4 周:+13%
→ 稳定,可信

不好的趋势

第 1 周:+30%
第 2 周:+15%
第 3 周:+5%
第 4 周:0%
→ 新奇效应,不可信

方法 3:重视长期指标,轻视短期指标

指标类型 示例 受新奇效应影响
短期指标 点击率、使用率 ⚠️
中期指标 转化率、留存率
长期指标 LTV、NPS

决策原则

  • 如果长期指标(留存率、LTV)没有提升,即使短期指标(点击率)暴涨,也不应该上线。

6.5 统计功效不足

6.5.1 一个"错过机会"的故事

场景:你做了一个很有前景的改进

你的公司测试了一个新的"一键购买"功能:

你的计算(错误):

  • "我们每天有 1,000 个访客,跑 1 周应该够了吧?"
  • 所需样本:1,000 人/组
  • 运行时间:7 天

实验结果1 周后):

  • A 组:1,000 人,50 人购买(5%)
  • B 组:1,000 人,60 人购买(6%)
  • 相对提升:+20%
  • P 值:0.30(不显著)

你的结论:"一键购买没有效果,放弃这个功能。"


但是,你的同事提出了一个问题:"我们的样本量真的够吗?"

重新计算(正确):

  • 基准转化率:5%
  • 期望检测提升:20%(从 5% 到 6%)
  • 显著性水平:α = 0.05
  • 统计功效:80%

使用在线计算器

  • 所需样本:每组约 6,000 人
  • 所需时间:约 6 周(不是 1 周!)

真相:你的实验只跑了 1/6 的样本量,统计功效不足,即使有真实差异也检测不出来(假阴性)。

你错过了一个提升 20% 的机会!


6.5.2 为什么会发生这种情况?

统计功效的直观理解

想象你在安检:

  • 功效 20%:只能检测出 20% 的危险品(漏掉 80%)
  • 功效 50%:能检测出 50% 的危险品(漏掉 50%)
  • 功效 80%:能检测出 80% 的危险品(漏掉 20%)

如果你的安检设备只有 20% 功效,你会漏掉 80% 的危险品。

A/B 测试也是一样:

  • 功效 20%:即使有真实差异,只有 20% 的概率能检测出来
  • 功效 80%:如果有真实差异,有 80% 的概率能检测出来

样本量越小 → 功效越低 → 越容易假阴性


6.5.3 如何避免统计功效不足?

方法 1:实验前必须计算样本量

不要凭感觉! 使用在线计算器:

输入

  • 基准转化率(如 5%
  • 期望检测提升(如 20%
  • 显著性水平(如 0.05
  • 统计功效(如 80%

输出

  • 所需样本量(如 6,000 人/组)

方法 2:如果资源有限,调整期望

场景:你只有 1,000 个样本,怎么办?

选项 1:提高最小检测提升

  • 从检测 20% 提升 → 改为检测 50% 提升
  • 所需样本从 6,000 → 降到 1,000

选项 2:降低统计功效

  • 从 80% 功效 → 降到 50% 功效
  • 所需样本从 6,000 → 降到 2,500
  • 但风险:假阴性概率从 20% → 升到 50%

选项 3:延长测试时间

  • 从 1 周 → 延长到 6 周
  • 样本量从 1,000 → 增加到 6,000

::: tip 💡 实践建议 优先级

  1. 首选:延长测试时间(最可靠)
  2. 次选:提高最小检测提升(接受"只检测大效果")
  3. 下策:降低统计功效(增加假阴性风险)

如果三个选项都不可行,说明你的流量不足以做这个实验。考虑:

  • 聚合更长时间的数据
  • 放弃这个实验
  • 先做其他实验 :::

7. 结果分析:手把手教学

7.1 从原始数据到结论

场景:你的实验结束了,现在要分析结果

实验设计回顾

  • 测试内容:购物车按钮颜色(蓝 vs 红)
  • 运行时间:2 周
  • 流量分配:50/50
  • 目标指标:购买转化率
  • 期望提升:20%(从 5% 到 6%

步骤 1:收集原始数据

从数据库导出数据

日期 A组访客数 A组购买数 B组访客数 B组购买数
第 1 天 500 25 500 30
第 2 天 520 26 510 28
... ... ... ... ...
第 14 天 480 22 490 25
合计 7,000 350 7,000 385

步骤 2:计算基本指标

A 组(对照组)

  • 样本量:7,000
  • 购买数:350
  • 转化率:350 / 7,000 = 5.00%

B 组(实验组)

  • 样本量:7,000
  • 购买数:385
  • 转化率:385 / 7,000 = 5.50%

绝对提升5.50% - 5.00% = +0.5 个百分点

相对提升(5.50% - 5.00%) / 5.00% = +10%


步骤 3:使用在线计算器进行统计检验

访问AB TestGuide 计算器

输入数据

  • A 组:7,000 样本,350 转化
  • B 组:7,000 样本,385 转化

计算器输出

  • 相对提升:+10%
  • P 值:0.042
  • 95% 置信区间:[+0.3%, +19.7%]

步骤 4:解读统计结果

P 值解读

  • p = 0.042 < 0.05
  • 结论:统计显著

置信区间解读

  • 95% CI[+0.3%, +19.7%]
  • 整个区间都在 0 的右边(都是正数)
  • 结论:有 95% 信心真实提升在 0.3% 到 19.7% 之间

关键观察

  • 下限是 +0.3%,即使是最保守估计,也是正提升
  • 上限是 +19.7%,最好情况下可能接近 20% 提升
  • 观察值 10% 在区间中间

步骤 5:检查数据质量

检查 1:样本量是否足够?

  • 实际样本:7,000/组
  • 计划样本:6,000/组
  • 结论: 样本量充足

检查 2:运行时间是否足够?

  • 实际运行:14 天(2 周)
  • 计划运行:14 天
  • 结论: 覆盖 2 个完整业务周期

检查 3:流量分配是否均匀?

  • A 组:7,00050%
  • B 组:7,00050%
  • 结论: 分配均匀

检查 4:是否有异常波动? (绘制每日数据趋势图,观察是否有异常日)

  • 如果某天数据异常(如服务器故障),需要排除
  • 如果数据平稳增长,说明正常

步骤 6:按子群体分析

移动端

  • A 组:5,000 人,250 人购买(5.0%
  • B 组:5,000 人,280 人购买(5.6%
  • 相对提升:+12%
  • P 值:0.03(显著)

桌面端

  • A 组:2,000 人,100 人购买(5.0%
  • B 组:2,000 人,105 人购买(5.25%
  • 相对提升:+5%
  • P 值:0.70(不显著)

结论

  • 移动端效果显著(+12%
  • 桌面端不显著(样本小,差异小)
  • 整体显著主要由移动端驱动

步骤 7:检查其他指标

点击率

  • A 组:10%
  • B 组:11%
  • 结论: 提升(符合预期)

用户满意度

  • A 组:4.2 分
  • B 组:4.1 分
  • 结论:⚠️ 轻微下降(需要关注)

退款率

  • A 组:2%
  • B 组:2.1%
  • 结论: 持平(无负面影响)

综合评估

  • 主指标(转化率)提升
  • 次指标(点击率)提升
  • 用户满意度轻微下降 ⚠️
  • 退款率持平

步骤 8:做出决策

情况分析

  1. 主指标显著提升(+10%
  2. 置信区间合理([+0.3%, +19.7%]
  3. 移动端效果显著,桌面端不显著
  4. 用户满意度轻微下降,但影响不大
  5. 退款率没有上升(说明用户质量没有下降)

决策选项

选项 A:全量上线

  • 优点:获得 +10% 转化率提升
  • 风险:用户满意度可能继续下降

选项 B:仅移动端上线

  • 优点:针对显著有效的群体
  • 风险:桌面端失去优化机会

选项 C:延长观察

  • 优点:收集更多数据,确认趋势
  • 风险:延迟决策时间

最终决定全量上线,但持续监控用户满意度

理由

  1. 转化率提升显著,业务价值明确
  2. 用户满意度下降很小(4.2 → 4.1),可能是随机波动
  3. 退款率没有上升,说明没有严重质量问题
  4. 上线后持续监控,如果满意度继续下降,再考虑回滚

步骤 9:撰写报告

实验报告示例

【A/B 测试报告】购物车按钮颜色优化

实验周期:2024-01-01 至 2024-01-1414 天)

实验设计:
- 对照组(A):蓝色按钮
- 实验组(B):红色按钮
- 流量分配:50/50
- 样本量:7,000/组

主要结果:
- A 组转化率:5.00%350/7000
- B 组转化率:5.50%385/7000
- 相对提升:+10%
- P 值:0.042(显著)
- 95% CI[+0.3%, +19.7%]

子群体分析:
- 移动端:+12%(p = 0.03,显著)
- 桌面端:+5%(p = 0.70,不显著)

其他指标:
- 点击率:+10%A:10% → B:11%
- 用户满意度:-2.4%A:4.2 → B:4.1
- 退款率:持平(A:2% → B:2.1%)

结论与建议:
✅ 建议全量上线红色按钮
   - 主指标显著提升 +10%
   - 置信区间完全为正,下限 +0.3%
   - 其他指标无负面影响

⚠️ 持续监控:
   - 用户满意度轻微下降,需持续观察
   - 建议上线 1 个月后重新评估

报告人:XXX
日期:2024-01-15

7.2 结果解读决策树

问题 1P 值是否显著(p < 0.05)?

  • 否(p ≥ 0.05 → 转到问题 2
  • 是(p < 0.05 → 转到问题 3

问题 2:置信区间是否包含 0

  • 包含 0(如 [-5%, +15%])→ 不显著

    • 决策:保持现状,或延长实验时间
    • 原因:无法确定方向
  • 不包含 0(如 [+5%, +15%])→ 显著

    • (这种情况少见,因为 P 值和 CI 通常一致)

问题 3:提升方向是什么?

  • B > A(提升为正)→ 转到问题 4
  • B < A(提升为负)→ 放弃 B 版本
    • 决策:保持 A 版本
    • 原因:B 版本显著更差

问题 4:提升幅度是否有业务价值?

  • 提升 < 5% → 转到问题 5
  • 提升 ≥ 5% → 转到问题 6

问题 5:小提升(< 5%),但显著,怎么办?

考虑因素

  • 置信区间下限是多少?

    • 如果下限 > 0(如 [+1%, +9%]):可以上线
    • 如果下限接近 0(如 [-0.5%, +8.5%]):谨慎上线
  • 实施成本是多少?

    • 低成本(改文案):可以考虑上线
    • 高成本(重构代码):不建议上线
  • 是否有副作用?

    • 用户满意度下降?保持现状
    • 其他指标恶化?保持现状

决策

  • 置信区间下限 > 0 + 低成本 + 无副作用 → 上线
  • 其他情况 → 保持现状或延长观察

问题 6:大提升(≥ 5%),且显著,直接上线?

还需要检查

  • 用户满意度是否下降?
  • 其他关键指标是否恶化?
  • 是否有子群体效果相反(辛普森悖论)?
  • 是否是新奇效应(短期暴涨,长期回落)?

决策

  • 所有检查通过 → 全量上线
  • 有任何警告 → 谨慎上线或延长观察

7.3 实验评估检查清单

在做出决策前,确保回答了以下问题

数据质量检查

  • 样本量是否达到计划要求?
  • 运行时间是否覆盖 2 个完整业务周期?
  • 流量分配是否均匀(50/50)?
  • 是否有异常数据或技术故障?

统计显著性检查

  • P 值是否 < 0.05
  • 置信区间是否不包含 0
  • 置信区间宽度是否合理(不过宽)?

业务价值检查

  • 提升幅度是否有业务意义(> 5%)?
  • 置信区间下限是否可接受?
  • ROI 是否为正(收益 > 成本)?

风险检查

  • 用户满意度是否下降?
  • 退款率/投诉率是否上升?
  • 是否存在辛普森悖论?
  • 是否是新奇效应?

子群体检查

  • 移动端和桌面端结论是否一致?
  • 新用户和老用户结论是否一致?
  • 不同地区结论是否一致?

长期影响检查

  • 是否观察了足够长的时间(> 2 周)?
  • 趋势是否稳定(不是昙花一现)?
  • 是否有长期负面影响(如用户流失)?

如果所有检查都通过全量上线

如果有任何警告谨慎决策或延长观察

如果有多个失败保持现状或放弃


8. 实战案例

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

实验设计

  • 假设:红色按钮更醒目,能提升转化率 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%
  • 用户留存率无显著变化
  • 服务器成本增加可接受

结论:实验成功。


9. 用 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 的流量分配?" :::

10. 决策树:什么时候该做什么?

10.1 实验前决策树:是否需要做 A/B 测试?

问题 1:改动是否可以快速看到结果?

  • (需要几个月才能看到效果)

    • 不适合 A/B 测试
    • 原因:测试时间太长,成本太高
    • 替代方案:用户调研、专家评估
  • (几周内能看到效果)

    • 可以考虑,继续下一个问题

问题 2:能否随机分配用户?

  • (会严重影响用户体验)

    • 不适合 A/B 测试
    • 原因:无法保证公平对比
    • 替代方案:渐进式发布、灰度发布
  • (随机分配不会有大问题)

    • 可以考虑,继续下一个问题

问题 3:能量化关键指标吗?

  • (改动是主观的,如品牌形象)

    • 不适合 A/B 测试
    • 原因:无法用数字衡量
    • 替代方案:用户调研、焦点小组
  • (有明确的数字指标,如转化率)

    • 适合 A/B 测试!

总结

  • 三个答案都是"是" → 做 A/B 测试
  • 任何一个"否" → 考虑其他方法

10.2 实验中决策树:什么时候该停止?

问题 1:是否达到预定的样本量?

  • (还没达到)

    • ⚠️ 不要停止,不要分析
    • 原因:P 值还不稳定,容易误判
    • 例外:发现严重问题(如 Bug),立即停止
  • (已经达到)

    • 可以分析结果了

问题 2:是否有严重问题?

严重问题的定义

  • 转化率暴跌 > 50%

  • 大量用户投诉

  • 系统错误或 Bug

  • 安全问题

  • (有严重问题)

    • 🛑 立即停止实验,回滚到 A 版本
    • 不要等样本量,安全第一
  • (没有严重问题)

    • 继续运行到预定时间

问题 3:是否达到预定时间(如 2 周)?

  • (还没到)

    • 继续运行
    • 原因:需要覆盖完整业务周期,避免新奇效应
  • (已经到了)

    • 可以停止并分析结果

总结

  • 发现严重问题 → 立即停止
  • 没达到样本量/时间 → 继续运行
  • 达到样本量 + 时间 → 停止并分析

10.3 实验后决策树:如何解读结果?

问题 1P 值是否 < 0.05

  • p ≥ 0.05,不显著)

    • 转到问题 2
  • p < 0.05,显著)

    • 转到问题 3

问题 2:不显著,怎么办?

检查 1:样本量是否足够?

  • 否(样本太小)

    • 延长实验时间,收集更多数据
  • 是(样本充足)

    • 继续检查 2

检查 2:置信区间是否很宽?

  • 是(如 [-20%, +30%]

    • 延长实验,缩小置信区间
  • 否(如 [-2%, +8%]

    • 继续检查 3

检查 3:是否有业务价值?

  • 置信区间下限 > 5%(如 [+6%, +15%],虽然不显著)

    • 考虑上线(如果风险低)
  • 置信区间下限 < 0(如 [-5%, +15%]

    • 保持现状或延长观察

问题 3:显著,B 版本更好吗?

  • B 更差,显著)

    • 放弃 B 版本,保持 A 版本
    • 原因:B 版本显著损害了指标
  • B 更好,显著)

    • 转到问题 4

问题 4B 版本更好,提升多大?

  • 小提升< 5%,如 +2%

    • 转到问题 5
  • 大提升(≥ 5%,如 +10%

    • 转到问题 6

问题 5:小提升但显著,怎么办?

检查 1:置信区间下限是多少?

  • 下限 > 0(如 [+1%, +5%]

    • 可以考虑上线
  • 下限 ≤ 0(如 [-1%, +5%]

    • 谨慎上线或延长观察

检查 2:实施成本是多少?

  • 低成本(改文案)

    • 可以上线
  • 高成本(重构代码)

    • 不建议上线(ROI 太低)

检查 3:是否有副作用?

  • 用户满意度下降

  • 其他指标恶化

    • 不上线或延长观察
  • 无副作用

    • 可以上线

问题 6:大提升且显著,直接上线?

还需要检查

  • 用户满意度是否下降?
  • 退款率/投诉率是否上升?
  • 是否存在辛普森悖论?(子群体结论不一致)
  • 是否是新奇效应?(短期暴涨,长期回落)
  • 其他关键指标是否恶化?

结果

  • 所有检查通过 → 全量上线
  • 有任何警告 → 谨慎上线或延长观察

10.4 快速参考:常见决策场景

场景 决策 理由
p < 0.01,提升 20% 全量上线 高度显著,大提升
p < 0.05,提升 15% 全量上线 显著,中提升
p < 0.05,提升 3% ⚠️ 谨慎上线 显著但提升小,检查副作用
p = 0.08,提升 10% 延长实验 接近显著,需要更多数据
p = 0.30,提升 2% 保持现状 不显著,提升小
p < 0.05,降低 10% 🛑 放弃 B 版本 显著恶化
p < 0.05,移动端 +20%,桌面端 -5% ⚠️ 分群体决策 存在辛普森悖论
第 1 周 +30%,第 4 周 0% 保持现状 新奇效应,虚假提升
p = 0.04,但满意度下降 ⚠️ 延长观察 主指标好,副指标差

名词速查表

名词 英文 解释
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

相关文章