极大似然估计
一、直观理解:哪组参数最能“解释”眼前的数据
极大似然估计(Maximum Likelihood Estimation, MLE)的思想可以概括为一句话:
在给定模型的前提下,选择使当前样本出现概率最大的那组参数。
假设你连续观测到 10 次投篮,命中 7 次。若每次独立、命中概率为 ,则样本的概率为
在 上最大化 ,得到 。也就是说:在所有可能的命中率里, 最能解释“10 投 7 中”这一结果。
与矩估计不同,MLE 直接使用完整的概率模型(似然函数),而不是只匹配若干矩。模型正确时,MLE 通常具有更好的大样本性质。
需要牢记:似然是“参数的函数”,不是数据的概率分布本身;最大化似然得到的是参数估计,不等于“模型一定正确”。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 分布族明确(正态、二项、泊松、指数、Weibull、Logistic 等);回归/分类中的参数估计;含删失、截断或复杂抽样结构的数据;需要点估计并进一步构造置信区间或似然比检验。 |
| 核心优点 | 大样本下通常相合、渐近正态、渐近有效;框架统一,可推广到回归与多元模型;便于做似然比检验和模型比较(AIC/BIC)。 |
| 局限与缺点 | 依赖分布假设,模型错设时可能“精确地错”;小样本可能有偏;似然非凸时存在局部最优;边界参数(如方差接近 0)会使正则条件失效。 |
使用前应确认:
- 观测是否独立(或已正确写出联合似然/偏似然);
- 分布与链接函数是否与数据生成机制相符;
- 参数空间是否开放、估计是否可能落在边界;
- 是否需要稳健标准误或夹心估计,以应对轻度错设。
三、核心原理:从似然到得分方程
设样本 ,参数 。在独立同分布假定下,似然与对数似然为
极大似然估计定义为
若 可微且最大值在内部取得,则满足得分方程(score equation)
二阶导数(Hessian)的负期望是 Fisher 信息矩阵 。在正则条件下,
因此可用观测信息矩阵构造近似标准误与 Wald 置信区间:
也可用剖面似然(profile likelihood)或 Bootstrap 得到更稳健的区间。
正态均值示例: 且 已知时,,与矩估计相同; 未知时,
(无偏估计则分母为 。)
四、关键决策
1. 写对似然比写对优化更重要
删失数据要用生存似然,分层抽样要乘入抽样权重或写出正确联合分布;“把软件默认似然当黑箱”是常见失误。
2. 点估计之后必须量化不确定性
至少给出标准误与置信区间;非线性参数可报告变换后的区间(如 再还原)。
3. 模型比较用谁?
- 嵌套模型:似然比检验;
- 非嵌套或预测导向:AIC / BIC / 交叉验证;
- 关注校准与判别时,辅以残差与样本外指标。
4. 数值优化注意点
多初值启动;参数变换保证约束(如 );检查梯度与 Hessian 条件数;对混合模型警惕标签切换与局部极大。
5. 错设怎么办?
若只关心某些参数的估计方程,可改用准似然、GEE 或夹心协方差;若分布完全不可信,考虑半参数或稳健方法。
五、MATLAB 示例
对正态样本做 MLE,并给出均值的近似置信区间;再对泊松样本演示 mle。
rng(1);
x = normrnd(5, 2, 200, 1);
% 方法1:专用函数
phat = mle(x, "Distribution", "normal"); % [mu, sigma]
fprintf("正态 MLE: mu=%.4f, sigma=%.4f\n", phat(1), phat(2));
% 方法2:手写对数似然并 fminsearch
nll = @(theta) -sum(log(normpdf(x, theta(1), exp(theta(2)))));
theta0 = [mean(x), log(std(x))];
theta_hat = fminsearch(nll, theta0);
mu_hat = theta_hat(1);
sig_hat = exp(theta_hat(2));
fprintf("手写优化: mu=%.4f, sigma=%.4f\n", mu_hat, sig_hat);
% 观测信息近似:正态均值的 SE = sigma/sqrt(n)
se_mu = sig_hat / sqrt(numel(x));
z = norminv(0.975);
ci_mu = mu_hat + [-1, 1] * z * se_mu;
fprintf("mu 的近似 95%% CI: [%.4f, %.4f]\n", ci_mu(1), ci_mu(2));
% 泊松 MLE = 样本均值
y = poissrnd(3.2, 500, 1);
lam = mle(y, "Distribution", "poisson");
fprintf("泊松 lambda MLE = %.4f (样本均值=%.4f)\n", lam, mean(y));
% 似然比:检验 H0: mu = 5
nll_h0 = nll([5, log(sig_hat)]);
nll_h1 = nll([mu_hat, log(sig_hat)]);
LR = 2 * (nll_h0 - nll_h1); % 注意 nll 是负对数似然
pval = 1 - chi2cdf(LR, 1);
fprintf("LR 统计量=%.4f, p=%.4g\n", LR, pval);
六、如何解释结果
报告 MLE 时建议写清:
- 概率模型与独立性假定;
- 参数含义与单位;
- 点估计、标准误、置信区间;
- 优化是否收敛、是否多初值验证;
- 与矩估计/贝叶斯估计的对照(如有);
- 模型诊断:QQ 图、残差、成对得分检验、信息准则;
- 若用于后续预测或决策,说明估计误差如何传递。
把 翻译成实际语句,例如:“在指数分布假定下,平均失效时间估计为 126 小时,95% 区间为 [110, 145]”,而不是只写“lambda=0.0079”。
七、常见误区
1. 似然写错仍“成功收敛”
软件总会给出一个数;写错删失指示、暴露时间或链接函数时,结果可能毫无意义。
2. 把 MLE 的渐近区间用于极小样本
很小时,正态近似可能很差,应考虑精确方法、Bootstrap 或贝叶斯区间。
3. 忽略局部极大
混合分布、复杂非线性模型中,不同初值可能收敛到不同点,必须做稳健性检查。
4. 混淆 的 MLE 与无偏估计
报告方差时要说明分母是 还是 ,并与后续 t 区间使用的约定一致。
5. 模型错设却过度解释“显著”
MLE 在错设模型下仍可能给出很小的 p 值。显著只相对于“该模型下的假设”,不是真理认证。
八、小结
极大似然估计的核心是:
选择使观测数据最可能出现的参数。
它是统计建模的中枢工具:统一了点估计、区间估计与检验。用好 MLE 的关键不在“会调用 mle”,而在写对似然、检查假设、报告不确定性,并在模型可能错设时保持克制。