# 上线之后，数据能替你证明什么：指标为什么要在动手前定好

用反事实和混淆变量讲清前后对比为什么靠不住、随机对照实验能证明什么，以及为什么成功指标、决策规则和护栏指标必须在上线前写好

> 数据验证 · 成功指标 · A/B 测试 · 决策预注册 · 约 6 分钟 · 10 月 14 日

## 本篇要点

1. 要证明“是这次改动起了作用”，需要一个反事实——假如不做改动会怎样；它没发生，观察不到，只能靠对照设计估出来。
2. 前后对比把季节、活动、其他改动全都算进了你的功劳，因为凡是跟着改动一起变又能单独解释结果的因素（混淆变量）都无法被排除。
3. 随机对照实验（A/B 测试）在同一段时间把用户随机分成两组，外部变化同时作用于两组而相互抵消，剩下的差异才可能归给改动，因此它是常见做法里唯一能支撑因果结论的。
4. 对照组无法事后补，所以它必须在上线之前就设计好，这是指标也要在动手前定好的第一条理由。
5. 第二条理由是认知上的：事后再定标准，涨了归功、平了要更多数据、跌了怪外部，加上指标一多总能筛出一个“赢”的切法，结论会被结果牵着走。
6. 事先写下一句“什么结果对应什么决定”（含中性结果怎么办），等于提前保留了自己可能错的空间；而中性结果其实是最常见的结局。
7. 即使实验跑得干净，数据也只能证明“这个改动→这个指标→这批用户→这段时间”，证明不了为什么有效、能持续多久、能否推广。
8. p 值小于 0.05 不等于结果有 95% 的概率是真的；不显著也不等于没效果，只说明这份数据分辨不出来。
9. 指标只是你真正在意之事的替身，一旦变成追逐目标就会失真（古德哈特定律），所以主指标之外要有护栏指标。
10. 没能在动手前定好时，诚实的退路是把结论降级为方向性观察，并说明它排除不了什么，然后为下一次设计一个干净的测试。

---

上一篇讲 PRD 时，有一格叫“成功指标与观察窗口”，还特意强调要带上基线。那一格填起来很轻，很多人随手写个“提升转化率”就过去了。这篇讲的就是这一格为什么必须在上线之前填好，以及上线之后，它到底能替你证明什么、不能证明什么。

## “上线前后一比”，是最常见也最不可靠的读法

假设你给门店做了一个报表页，让店长不用再在三个页面之间抄数。上线两周后，周一早上的平均准备时间从 38 分钟降到 22 分钟。数字很漂亮，但它几乎证明不了什么。

因为这两周里还发生了别的事：正好赶上月中促销季，门店数据量整体上涨；IT 那周升级了服务器，页面普遍变快；区域经理临时把汇报模板简化了。这些都可能在同一方向上推动那 22 分钟。凡是跟着你的改动一起变、又可能单独解释结果的因素，都叫混淆变量[3][5]。前后对比的问题不在于算错了，而在于它把这一堆因素合起来的变化，全算成了你的功劳。

## 你要的其实是一个不存在的平行世界

要确认“是这次改动导致了变化”，你得知道：假如不做这次改动，同样这批用户、同样这段时间，会是什么样。这个“没做的版本”叫反事实，它没有发生，你观察不到[4]。

前后对比是拿过去当这个平行世界的替身，可过去和现在之间什么都变了。真正能把它造出来的办法是**随机对照实验**：在同一段时间里把用户随机分成两组，一组用新版，一组用旧版。两组同时经历同一个促销季、同一次服务器升级、同一个模板调整，外部变化同时作用在两边、相互抵消；最后剩下的差异，才有可能归给改动本身[4][3]。

```mermaid
flowchart LR
  A["同一段时间"] --> B["对照组：旧版"]
  A --> C["实验组：新版"]
  D["促销季、服务器升级、模板调整"] --> B
  D --> C
  B --> E["两组共同承受的外部变化相互抵消"]
  C --> E
  E --> F["剩下的差异才归给改动"]
```

关键在“随机”两个字。如果让用户自己挑，爱尝新的人会挤进新版，两组从一开始就不是同一类人，差异什么都说明不了。随机分配的作用是让两组在**所有**因素上趋同——不只是你想得到、测得到的那些，还包括你根本没想到、也测不出来的因素。这就是 A/B 测试撑得起“因果”结论、前后对比撑不起的全部原因。

由此有一个直接后果：**对照组必须在上线之前就设好**，上线后再想补一批“没用上新版本的用户”是补不出来的[5]。这也是指标必须在动手前定好的第一条理由：越强的证据，越只能提前搭。顺带说一句，有些改动没法随机分组，比如全国统一的价格，只能退而用更弱的方法估效果，这里不展开。

## 为什么指标也得在上线前定

第二条理由更根本，是认知上的。看到结果的瞬间，你要回答的其实不是“涨了多少”，而是“那我该做什么”——全量、回滚，还是继续改。如果你事先没写清“什么结果对应什么决定”，那么最后真正起作用的映射，就是你在已经知道数字之后才形成的。而那个时候，团队已经为这个功能投进去几个月，没有谁真心想承认白做了。于是很自然的读法就来了：涨了归功于自己的改动，持平是“数据还不够”，跌了怪外部环境[1][6]。

这不只是心态问题。指标一多，“涨”几乎总能找到：主指标平了就看次指标，整体平了分渠道看，渠道也平了再分新老用户。指标越多，纯靠运气筛出“看起来赢的那一个”的机会就越大[1][6]。

事先写下来能同时挡住这两条路，写法就是一句话的量级：

> 如果主指标提升至少 3%，且所有护栏指标都没有显著变差，就全量上线。

