在同一个 ggplot2 上绘制 2 个不同的模型
Plot 2 different models on same ggplot2
我是运行同一组不同因变量的多变量模型。我想根据控制 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")
鉴于帧不同,是否知道如何在此添加第二个图?
感谢您提供的所有帮助。
只需添加带有 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 的预测值,然后将它们绘制在同一个 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")
鉴于帧不同,是否知道如何在此添加第二个图?
感谢您提供的所有帮助。
只需添加带有 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")
结果: