【问题标题】:Extracting AIC from multiple regression models从多个回归模型中提取 AIC
【发布时间】:2019-05-29 05:43:45
【问题描述】:

我在 R 中有一些二元逻辑回归模型(超过 100 个)。我想以这种格式列出所有单独的回归模型及其 AIC、空偏差、残余偏差等

  Model      AIC        Null deviance
     reg1      155.13        ..
     reg2      154.     
     reg3      

是否有可能为我提供一个代码来避免手动工作

谢谢

【问题讨论】:

标签: r model-comparison


【解决方案1】:

您可以使用sapply 函数从模型列表中提取模型的参数。然后将这些参数聚合到一个数据框中。

请参阅下面的代码以及逻辑回归模型的模拟列表。

set.seed(123)

# simulation
# generates list of 100 models

xs <-  replicate(
  n = 100, 
  expr = {
    x <- rnorm(1000)          
    z <- 1 + 2 * x        
    pr <- 1 / (1 + exp(-z))         
    y <- rbinom(1000, 1, pr)      

    #now feed it to glm for logistic regression
    model <- glm(y ~ x, family = "binomial")
    model
  },
  simplify = FALSE
)

# list of models created
# now let's create a data frame
# extracting parameter from the models
summary(xs[[1]])
df <- data.frame(
  model = seq_along(xs),
  aic = sapply(xs, AIC),
  null_deviance = sapply(xs, function(x) x$null.deviance),
  df_residual = sapply(xs, function(x) x$df.residual)
)
head(df)

输出:

  model      aic null_deviance df_residual
1     1 867.0781      1259.696         998
2     2 853.3573      1311.370         998
3     3 904.3534      1276.693         998
4     4 922.6175      1296.127         998
5     5 884.0100      1271.172         998
6     6 878.9568      1289.871         998

【讨论】:

    猜你喜欢
    • 2020-04-09
    • 2020-07-19
    • 2019-12-26
    • 2021-03-10
    • 2017-12-15
    • 2017-09-13
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多