如何从回归模型中绘制线性和二次预测变量,同时还要控制其他变量?

问题描述 投票:0回答:1

这里有一些数据和模型。它由一个线性和二次预测变量(a和a2)和一个线性控制变量(b)组成。

library(data.table)
library(ggplot2)

d <- as.data.table(cbind(a = rnorm(50), b = rnorm(50), y = rnorm(50)))
d$a2 <- (d$a)^2

m <- lm(y ~ a + a2 + b, data = d)

我想绘制线性和二次效应,同时也控制b。

如果我只想要a和a2的效果,我已经找到了如何做到这一点:

ggplot(d,
       aes(x = a, y = y)) +
  geom_point() +
  geom_smooth(method = "lm",
              formula = y ~ x,
              aes(color = "linear"),
              se = FALSE) +
  geom_smooth(method = "lm",
              formula = y ~ x + I(x^2),
              aes(color = "quadratic"),
              se = FALSE) +
  theme_bw()

但是在控制b的同时又如何绘制呢?

r plot regression polynomials quadratic
1个回答
0
投票

您可以添加另一个geom_line(),并传递另一个包含模型m中的预测值的数据框。

newdata <- tibble(a=seq(-3,3,0.1), a2=a^2, b=mean(d$b))
newdata$pr <- predict(m, newdata=newdata)

这里我使用的是b的平均值。

ggplot(d, aes(x = a, y = y)) +
  geom_point() +
...
  geom_line(data=newdata, aes(x=a, y=pr, col="Adjusted")) +
  theme_bw()

enter image description here

抱歉,忘记设置种子。

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