根据 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)
在跨数据框的一个响应变量和多个解释变量之间应用模型后,我想按 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)