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

在days==0处添加连接两条回归线截距的垂直线段

解决方案:在断点处绘制回归线差值线段

要在days==0位置添加仅连接两组回归线端点的垂直线段,需先计算两组回归线在该断点的预测值,再用geom_segment精准绘制,具体实现如下:

1. 拟合模型并计算断点预测值

分别对x==0(days<0的对照组)和x==1(days>=0的处理组)拟合线性模型,计算days=0时的预测y值:

# 拟合对照组回归模型并计算断点预测值
model_control <- lm(y ~ days, data = filter(df, x == "0" & days < 0))
y_control_0 <- predict(model_control, newdata = data.frame(days = 0))

# 拟合处理组回归模型并计算断点预测值
model_treatment <- lm(y ~ days, data = filter(df, x == "1" & days >= 0))
y_treatment_0 <- predict(model_treatment, newdata = data.frame(days = 0))

2. 修改绘图代码添加目标线段

替换原有geom_vline为geom_segment,用计算得到的两个预测值作为线段端点:

library(tidyverse)

df %>%
  ggplot(aes(x = days, y = y, color = x)) +
  geom_point(size = 2, alpha = 0.5, position = position_jitter(seed = 42)) +
  geom_smooth(data = filter(df, days < 0), method = "lm") +
  geom_smooth(data = filter(df, days >= 0), method = "lm") +
  # 绘制断点处的垂直线段
  geom_segment(
    x = 0, xend = 0,
    y = min(y_control_0, y_treatment_0),
    yend = max(y_control_0, y_treatment_0),
    color = "black", linetype = "solid", size = 1
  ) +
  labs(x = "距离截止日的天数", y = "结果") +
  guides(color = FALSE)

关键说明

  • 模型拟合严格对应各组的数据范围,确保预测值与图中回归线完全匹配
  • 用min()和max()自动适配两组预测值的大小关系,无需假设哪组值更小
  • 可通过调整color、linetype、size参数修改线段样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:45:22