所以我试图比较不同的线性模型,以确定一个是否优于另一个.但是我有几个模型,所以我想创建一个模型列表然后调用它们.那可能吗?
Models <- list(lm(y~a),lm(y~b),lm(y~c)
Models2 <- list(lm(y~a+b),lm(y~a+c),lm(y~b+c))
anova(Models2[1],Models[1])
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
如果您有两个模型列表,并且想要比较每对模型,那么您需要Map:
models1 <- list(lm(y ~ a), lm(y ~ b), lm(y ~ c)
models2 <- list(lm(y ~ a + b), lm(y ~ a + c), lm(y ~ b + c))
Map(anova, models1, models2)
Run Code Online (Sandbox Code Playgroud)
这基本上等同于以下for循环:
out <- vector("list", length(models1))
for (i in seq_along(out) {
out[[i]] <- anova(models1[[i]], models2[[i]])
}
Run Code Online (Sandbox Code Playgroud)
Map是一个功能的例子,您可以在https://github.com/hadley/devtools/wiki/Functionals找到更多相关信息.