根据 AIC 值对模型列表进行排名
Posted
技术标签:
【中文标题】根据 AIC 值对模型列表进行排名【英文标题】:Rank a list of models based on AIC values 【发布时间】:2015-09-24 17:54:35 【问题描述】:在跨数据框的一个响应变量和多个解释变量之间应用模型后,我想按 AIC 分数对每个模型进行排名。 我遇到了一个非常相似的问题,它正是我想做的。 Using lapply on a list of models,但它似乎对我不起作用,我不知道为什么。以下是使用 mtcars 数据集的示例:
lm_multiple <- lapply(mtcars[,-1], function(x) summary(lm(mtcars$mpg ~ x)))
建议的上述链接中的批准答案:
sapply(X = lm_multiple, FUN = AIC)
但这对我不起作用,我收到此警告消息。
使用方法中的错误(“logLik”): 没有适用于“summary.lm”类对象的“logLik”方法
这是原始问题的答案...
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)
【问题讨论】:
这个练习是徒劳的。 AIC 对于比较适合同一数据集的嵌套模型很有用。您的模型没有嵌套。 @Roland 感谢您的评论,有什么替代方案? p 值?在我的数据集中,我有大量 (>100) 解释变量 我不知道你为什么要这样做。您可能应该在 stats.stackexchange.com 上询问。 stats.stackexchange.com/questions/160294/… 谢谢,其实我刚放完,这里可能更清楚。 【参考方案1】:你应该像这样删除summary
lm_multiple <- lapply(mtcars[,-1], function(x) lm(mtcars$mpg ~ x))
sapply(X = lm_multiple, FUN = AIC)
【讨论】:
以上是关于根据 AIC 值对模型列表进行排名的主要内容,如果未能解决你的问题,请参考以下文章