我有以下线性模型:
y ~ x1 + x2 + x3 + (x1*x2) + (x1*x3) + (x2*x3)
x1
和x2
是连续的,x3
是虚拟变量。
我似乎无法弄清楚如何并排绘制条件效果图,以便我可以检查以下内容:
x1
= 0 x2
| y
对x3
的条件影响(也是有条件的)
x1
= 1 x2
| y
对x3
的有条件影响
我已经浏览了一些R软件包的文档,这些软件包我过去用来制作效果图并“搜索”互联网,但似乎找不到这个特定问题的答案。我觉得我之前已经看过类似这样的东西,其中涉及'假'数据,但还没有找到它。
非常感谢任何帮助!
答案 0 :(得分:0)
我真的不知道用于自动完成此任务的软件包,但您可以通过几次按键来自行完成。注意,R很聪明,可以理解
model <- lm(y~x1*x2*x3,data) = to y ~ x1 + x2 + x3 + (x1*x2) + (x1*x3) + (x2*x3).
要了解相互作用,您需要绘制拟合。问题是你有三个独立的变量,所以你真的需要一个4d的情节,这很难画。有人说过,另一种方法是简单地在两个单独的图中绘制对x1和x2的拟合,每个图对应x3,你的虚拟变量。让我们在实践中看到它:
set.seed(1)
obs <- data.frame(x3=sample(c("A","B"),size=100,replace=TRUE),
x2=sample(1:10,size=100,replace=TRUE),
x1=sample(1:10,size=100,replace=TRUE),
y=rnorm(100))
model <- lm(y~x1*x2*x3,data=obs)
anova(update(model,.~.-x1:x2:x3),model)
fit.A <- data.frame(x3="A",x2=rep(1:10,10),x1=rep(1:10,each=10))
fit.A$pred <- predict(model,newdata=fit.A)
fit.B <- data.frame(x3="B",x2=rep(1:10,10),x1=rep(1:10,each=10))
fit.B$pred <- predict(model,newdata=fit.B)
par(mfrow=c(1,2),mai=c(0,0.1,0.2,0)+.02)
persp(x=1:10,y=1:10,z=matrix(fit.A$pred,nrow=10,ncol=10,byrow=TRUE),
xlab="x2",ylab="x1",zlab="fit",main="x3 = A",zlim=c(-.8,1.1))
persp(x=1:10,y=1:10,z=matrix(fit.B$pred,nrow=10,ncol=10,byrow=TRUE),
xlab="x1",ylab="x2",zlab="fit",main="x3 = B",zlim=c(-.8,1.1))
另一种方法是使用包wireframe(y ~ x1 * x2 | x3)
或lattice
包中的effects
函数。