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

2578 lines
73 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 测试时,决策往往依赖:
- **HiPPO**Highest 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:确定流量分配**
**选项 1**50/50 分配
- 50% 用户看到 A 组
- 50% 用户看到 B 组
**选项 2**90/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 流量分配演示
👇 **动手试试看**:点击下方按钮,观察流量如何随机分配到两组:
<ABTestingDemo />
::: 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β` = 统计功效对应的 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)
- `Zβ` = 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 💡 在线计算工具
- [Evan Miller 的样本量计算器](https://www.evanmiller.org/ab-testing/sample-size.html) - 业界标准
- [Optimizely 的样本量计算器](https://www.optimizely.com/sample-size-calculator/)
:::
---
## 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 值!**
使用在线工具:
- [AB TestGuide 计算器](https://abtestguide.com/calc/)
- [Evan Miller 计算器](https://www.evanmiller.org/ab-testing/sample-size.html)
你需要做的是:
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 组结果对比演示
👇 **动手试试看**:调整转化率和样本量,观察统计显著性的变化:
<ABTestingDemo />
**关键观察**
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:实验前必须计算样本量**
**不要凭感觉!** 使用在线计算器:
- [Evan Miller 样本量计算器](https://www.evanmiller.org/ab-testing/sample-size.html)
- [Optimizely 样本量计算器](https://www.optimizely.com/sample-size-calculator/)
**输入**
- 基准转化率(如 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 计算器](https://abtestguide.com/calc/)
**输入数据**
- 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 | 预设多个检查点,动态调整显著性阈值 |
---
## 参考资源
### 在线工具
- [Evan Miller - A/B 测试样本量计算器](https://www.evanmiller.org/ab-testing/sample-size.html)
- [Optimizely - 样本量计算器](https://www.optimizely.com/sample-size-calculator/)
- [AB TestGuide - 统计显著性计算器](https://abtestguide.com/calc/)
### 经典文章
- [ Airbnb 的实验设计实践](https://medium.com/airbnb-engineering/experimentation-at-airbnb-acquiring-trust-confidence-through-exploratory-data-analysis-9304de556269)
- [Netflix 的 A/B 测试指南](https://netflixtechblog.com/its-all-a-bout-testing-the-netflix-experimentation-platform-4e1ca458c55)
- [Google 的 A/B 测试最佳实践](https://experimentation.com/)
### 书籍推荐
- 《Trustworthy Online Controlled Experiments》- Ron Kohavi 等
- 《Designing Experiments》- Geoffrey Keppel
### 相关文章
- [A/B Testing Pitfalls - Simpson's Paradox, P-hacking, Early Stopping](https://blog.example.com/ab-testing-pitfalls)
- [Sample Size Calculation for A/B Testing](https://www.evanmiller.org/ab-testing/sample-size.html)