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

使用R构建Logistic Regression Model得到直线而非S曲线求助

问题原因与解决办法

你的逻辑回归模型本身没问题,之所以画出直线而非S曲线,核心原因是自变量century_in_less_than_30_overs是0/1的二分变量:

  • 逻辑回归对二分自变量的预测结果是两个离散的概率值:x=0对应一个固定概率,x=1对应另一个固定概率
  • 用curve函数连接这两个点,自然会呈现直线,这是符合数据类型的正常表现

正确的可视化方案

方案1:贴合二分变量的可视化(推荐)

直接展示两个自变量取值对应的预测概率,用点+短线呈现更合理:

# 计算0和1对应的预测概率
pred_probs <- predict(model, newdata = data.frame(century_in_less_than_30_overs = c(0,1)), type = "response")

# 绘制原始散点图
plot(ENGR2280$century_in_less_than_30_overs, ENGR2280$`Win/Lose`,
     xlab = "Century in Less Than 30 Overs", ylab = "Win/Lose",
     main = "Logistic Regression Model", 
     pch = 19, col = "blue")
# 添加预测点和连线
points(c(0,1), pred_probs, col = "red", pch = 19, cex = 1.5)
lines(c(0,1), pred_probs, col = "red", lwd = 2)

方案2:获得S型曲线(改用连续自变量)

如果想看到典型的S型逻辑回归曲线,需要用连续型自变量。你可以用原始的over for century(完成百分的投球局数,连续变量)重新建模:

# 基于连续变量构建逻辑回归
model_continuous <- glm(`Win/Lose` ~ `over for century`, data = ENGR2280, family = binomial)

# 绘制散点图
plot(ENGR2280$`over for century`, ENGR2280$`Win/Lose`,
     xlab = "Overs for Century", ylab = "Win/Lose",
     main = "Logistic Regression with Continuous Predictor", 
     pch = 19, col = "blue")
# 添加S型拟合曲线
curve(predict(model_continuous, data.frame(`over for century` = x), type = "response"),
      add = TRUE, col = "red", lwd = 2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:57:40