如何从回归模型中绘制线性和二次预测变量,同时还要控制其他变量?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从回归模型中绘制线性和二次预测变量,同时还要控制其他变量?相关的知识,希望对你有一定的参考价值。
这里有一些数据和模型。它由一个线性和二次预测变量(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的同时又如何绘制呢?
答案
您可以添加另一个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()
抱歉,忘记设置种子。
以上是关于如何从回归模型中绘制线性和二次预测变量,同时还要控制其他变量?的主要内容,如果未能解决你的问题,请参考以下文章