根据 AIC 值对模型列表进行排名

Rank a list of models based on AIC values

在跨数据框的一个响应变量和多个解释变量之间应用模型后,我想按 AIC 分数对每个模型进行排名。 我遇到了一个非常相似的问题,它正是我想做的。 Using lapply on a list of models,但它似乎对我不起作用,我不确定为什么。下面是一个使用 mtcars 数据集的例子:

lm_multiple <- lapply(mtcars[,-1], function(x) summary(lm(mtcars$mpg ~ x)))

来自上述 link 的认可答案建议:

sapply(X = lm_multiple, FUN = AIC)

但这对我不起作用,我收到这条警告消息。

Error in UseMethod("logLik") :
no applicable method for 'logLik' applied to an object of class "summary.lm"

这是原始问题的答案...

x <- seq(1:10)
y <- sin(x)^2
model.list <- list(model1 = lm(y ~ x), 
               model2 = lm(y ~ x + I(x^2) + I(x^3)))
sapply(X = model.list, FUN = AIC)

你应该像这样删除 summary

lm_multiple <- lapply(mtcars[,-1], function(x) lm(mtcars$mpg ~ x))
sapply(X = lm_multiple, FUN = AIC)