You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

逻辑回归模型预测响应值与手动计算概率值不一致问题排查

为什么手动计算逻辑回归概率与glm预测结果不一致?

嘿,问题的根源其实很简单——你根本没拟合逻辑回归模型!

看你贴出的模型summary里有这么一行:

(Dispersion parameter for gaussian family taken to be 0.1965073)

这说明你调用glm()的时候用了默认的family = gaussian(高斯族),也就是拟合了普通的线性回归模型,而非逻辑回归需要的binomial(二项式)族。这直接导致了两种计算结果的差异:

1. 你用estimator函数得到的结果

predict(fit2, type = "response")对于高斯族模型来说,返回的是线性回归的预测值,也就是直接计算 $\hat{y} = B_0 + B_1x$:
用你给出的系数计算:
$B_0 + B_1
550 = -1.531574 + 0.003749*550 ≈ 0.5304$
这正好和你得到的0.5304603一致(微小差异是浮点精度问题)。

2. 你手动函数计算的结果

你的est函数用的是逻辑回归的sigmoid公式 $p = \frac{e{B_0+B_1*x}}{1+e{B_0+B_1*x}}$,但这里的系数是线性回归的系数,代入后计算的是把线性预测值套进sigmoid后的结果,自然和线性回归的直接预测值不一样——你算出来的0.6295905其实是把线性回归的预测值0.5304放进sigmoid后的结果:
$\frac{e{0.5304}}{1+e{0.5304}} ≈ \frac{1.700}{2.700} ≈ 0.6296$

解决方法

只要重新拟合模型时指定family = binomial,就能得到真正的逻辑回归模型:

# 重新拟合逻辑回归
fit2 <- glm(ability ~ stability, data = df2, family = binomial)

# 此时两种计算方式结果会一致
estimator(550)
est(fit2$coefficients, 550)

这样修改后,predict会用逻辑回归的sigmoid链接函数计算概率,和你手动实现的公式逻辑完全一致,结果也就匹配了。

内容的提问来源于stack exchange,提问作者Rootsyl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 18:37:34