![](/img/trans.png)
[英]Extract all standard errors of coefficients from list of logistic regressions
[英]Extracting Coefficients, Std Errors, R2 etc from multiple regressions
我有以下回歸模型;
models <- lapply(1:25, function(x) lm(Y_df[,x] ~ X1))
它在Y_df
數據Y_df
25 列上運行 25 次回歸。
輸出之一可以顯示為;
models[15] # Gives me the coefficients for model 15
Call:
lm(formula = Y_df[, x] ~ X1)
Coefficients:
(Intercept) X1
0.1296812 1.0585835
我可以將其存儲在單獨的 df 中。 我遇到的問題是關於 Std. 誤差、R2、殘留物等。
我也想將這些存儲到一個單獨的數據幀中。
我可以運行單獨的回歸並提取摘要,就像正常的 R 回歸輸出一樣。
ls_1 <- summary(models[[1]])
ls_1
ls_1$sigma
但是,我希望直接從運行 25 次回歸的代碼行中獲取值。
此代碼有效
> (models[[15]]$coefficients)
(Intercept) X1
-0.3643446787 1.0789369642
然而; 這段代碼沒有。
> (models[[15]]$sigma)
NULL
我嘗試了各種不同的組合來嘗試提取這些結果,但沒有運氣。
以下完全符合我的要求。 我曾希望有一種方法可以用Std Error
或R2
等替換coef
一詞,但這不起作用。
models <- lapply(1:25, function(x) lm(Y_df[,x] ~ X1))
# extract just coefficients
coefficients <- sapply(Y_df, coef)
理想情況下,我想存儲上述模型的Std Error
如果模型被命名為 mod,您可以以與系數相同的方式獲得所有殘差:
mod$residuals
還有一些函數可以提取系數和殘差:
coef(mod)
resid(mod)
其他輸出,您可以通過summary
提取:
summary(mod)$coef[,"Std. Error"] # standard errors
summary(mod)$r.squared # r squared
summary(mod)$adj.r.squared # adjusted r squared
因此,您可以為每個模型創建一個包含這些結果的列表:
outputList <- lapply(models, function(x){
coefs <- coef(mod)
stdErr <- summary(mod)$coef[,"Std. Error"]
rsq <- summary(mod)$r.squared
rsq_adj <- summary(mod)$adj.r.squared
rsd <- resid(mod)
list(coefs = coefs,
stdErr = stdErr,
rsq = rsq,
rsq_adj = rsq_adj,
rsd = rsd)
})
例如,您可以通過outputList$mod1$rsq
。
或者您可以為每個創建單獨的數據框:
library(tidyverse)
# coefficients
coefs <- lapply(models, coef) %>%
do.call(rbind, .) %>%
as.data.frame() %>% # convert from matrix to dataframe
rownames_to_column("model") # add original model name as a column in the dataframe
# standard errors
stdErr <- lapply(models, function(x){
summary(mod)$coef[,"Std. Error"]
}) %>%
do.call(rbind, .) %>%
as.data.frame() %>%
rownames_to_column("model")
# r squareds
rsq <- sapply(models, function(x){
summary(mod)$r.squared
}) %>%
as.data.frame() %>%
rownames_to_column("model")
# adjusted r squareds
rsq_adj <- sapply(models, function(x){
summary(mod)$adj.r.squared
})%>%
as.data.frame() %>%
rownames_to_column("model")
# residuals
rsd <- lapply(models, resid) %>%
do.call(rbind, .) %>%
as.data.frame() %>%
rownames_to_column("model")
值得注意的是,如果您在 RStudio 中並將摘要分配給某些內容(即temp <- summary(mod)
),您可以鍵入對象的名稱,然后是“$”和所有其他對象的下拉列表可以從摘要中提取出現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.