文档目录

5.6 统计基础(够用版)

上一节:5.5 数据集设计 | 下一节:5.7 噪声底线与回归检测 配套代码:05-experiment-design/06-statistics-basics


一句话结论

只需要三个工具就够用:变异系数(CV,衡量数据稳不稳)、置信区间(衡量估计有多准)、非参数检验(判断两组差异是否真实)。不要用 t 检验——延迟分布不是正态的。


一、用「法庭举证」理解统计

法庭上要证明「被告有罪」,不能只说「看起来像他」。要给出证据强度:

法庭 统计
「证据确凿」 p < 0.01
「证据充分」 p < 0.05
「证据不足」 p > 0.05
「无法排除合理怀疑」 差异在噪声范围内

性能实验也要求「证据强度」。只说「优化后快了」是不够的——要说明这个差异有多大概率不是偶然。


二、工具一:变异系数(CV)——衡量数据稳不稳

CV = 标准差 / 均值

用途:判断测量环境的质量。

CV 判断 行动
< 3% 环境很干净 可以做细微差异的判断
3% – 5% 可接受 常规结论可信
5% – 10% 偏大 只能判断较大差异(> 10%)
> 10% 环境有问题 先修环境,任何结论都不可信

关键理解:CV 是「你的尺子的精度」

如果你的 CV 是 8%,那么:
  5% 的「优化」→ 无法确认(在噪声范围内)
  30% 的「优化」→ 可以确认

这就是第 7 节「噪声底线」的核心:CV 决定了你能声称的最小差异。

⚠️ CV 不适用于延迟分布?

严格说,CV 假设分布是单峰的。延迟分布是重尾的,所以:

用途 是否适用 CV
判断多轮之间的波动(每轮一个 P99 值) ✅ 适用(这是「轮间波动」)
描述单轮内的延迟分布 ❌ 不适合(用 P50/P99/IQR)
判断均值的稳定性 ✅ 适用
判断P99 的稳定性 ⚠️ 勉强可用(P99 本身是统计量)

实践做法:用 CV 衡量「多轮重复实验之间的波动」——这是最常用、最有价值的用法。


三、工具二:置信区间——衡量估计有多准

问题:你测了 5 轮,P99 中位数是 95 ms。但真实值可能是 90,也可能是 105。

置信区间回答:「如果我重复这个实验很多次,95% 的情况下结果会落在哪个范围」。

方法一:基于标准误(适用于轮间均值)

95% 置信区间 ≈ 均值 ± 1.96 × (标准差 / √n)

例子:5 轮 P99 = 93, 96, 94, 95, 95

均值 = 94.6
标准差 = 1.14
n = 5
标准误 = 1.14 / √5 = 0.51
置信区间 = 94.6 ± 1.96 × 0.51 = 94.6 ± 1.0 = [93.6, 95.6]

解读:「真实 P99 大概率在 93.6–95.6 之间。」

方法二:Bootstrap 重采样(更稳健,推荐)

不假设分布形态,直接从样本中反复重采样:

① 从 5 个观测值中有放回地抽 5 个(可能有重复)
② 计算这 5 个的中位数
③ 重复 10000 次,得到 10000 个中位数
④ 取这 10000 个的第 2.5% 和第 97.5% 分位,就是 95% 置信区间

优点:不需要假设正态分布——对延迟这种重尾分布特别合适。

置信区间怎么用

场景 用法
优化前后对比 如果两个置信区间不重叠,差异很可能是真实的
判断是否达标 如果置信区间上限 < SLO 阈值,可以认为达标
判断样本量是否足够 置信区间太宽 → 需要更多轮次

注意:「置信区间不重叠」是充分不必要条件——即使重叠,差异也可能是真的(用第 6 节的方法二判断)。反之,不重叠基本可以认为有差异。


四、工具三:非参数检验——判断差异是否真实

为什么不能用 t 检验

t 检验假设数据服从正态分布。但延迟分布是重尾的:

t 检验的假设:数据像钟形曲线一样对称分布
延迟的真实形态:大部分很小,少数极大(长尾)

用 t 检验的后果:p 值不可信,可能得出错误的显著性结论

而且「均值 ± 标准差」在重尾分布下也没有解释力——算出来的「均值 + 3 个标准差」甚至可能是负数。

该用什么:Mann-Whitney U 检验

它的原理:把所有观测值混合排序,看两组的值是否交错在一起。

组 A:93, 94, 95, 96, 95
组 B:70, 72, 71, 73, 71

排序后:
  B B B B B | A A A A A      ← 完全不交错 → 差异显著
组 A:93, 94, 95, 96, 95
组 C:94, 93, 96, 95, 94

排序后:
  93(A/C) 94(A/C) ...        ← 完全交错 → 差异不显著

判断标准:

p 值 结论
p < 0.01 差异高度显著
p < 0.05 差异显著(常用标准)
p ≥ 0.05 无法确认差异(不是"没有差异",而是"证据不足")

⚠️ 统计显著 ≠ 值得做

