添加带有geom_smooth的回归线以在R中使用离散x轴进行绘图

问题描述 投票:2回答:2

我想将线性模型的回归线添加到R中的图。

我创建了以下示例数据集:

# Load libraries
library(tidyverse)
library(ggbeeswarm)

# Set seed
set.seed(123)

# Create dataset
ID <- sprintf("ID-%s",seq(1:30))
baseline <- rnorm(30, mean = 50, sd = 3)

df <- data.frame(ID, baseline) %>%
  mutate(`1` = baseline - rnorm(1, mean = 5, sd = 4), 
         `2` = `1` - rnorm(1, mean = 7, sd = 5), 
         `3` = `2` - rnorm(1, mean = 10, sd = 9)) %>% 
  pivot_longer(-ID) %>% 
  rename(time = name) %>% 
  mutate(time = as.factor(time))

这将创建以下情节:

# Plot
ggplot(data = df, aes(x=time, y = value)) + 
  geom_quasirandom() +
  theme_classic() + 
  scale_x_discrete(limits = c("baseline", "1", "2", "3") ) +
  labs(x = "Time", y = "Value")

enter image description here

如果将geom_smooth(method = 'lm')添加到绘图中,则什么也不会发生,我认为这与time是一个因素有关。但是,添加geom_smooth(method = 'lm', formula = y~as.numeric(x)也不起作用。

如何在该图的顶部绘制回归线?

EDIT1.0:我已经能够使用geom_smooth来绘制带有geom_smooth(aes(x = as.numeric(time), y = value), method = "lm", formula = y~x)的回归线,但是可悲的是,回归线是不正确的...

r ggplot2 regression linear-regression
2个回答
1
投票

如何使用有序因子来启用aes(as.numeric(time), value)的叠加?


0
投票

尝试一下。就我所知,问题更普遍,例如ggplot2不知道如何为离散的x轴画线。在您的情况下,添加回归线的一种选择是手动计算回归线,然后通过geom_line将其添加到绘图中,然后将ID映射到group外观上。红线是value ~ time的回归线,而在蓝线的情况下,我将时间重新编码为数字,请将“基准”设置为0。

© www.soinside.com 2019 - 2024. All rights reserved.