【问题标题】:Rank a list of models based on AIC values根据 AIC 值对模型列表进行排名
【发布时间】: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/… 谢谢,其实我刚放完,这里可能更清楚。

标签: r model-comparison


【解决方案1】:

你应该像这样删除summary

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

【讨论】:

    猜你喜欢
    • 2013-04-17
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2020-06-02
    相关资源
    最近更新 更多