统计显著:差异不是偶然的
值得做:差异大到用户能感知,且收益超过成本

例子:优化后 P99 从 210 ms 降到 205 ms,p = 0.03(统计显著)。

但:用户感知不到 5 ms 的差别,而你为此引入了一层缓存(带来一致性问题)。

所以判断标准有两层:

① 统计显著(p < 0.05)
② 实际有意义(差异 > 用户可感知阈值,且 > 噪声底线)

五、三个工具的组合使用流程

① 先算 CV
   ├─ CV > 10% → 停下,先修环境(第 4 节)
   └─ CV < 10% → 继续
        ↓
② 算置信区间
   └─ 区间太宽 → 增加轮次
        ↓
③ 做 Mann-Whitney U 检验
   ├─ p ≥ 0.05 → 「差异不显著」→ 结论:无法确认优化有效
   └─ p < 0.05 → 继续
        ↓
④ 判断实际意义
   ├─ 差异 < 噪声底线 → 「统计显著但实际无意义」
   └─ 差异 > 噪声底线 且 用户可感知 → 「优化有效,建议采纳」

六、样本量:需要多少轮

经验规则:

目标 最小样本量
看波动范围 3
Mann-Whitney U 检验(勉强) 4–5
置信区间较窄 8–10
检测 5% 的差异 20+

判断方法:用置信区间的宽度来判断。

如果 5 轮后的置信区间是 [70, 120](宽 50)
→ 太宽,无法判断 10% 的差异
→ 需要更多轮次

如果 10 轮后是 [85, 95](宽 10)
→ 可以判断 10% 以上的差异

成本的权衡:每增加一轮都要重启服务、重新预热、重新压测。如果 CV 本身就大,增加轮数的收益不如先改善环境。


七、本节小结

  1. 三个工具够用:CV(稳定性)、置信区间(估计精度)、Mann-Whitney U(差异显著性)。
  2. CV 衡量「多轮之间」的波动——它是你的"尺子精度",决定你能声称的最小差异。
  3. 置信区间用 Bootstrap 更稳健(不假设分布形态),比「均值 ± 1.96×标准误」更适合重尾分布。
  4. 绝对不要用 t 检验——延迟不是正态分布。用 Mann-Whitney U。
  5. 统计显著 ≠ 值得做:还要看差异是否大于噪声底线、是否被用户感知。
  6. 样本量用置信区间宽度来判断是否足够,而不是拍一个数字。

八、自测

  1. 你测了 5 轮,P99 分别是 93、96、94、95、95 ms。请算出 CV,并判断这个环境的质量。
  2. 优化前后各测了 5 轮:优化前 93–96 ms,优化后 70–73 ms。请说明你会用什么方法判断差异是否显著,以及为什么不用 t 检验。
  3. 一个优化让 P99 从 210 ms 降到 205 ms,Mann-Whitney U 检验 p = 0.02。请说明「统计显著」和「值得做」的区别,并给出你的建议。
  1. 均值 = (93+96+94+95+95)/5 = 94.6;标准差 ≈ 1.14;CV = 1.14/94.6 ≈ 1.2%。判断:CV < 3%,说明这个环境非常干净,可以做细微差异的判断(例如 3%–5% 的变化都能可信地识别)。但要注意:① 这只代表「轮间波动」小,不代表这一轮内部的延迟分布也很集中;② 5 轮的样本量仍然偏少,最好用置信区间确认;③ 要确认这 5 轮之间除了代码没有其他变量变化。
  2. 用 Mann-Whitney U 检验(或 Bootstrap 置信区间)。为什么不用 t 检验:① t 检验假设数据服从正态分布,而延迟分布是重尾的(大部分很小、少数极大);② 只有 5 个样本时,正态性假设完全无法验证;③ t 检验对异常值敏感,一个偶发尖刺就能让结论翻转。这个例子的预期结果:两组值完全不交错(优化前最小 93 > 优化后最大 73),Mann-Whitney U 检验会给出非常小的 p 值(p < 0.01),差异显著。But:还要补一句——① 需要确认两组实验的其他条件一致(第 1 节);② 差异 24% 是否大于噪声底线(第 7 节);③ 是否是「用户可感知」的改善(200ms → 150ms 级别的差异用户能感知)。
  3. 统计显著(p = 0.02 < 0.05)意味着「这 5 ms 的差异不太可能是偶然波动」。值得做要考虑三件事:① 用户可感知性——5 ms 在 200 ms 级别上用户完全感知不到;② 噪声底线——如果你的环境 CV 是 2%,那 5 ms/210 ms = 2.4% 可能刚好在噪声边缘;③ 收益 vs 成本——如果这个优化引入了一层缓存(带来一致性风险和维护成本),那就不值得。建议:不采纳这个优化(或者推迟),把工程时间投入到「差异更大的瓶颈」上。但要记录在案:如果将来 P99 逼近 SLO 违约边缘,这 5 ms 可能变得有意义。一句话:统计显著是必要条件,不是充分条件。