我想将线性模型的回归线添加到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)
的回归线,但是可悲的是,回归线是不正确的...
如何使用有序因子来启用aes(as.numeric(time), value)
的叠加?
尝试一下。就我所知,问题更普遍,例如ggplot2
不知道如何为离散的x轴画线。在您的情况下,添加回归线的一种选择是手动计算回归线,然后通过geom_line
将其添加到绘图中,然后将ID
映射到group
外观上。红线是value ~ time
的回归线,而在蓝线的情况下,我将时间重新编码为数字,请将“基准”设置为0。