我有以下线性模型:y ~ x1 + x2 + x3 + (x1*x2) + (x1*x3) + (x2*x3)
x1和x2是连续的,x3是一个虚拟变量。
我似乎不知道如何并排绘制条件效果图,以便能够检查以下内容:
x1=0时,x2对y的条件效应x1=1时,x2对y的条件效应我查阅了大量的R软件包的文档,我在过去使用这些软件包来制作效果、情节和“浏览”互联网,但似乎找不到这个问题的答案。我觉得我以前见过这样的东西,包括“假的”数据,但再也找不到了。
任何帮助都是非常感谢的!
发布于 2015-08-02 21:32:52
我真的不知道自动化这个任务的包,但是你可以用几个关键的笔触来完成它。注意,R很聪明,可以理解
model <- lm(y~x1*x2*x3,data) = to y ~ x1 + x2 + x3 + (x1*x2) + (x1*x3) + (x2*x3).为了理解这种相互作用,你需要画出适合的情节。问题是,你有三个自变量,所以你真的需要一个4d图,这是相当困难的绘制。有人说过,另一种方法是简单地将针对x1和x2的fits绘制成两个单独的图,一个对应于您的虚拟变量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))

另一种方法是使用来自包lattice或effects包的effects函数。
https://stackoverflow.com/questions/31776349
复制相似问题