rms::lrm与glm在拟合概率接近0或1时的系数差异探究
rms::lrm与glm在极端拟合概率下的系数差异原因 当拟合二分类模型时,如果出现拟合概率数值上接近0或1(即完全分离/准完全分离),glm(family=binomial("logit"))和rms::lrm的系数会出现显著差异,核心原因是两者采用的估计方法不同:
1. glm的处理逻辑
glm使用无惩罚最大似然估计(MLE):
- 当数据存在完全分离时,MLE的系数估计值会趋向于无穷大(绝对值)——只要系数足够大,就能让所有样本的拟合概率无限接近0或1,此时似然函数达到最大值。
- 这就是你看到
glm系数绝对值极大(如截距-75.2)的原因,同时会触发fitted probabilities numerically 0 or 1 occurred的警告。
2. rms::lrm的处理逻辑
rms::lrm默认使用带L2惩罚(岭回归惩罚)的最大似然估计:
- 它会自动给系数加入一个极小的惩罚项(默认
penalty=0.001),约束系数的绝对值,避免在完全/准完全分离场景下系数极端化。 - 惩罚项的作用是牺牲少量似然值,换取更稳定、更具解释性的系数估计,这也是
lrm系数(如截距-26.3)更温和的原因。
你可以通过关闭惩罚项验证这一点:
# 关闭lrm的惩罚,退化为无惩罚MLE rms::lrm(y ~ x1 + x2, data = df, penalty = 0) |> coef() #> 结果会与glm几乎一致,同时出现类似的拟合概率警告
总结
两者的核心差异来自估计方法的选择:
glm追求纯最大似然的最优解,极端场景下系数会趋向无穷大;rms::lrm默认引入正则化惩罚,优先保证系数的稳定性与可解释性。
内容的提问来源于stack exchange,提问作者JWilliman
相关产品推荐
相关产品推荐

