Я хотел бы добавить линию регрессии от линейной модели к графику в 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")
Если я добавлю 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)
но, к сожалению, линия регрессии неверна ...