如何调查三向交互?

机器算法验证 r 相互作用
2022-03-26 09:50:47

我正在使用的数据集中有一个重要的三向交互。

交互作用涉及分类变量和定量变量。

我一直指向简单的斜坡和这个网站,但我发现缺乏解释。我只有统计学的基本背景,用谷歌搜索其他例子并不是很有帮助。

任何关于如何开始理解这种交互的见解都将受到欢迎,尤其是使用 R 而不是 SPSS。提前非常感谢您,来自一个突然发现自己头晕目眩的低年级大学生!

3个回答

我担心这将是一个连续的连续分类交互......好吧,这里开始 - 首先,我们创建一些玩具数据(是一个二进制预测器,并且是连续的,是因变量):××foobarbazdv

set.seed(1)
obs <- data.frame(foo=sample(c("A","B"),size=100,replace=TRUE),
  bar=sample(1:10,size=100,replace=TRUE),
  baz=sample(1:10,size=100,replace=TRUE),
  dv=rnorm(100))

然后我们拟合模型并查看三向交互:

model <- lm(dv~foo*bar*baz,data=obs)
anova(update(model,.~.-foo:bar:baz),model)

现在,为了理解相互作用,我们绘制拟合图。问题是我们有三个自变量,所以我们真的需要一个 4d 图,这很难做到;-)。在我们的例子中,我们可以简单地在两个单独的图中绘制拟合barbaz每个图对应foo. 首先计算拟合:

fit.A <- data.frame(foo="A",bar=rep(1:10,10),baz=rep(1:10,each=10))
fit.A$pred <- predict(model,newdata=fit.A)
fit.B <- data.frame(foo="B",bar=rep(1:10,10),baz=rep(1:10,each=10))
fit.B$pred <- predict(model,newdata=fit.B)

接下来,并排绘制两个 3d 图,注意对轴使用相同的缩放比例以便能够比较图:z

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="bar",ylab="baz",zlab="fit",main="foo = 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="bar",ylab="baz",zlab="fit",main="foo = B",zlim=c(-.8,1.1))

结果:

三向交互

我们看到拟合的方式如何取决于(两者!)barbaz取决于 的值foo,我们可以开始描述和解释拟合关系。是的,这很难消化。三向交互总是......统计很容易,解释很难......

看看?persp如何美化图表。浏览R Graph Gallery也可能是鼓舞人心的。

+1 对以上关于图形交互的评论。

考虑三向交互的初始方法是,A 和 B 之间交互中包含的结果模式取决于 C 的水平/值。以下是在线性回归类型的框架中构建的,但在概念上类似于逻辑回归。

当然,这假设您对考虑双向交互感到满意 :-)

假设有三个预测变量,A(连续)、B(分类)和 C(分类)。

双向 A*B 交互表明 A 的斜率(与结果相关)取决于个人所属的 B 水平。

在这种情况下,三向 A*B*C 交互将表明 A*B 交互(之前讨论过根据 B 组对结果的 A 的微分斜率)取决于一个人所属的 C 组...

如果交互中有两个连续/有序的预测因子,事情就会复杂得多(通常太复杂而无法概念化:我很想听听其他人对此的看法。)

通常,它有助于绘制关系并查看当您更改其中一个变量时情况如何变化。R 中有助于绘制这些图的一些工具是TeachingDemos 包中Predict.PlotTkPredict函数。