这句话真正值钱的地方，是它事先把“我可能是错的”保留了下来[1][2]。另外别忘了中性结果——它恰恰是最常见的结局。微软内部统计过，测过的点子里约三分之一有效、三分之一中性、三分之一反而有害；Google 和 Bing 只有约 10% 到 20% 的实验结果是正面的[5]。所以还要事先专门写一句：**结果不好也不坏时，我们怎么办。** 这一句不写，中性结果就会被读成“再等等”，实验一直挂着，决定一直不做[6]。

## 数据能证明的，比你以为的窄

现在假设你规规矩矩跑完了一个随机对照实验，结果显著向好。它能证明什么，不能证明什么？

**它证明不了“为什么”。** 实验给出的是“这个改动让这个指标涨了这么多”，不是“因为用户喜欢这个设计”。机制是你事后的解读；结果站得住，不代表解读对。它也证明不了这效果能持续多久——靠新鲜感赢来的提升可能两周就退回去，短窗口的测试看不见；它同样证明不了换一批用户、换一个场景还成不成立。

**“显著”不等于“真的有效”，“不显著”也不等于“没效果”。** $p$ 值的含义是：假设真实效果为零，观察到现在这么极端结果的概率。$p < 0.05$ 的意思是“如果真没效果，出现这种数据的概率不到 5%”，不是“这个结果有 95% 的概率是真的”[8]；而且这个门槛默认实验设计正确、样本足够，样本不够的测试会把噪声读成信号[2]。反过来，不显著只说明这份数据分辨不出来，这时延长实验、翻找子群体直到刷出一个显著结果，就是把决定权推给了数字[6]。

**指标本身也只是替身。** 你真正想要的是“店长觉得这工具好用、愿意一直用”，但这个东西没法直接量，只能拿“准备时间”“使用频次”去代替。一旦某个替代指标变成团队追逐的目标，它就会失真：如果只考核“准备时间”，最省事的做法可能是干脆不好好准备数据。这就是古德哈特定律——当一个度量变成目标，它就不再是好度量[7]。所以主指标之外还要有护栏指标，比如“汇报材料出现数据错误的次数”“报表页报错率”，让任何一个数字都不能被单独优化到失真。

## 回到那一格

一次靠谱的数据验证是这样一条链：动手前写下假设、主指标、基线、成功阈值、护栏指标和观察窗口，同时把对照组设计出来；上线后按事先说好的方式收数据；结果拿到手，填进早就写好的规则里，而不是反过来，让数字去决定当初的标准是什么。

如果一开始没写，也不是没法收场：把结论降级为“方向性观察”，明说它排除不了季节和其他改动，然后为下一次设计一个干净的测试。

## 术语表

- 反事实：假如没做这次改动、同样这批用户同样这段时间会怎样；它没有发生，观察不到，只能靠对照设计估计。
- 混淆变量：跟着你的改动一起变、又能单独解释结果的因素；前后对比分不开它和你的改动。
- 随机对照实验（A/B 测试）：同一段时间把用户随机分成两组，只让改动不同，用两组差异估计效果。
- 决策预注册：在数据出来之前就写下“什么结果对应什么决定”，包括结果中性时怎么办。
- 护栏指标：主指标之外那些不希望被牺牲的指标，用来防止单个数字被优化到失真。
- 代理指标：真正想要的东西没法直接量，用能测到的东西代替它。
- 古德哈特定律：当一个度量变成目标，它就不再是好度量。
- p 值：假设真实效果为零时，观察到当前这么极端结果的概率；它不回答“这个结果有多大概率是真的”。

## 来源

1. [Eppo: Make Decisions Before Experimenting — 决策预注册的做法与理由：结果组合太多、事后解读会偏向自己想要的结论](https://www.geteppo.com/blog/make-decisions-before-experimenting)
2. [StatsTest: Pre-Registration Lite for Product Experiments — 一份轻量预注册要写什么：主指标定义、决策规则、样本与观察窗口、护栏指标](https://www.statstest.com/pre-registration-lite-product-experiments-pragmatic-workflow)
3. [Pre/post vs difference in differences vs A/B test — 三种方法各能排除什么、不能排除什么](https://builderscamp.com/guides/other/pre-post-vs-difference-in-differences-vs-ab-test)
4. [AnyLearn: Why before-and-after fools you — 反事实的含义，以及随机分配为什么能让两组在所有因素上趋同](https://anylearn.cc/lessons/ab-the-controlled-experiment)
5. [How to Measure a Product Launch in GA4 — 前后对比的混淆来源、对照组必须在上线前设计，以及实验成功率的基础比率](https://henkanpartners.ai/en/insights/ga4-measure-product-launch/)
6. [Square: Success Metrics for Product Analytics — 中性结果的常见错误处理：延长实验、翻找子群体、其他 p-hacking 形式](https://developer.squareup.com/blog/success-metrics-for-product-analytics/)
7. [“When a Measure Becomes a Target, It Ceases to be a Good Measure” — 古德哈特定律的出处与机制](https://pmc.ncbi.nlm.nih.gov/articles/PMC7901608/)
8. [A/B Testing Intuition Busters — p 值与“置信度”常被误读：它是在零假设成立下观察到极端结果的概率](https://dl.acm.org/doi/epdf/10.1145/3534678.3539160)

---

原文：https://pangzhengboyin.com/articles/why-metrics-must-be-defined-before-launch-ad1a2664

> **庞征博引** · 想学的，慢慢都会
>
> 庞征博引是把想学的东西写成连载的 AI 学习工具。说出想学什么，它会先了解你的基础，再把主题写成一篇篇 5–10 分钟能读完的文章；边读边问，接下来学什么跟着你走。这篇就是这样写出来的。
>
> 开始你自己的连载 → https://pangzhengboyin.com
