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

R-比较在几个DV上运行的简单回归模型,r,regression,linear-regression,R,Regression,Linear Regression,假设您在R中有以下代码: model1 <- 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(r

假设您在R中有以下代码:

model1 <- 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)

model1n我想你需要
Map(方差分析,model1,model2)
如果你这样做,
Map
会起作用的
model1n@akrun谢谢,这很有效!我建议加上它作为答案,这样我就可以接受了
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)