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

使用ggplot绘制二元变量逻辑回归曲线异常问题求助

问题排查与解决方案

核心问题原因

  • 自变量为二分类因子:你的ADHD_Control_Group是仅含0、1的二分类因子,逻辑回归针对这类自变量,拟合的是每个类别对应的HrsSleep_Use=1的概率值——两个离散的概率点用线连接自然是直线,不可能出现“曲线状”回归线。曲线逻辑回归要求自变量是连续变量(比如年龄、睡眠时长这类多取值变量)。
  • 抖动点分布符合预期:因为x和y都是二分类变量,geom_jitter只能在x轴的0、1两个位置,y轴的0、1两个位置附近抖动,这是二分类变量可视化的正常表现。

针对性解决方案

方案1:用条形图展示各组概率(更适配二分类自变量的逻辑回归结果)

先计算每组睡眠不足的概率及置信区间,再可视化:

library(dplyr)
library(ggplot2)

# 计算分组概率与标准误
prob_summary <- final_sleep_data %>%
  group_by(ADHD_Control_Group) %>%
  summarise(
    sleep_prob = mean(HrsSleep_Use),
    se = sqrt(sleep_prob * (1 - sleep_prob) / n())
  )

# 绘制条形图
ggplot(prob_summary, aes(x = as.factor(ADHD_Control_Group), y = sleep_prob)) +
  geom_col(width = 0.5, fill = "#2E86AB") +
  geom_errorbar(aes(ymin = sleep_prob - 1.96*se, ymax = sleep_prob + 1.96*se), 
                width = 0.2, color = "#1A374D") +
  scale_x_discrete(labels = c("ADHD患者", "对照组")) +
  labs(x = "分组", y = "睡眠不足的概率") +
  theme_minimal()

方案2:优化现有抖动点+回归直线(保留原可视化框架)

把x转成数值型,调整抖动参数避免点重叠,同时明确轴标签:

ggplot(final_sleep_data, aes(x = as.numeric(ADHD_Control_Group), y = HrsSleep_Use)) +
  geom_jitter(width = 0.1, height = 0.05, alpha = 0.5) + # 缩小抖动范围+降低透明度
  geom_smooth(method = "glm", method.args = list(family = "binomial"), se = FALSE, color = "#FF6B6B") +
  scale_x_continuous(breaks = c(0, 1), labels = c("ADHD患者", "对照组")) +
  labs(x = "分组", y = "睡眠不足(1=是,0=否)") +
  theme_classic()

额外提醒

如果你的原始数据中ADHD_Control_Group原本是连续变量(比如ADHD症状评分),那错误将其转换为二分类因子是问题根源——恢复成连续变量后,再运行原代码就能得到曲线状的逻辑回归线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:10:17