R - 比较在多个 DV 上运行的简单回归模型



>假设你在 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)

最新更新