从多元回归模型中提取 AIC
Extracting AIC from multiple regression models
我在 R 中有一些二元逻辑回归模型(超过 100 个)。我想以这种格式列出所有单独的回归模型及其 AIC、空偏差、残差等
Model AIC Null deviance
reg1 155.13 ..
reg2 154.
reg3
有没有可能有一个代码可以帮我实现这个,避免手动工作
谢谢
您可以使用 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
我在 R 中有一些二元逻辑回归模型(超过 100 个)。我想以这种格式列出所有单独的回归模型及其 AIC、空偏差、残差等
Model AIC Null deviance
reg1 155.13 ..
reg2 154.
reg3
有没有可能有一个代码可以帮我实现这个,避免手动工作
谢谢
您可以使用 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