如何通过GLM的模型偏差手动计算对数似然值
GLM偏差与对数似然的关系说明
换算关系的成立条件
你课程中学到的似然比检验公式完全正确,而对数似然值 = deviance / -2的说法并非普适的绝对换算公式,仅在计算两个模型的对数似然差值、或假设饱和模型对数似然为0的相对计算场景下成立,背后原理来自GLM偏差的标准定义:
GLM的残差偏差(即R的
glm()输出中给出的Residual Deviance项) 定义为:
$D = -2 \times [\ln L(\hat{\beta}) - \ln L(S)]$
其中:
- $\ln L(\hat{\beta})$为当前拟合模型的最大对数似然值
- $\ln L(S)$为饱和模型(参数数量等于观测数、可完美拟合所有观测的模型)的最大对数似然值
将公式移项即可得到当前模型的对数似然:
$\ln L(\hat{\beta}) = \ln L(S) - \frac{D}{2}$
如果直接套用$\ln L(\hat{\beta}) = D/-2$,本质是把饱和模型的对数似然$\ln L(S)$默认取0做相对换算,得到的不是模型的真实绝对对数似然值。
似然比检验偏差差公式的原理
全局显著性检验中,似然比统计量等于两个模型偏差的差值,核心原因是两个待比较模型的饱和模型完全相同,$\ln L(S)$在做差时直接抵消:
- 记截距-only模型(H0对应模型)的残差偏差为$D_0$,对数似然为$\ln L(M_0)$
- 记带自变量的完整模型(H1对应模型)的残差偏差为$D_1$,对数似然为$\ln L(M_1)$
代入偏差定义做差可得:
$D_0 - D_1 = [-2(\ln L(M_0) - \ln L(S))] - [-2(\ln L(M_1) - \ln L(S))] = -2 \times [\ln L(M_0) - \ln L(M_1)] = -2 \ln \frac{L(M_0)}{L(M_1)}$
和你课程中学到的似然比统计量公式完全一致,所以该换算关系在模型比较场景下100%成立,不需要考虑饱和模型的对数似然取值。
仅靠提供的GLM输出获取对数似然的方法
- 若需要绝对对数似然值:仅靠默认
glm()输出的残差偏差、零偏差等信息无法计算,因为缺少饱和模型的对数似然项,必须通过logLik(model)直接调取。 - 若需要两个模型的对数似然差值:直接将两个模型的残差偏差做差后除以-2即可,不需要额外参数。
内容的提问来源于stack exchange,提问作者Theo75
相关产品推荐
相关产品推荐

