统计方差为什么除以 n−1
相关文档:术语表
这个问题在面试里常被当做送分题,但真要讲清楚,得落到一个具体的统计语境下:用样本去估计总体参数时的无偏性(unbiasedness)。除以 n−1 不是数学上的约定俗成,而是对一个系统性偏差的修正。
两种方差不要混为一谈
严格区分两个东西:
- 总体方差(population variance):总体真值 μ 已知,定义为
。 - 样本方差(sample variance):μ 未知,只能用样本均值
代替,即 。
差别只有一处:μ 是确定量,
直接除 n 为什么不行
如果用
原因在于
特别地,把真值 μ 代进去也一样:
自由度的直观解释
另一个视角是自由度。n 个独立观测本来有 n 个自由度,但一旦用它们算出了
也就是说,n 个残差里只有 n−1 个是独立的信息量。分母用 n−1 才对应实际可用的独立信息。
严格的期望计算
把”系统性低估”量化出来。对 i.i.d. 样本
推导不复杂,用
于是:
- 除以 n:
,有偏。 - 除以 n−1:
,无偏。
这就是 Bessel’s correction 的全部内容。
什么时候就不用纠结这件事
工程实践里,除以 n 还是 n−1 其实经常不重要:
- 真实均值 μ 已知时,直接除 n 就是无偏的,没有修正问题。
- 大样本下,
,差异可以忽略。 - 做点估计以外的目标(比如 MLE、深度学习里的 batch norm、归一化层),追求的是数值稳定性、梯度性质或者一致性,而不是无偏性。BN 里直接除 n 就是这个道理,没人会在训练循环里计较那一个自由度。
- 无偏估计本身也不是唯一的”好”。像 MSE 最小的方差估计量其实是除以 n+1,只是牺牲了无偏性换更小的方差。估计量的选择永远是 bias-variance 权衡的问题。
一句话总结
除 n−1 的本质,是用样本均值顶替真实均值时对”自己拟合自己”这一行为的偏差修正。它在统计推断里必要,但在大部分机器学习场景里并非刚需——搞清楚当前任务要的是无偏性还是别的什么,比记住公式更重要。