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

使用predict.glm对logistic回归模型预测得到线性结果的问题

问题原因与解决方案

这是predict.glm()的默认行为导致的:默认情况下,它返回的是链接函数尺度(logit尺度)的线性预测值,而非logistic模型最终输出的概率值。

具体解释

你的logistic模型拟合是正确的——从输出的系数可以看到,截距-3、斜率3完全匹配你生成数据时的sigmoid函数y=1/(1+exp(3-3x))(对应logit变换为log(y/(1-y)) = -3 + 3x)。但predict.glm()默认参数type="link",所以返回的是-3 + 3x这个线性结果,也就是你看到的直线。

解决方法

在调用predict()时,指定type="response"参数,就能得到logistic模型输出的概率值(和原数据y同尺度):

# 重新拟合模型(和之前一致)
L <- glm(y ~ x, family=quasibinomial(link='logit'), data=df)
# 指定type="response"获取概率尺度的预测值
y_fit <- predict.glm(L, newdata=df, type="response")

# 绘制拟合结果,和原logistic曲线对比
plot(df$x, df$y, main="正确的Logistic拟合曲线")
lines(df$x, y_fit, col="red", lwd=2)

运行这段代码后,你会得到和原数据完全重合的logistic曲线,符合预期。

补充说明

  • type="link":默认值,返回链接函数变换后的线性预测值(logit尺度,对应log(p/(1-p)))
  • type="response":返回响应变量尺度的预测值(概率p,即sigmoid(线性预测值))
  • type="terms":返回各预测项的贡献值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 07:31:00