本节摘要:同一个参数可以有无穷多个估计量,评比靠三把尺——无偏性(期望等于真值)、有效性(方差更小)、一致性(样本增大收敛到真值)。矩估计法"用样本矩对齐总体矩"解出参数,是最古老而通用的估计法。本节推导样本方差除以 n−1 的无偏校正式,并用模拟直观展示有偏 vs 无偏、有效 vs 低效。
参数 θ 的估计量 θ̂ 是统计量,评比标准按"你更在乎什么"分层:
三尺不完全兼容:有时轻微有偏能换大幅降方差(岭回归、收缩估计的立足点),工程上常用均方误差 MSE = Var + 偏差² 做总账。把"无偏"当信仰、把"MSE 最小"当目标的分野,是统计方法论的一条主线。
用 X̄ 代替 μ 计算离差时,Σ(Xᵢ−X̄)² 比 Σ(Xᵢ−μ)² 系统性偏小——数据点天然围绕自己的均值更紧(X̄ 是让该平方和最小的数,一条极值论证:对 c 求导,最小值恰在 c=X̄)。精确关系:E[Σ(Xᵢ−X̄)²] = (n−1)σ²,除以 n−1 恰好把缺口补齐:
import numpy as np rng = np.random.default_rng(6) n, trials = 5, 200_000 sigma2 = 4.0 xs = rng.normal(0, np.sqrt(sigma2), (trials, n)) s2_n = xs.var(axis=1, ddof=0) # 除以 n s2_n1 = xs.var(axis=1, ddof=1) # 除以 n-1 print(f"除以 n 的均值 {s2_n.mean():.4f} 理论 {sigma2*(n-1)/n:.4f} 有偏") print(f"除以 n-1 的均值 {s2_n1.mean():.4f} 理论 {sigma2:.4f} 无偏")
模拟显示除 n 版本平均 3.2(系统性低估 20%),除 n−1 版本平均 4.0。n 大时两者趋同(这解释了为什么有的软件默认除 n——机器学习里常不在乎这一点偏差),但小样本必须校正。
卡尔·皮尔逊 1894 年提出的思想朴素到只有一句话:样本矩是总体矩的好估计(大数定律保证),于是让总体矩的表达式等于样本矩,解出参数。总体 k 阶矩 μₖ = E(Xᵏ),样本 k 阶矩 Aₖ = (1/n)ΣXᵢᵏ。有几个未知参数就列几个矩方程。
EX = θ/2,令 X̄ = θ̂/2 得 θ̂ = 2X̄。直觉清楚:均值翻倍估上限。
EX = α/λ,Var = α/λ²。令样本均值、样本方差分别对齐,解得 λ̂ = X̄/S²,α̂ = X̄²/S²。两个矩方程解两个参数,代数即止。
import numpy as np rng = np.random.default_rng(21) alpha_true, lam_true = 3.0, 2.0 for n in [10, 100, 10_000]: x = rng.gamma(alpha_true, 1/lam_true, n) m, v = x.mean(), x.var(ddof=1) lam_hat, alpha_hat = m/v, m*m/v print(f"n={n:6d} alpha估计 {alpha_hat:6.3f} (真值3) " f"lambda估计 {lam_hat:.3f} (真值2)")
n 从 10 到 10 万,估计从粗糙波动收敛到贴住真值——一致性肉眼可见。矩估计的优点:几乎总能算(只需求矩)、不要求分布形式完全已知;缺点:可能低效(没有用全分布信息)、对高阶矩敏感(偏态大时样本三阶矩抖得厉害)、多参数时方程组可能难解。
两个无偏估计比方差。估计总体均值:候选一是样本均值 X̄;候选二是"最小值加最大值除二"(中点统计量,对均匀总体也无偏)。看谁弹着更密:
import numpy as np rng = np.random.default_rng(66) n, trials = 10, 100_000 xs = rng.uniform(0, 10, (trials, n)) est1 = xs.mean(axis=1) est2 = (xs.min(axis=1) + xs.max(axis=1)) / 2 for name, e in [("样本均值", est1), ("中点统计量", est2)]: print(f"{name}: 均值 {e.mean():.4f} 方差 {e.var():.4f}") print("均匀总体方差 100/12 = %.3f, X̄ 理论方差 %.4f" % (100/12, 100/12/n))
对均匀总体,中点的方差显著小于样本均值(理论上约为其 1/(2(n+2)) 倍量级)——同为无偏,效率可以差数倍,有效性这把尺不是摆设。这也提醒:X̄ 并非一切场景的最优,只是正态总体下的金牌(下章 MLE 视角再证)。

⚠️ 常见坑:把"无偏"当成估计好的充分条件。单次实现仍可能离真值很远;比较两个无偏估计必须再看方差;明知有偏但 MSE 更小的收缩估计在预测问题里常常更实用。
矩估计不是永远可用。柯西分布(对称钟形但厚尾)的各阶矩都不存在,矩方程根本列不出来;更隐蔽的是"矩存在但样本高阶矩极不稳定"的情形——用三阶矩估计偏态参数时,一个极端离群值就能把估计拖到荒谬的位置。对照演示:
import numpy as np rng = np.random.default_rng(404) n = 200 # 帕累托尾部 alpha=2.5: 均值存在 但方差不存在 a = 2.5 x = (rng.pareto(a, n) + 1) * 10 m1, m2 = x.mean(), (x**2).mean() print("样本均值 %.2f (理论 %.2f)" % (m1, 10*a/(a-1))) print("样本二阶矩 %.0f —— 理论无穷 每次估计剧烈漂移") for seed in [1, 2, 3]: xr = (np.random.default_rng(seed).pareto(a, n) + 1) * 10 print(f" seed={seed} 二阶矩估计 {(xr**2).mean():.0f}")
三次"重复实验"的二阶矩估计相差数倍——用不稳定的统计量做估计,等于把地基打在流沙上。遇到厚尾数据,先查矩的存在性(7.3 节的偏度峰度、分位数都是诊断线索),再决定用矩法还是换 MLE/分位数方法。