>假设你在 R 中有以下代码:
model1 <- lm(cbind(DV1, DV2, DV3) ~ IV1 + IV2, data)
此代码应该在DV1
上执行IV1 + IV2
的单独回归,然后在DV2
上执行IV1 + IV2
回归,最后在DV3
上执行IV1 + IV2
的回归。
假设我们还有一个模型,其中包括IV1和IV2之间的交互:
model2 <- lm(cbind(DV1, DV2, DV3) ~ IV1 * IV2, data)
为了测试是否存在交互,我通常会使用:
anova(model1, model2)
但是,这只返回一个 p 值,而我期望三个 p 值 - 一个用于DV1
,一个用于DV2
,一个用于DV3
。我怎样才能实现我正在尝试的目标?
如果单独完成,我们可以使用Map
model1n <- lapply(c('mpg', 'disp'), function(x)
lm(reformulate(response = x, 'cyl + am'), data = mtcars))
model2n <- lapply(c('mpg', 'disp'), function(x)
lm(reformulate(response = x, 'cyl * am'), data = mtcars))
Map(anova, model1n, model2n)