多个条件效应图

时间:2015-08-02 20:37:55

标签: r

我有以下线性模型: y ~ x1 + x2 + x3 + (x1*x2) + (x1*x3) + (x2*x3)

x1x2是连续的,x3是虚拟变量。

我似乎无法弄清楚如何并排绘制条件效果图,以便我可以检查以下内容:

  • x1 = 0
  • 时,x2 | yx3的条件影响(也是有条件的)
  • x1 = 1
  • 时,x2 | yx3的有条件影响

我已经浏览了一些R软件包的文档,这些软件包我过去用来制作效果图并“搜索”互联网,但似乎找不到这个特定问题的答案。我觉得我之前已经看过类似这样的东西,其中涉及'假'数据,但还没有找到它。

非常感谢任何帮助!

1 个答案:

答案 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))

enter image description here

另一种方法是使用包wireframe(y ~ x1 * x2 | x3)lattice包中的effects函数。