R 在同一ggplot2上绘制2个不同的模型

R 在同一ggplot2上绘制2个不同的模型,r,plot,ggplot2,models,R,Plot,Ggplot2,Models,我正在为不同的因变量运行同一组多元模型。我想根据控制z的模型生成不同y与x的预测值,然后在相同的ggplot2中绘制它们,以便每个模型获得不同的颜色。以下代码为x和y1之间的关系以及y2控制z的不确定性生成两个模型,然后仅绘制其中一个: require(ggplot2) set.seed(123) dat <- data.frame(x = rnorm(100), z = rnorm(100), y1 = rnorm(100), y2 = rnorm(100)) dat1 <- da

我正在为不同的因变量运行同一组多元模型。我想根据控制z的模型生成不同y与x的预测值,然后在相同的ggplot2中绘制它们,以便每个模型获得不同的颜色。以下代码为x和y1之间的关系以及y2控制z的不确定性生成两个模型,然后仅绘制其中一个:

require(ggplot2)
set.seed(123)
dat <- data.frame(x = rnorm(100), z = rnorm(100), y1 = rnorm(100), y2 = rnorm(100))
dat1 <- dat[,c(1,2,3)]
dat2 <- dat[,c(1,2,4)]

mod1 <- lm(y1 ~ x + z, data = dat1)
mod2 <- lm(y2 ~ x + z, data = dat2)

dat1$mod1 <- predict(mod1, newdata =dat1)  
err <- predict(mod1, newdata =dat1, se = TRUE)   
dat1$ucl <- err$fit + 1.96 * err$se.fit
dat1$lcl <- err$fit - 1.96 * err$se.fit   

dat2$mod2 <- predict(mod2, newdata =dat2)  
err <- predict(mod2, newdata =dat2, se = TRUE)   
dat2$ucl <- err$fit + 1.96 * err$se.fit
dat2$lcl <- err$fit - 1.96 * err$se.fit   

ggplot(dat1) + 
        geom_point(aes(x = x, y = mod1), size = .8, colour = "black") +
        geom_smooth(data = dat1, aes(x= x, y = mod1, ymin = lcl, ymax = ucl), size = 1, colour = "darkblue", se = TRUE, stat = "smooth", method = "lm")
require(ggplot2)
种子集(123)

dat只需添加带有
data=dat2
y=mod2
的新层即可。 我已经把点和线弄成红色了

ggplot(dat1) + 
  geom_point(aes(x = x, y = mod1), size = .8, colour = "black") +
  geom_smooth(data = dat1, aes(x= x, y = mod1, ymin = lcl, ymax = ucl), size = 1, colour = "darkblue", se = TRUE, stat = "smooth", method = "lm") +
  geom_point(data=dat2, aes(x = x, y = mod2), size = .8, colour = "red") +
  geom_smooth(data = dat2, aes(x= x, y = mod2, ymin = lcl, ymax = ucl), size = 1, 
              colour = "red", se = TRUE, stat = "smooth", method = "lm")
结果:

你能用语言描述一下你的目标吗。是否要基于控制
z
的模型,绘制
y
x
的预测值?对于
y1
y2
有单独的颜色?是的,完全正确。我也会在问题中添加这段文字。关于如何做到这一点,有很多选项,但根据您目前处理问题的方式,您可能只需要根据不同的数据集添加额外的层。查看并开始。但这种方式不包括图例