微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R中的列表生成多个回归模型

如何解决R中的列表生成多个回归模型

我在R中执行了多个回归结果,并将其保存为a list of ncol(data),以显示其中一个回归结果,并且summary是我使用此命令summary(lm_results[[1]])的结果,正在关注

Call:
lm(formula = fml,data = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.1615 -0.9830 -0.3605  0.3508  4.5893 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.04464    0.91212   0.049 0.961506    
X2           0.34424    0.08067   4.267 0.000464 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.975 on 18 degrees of freedom
Multiple R-squared:  0.5029,Adjusted R-squared:  0.4753 
F-statistic: 18.21 on 1 and 18 DF,p-value: 0.0004637

我想在一个命令中打印所有回归结果,例如 for(i in 1:ncol(data)) Regress[i] <- summary(lm_results[[i]])

,并且还能够仅提取所有回归模型的所有R平方或Adj R平方值(并将其格式化为一个数据帧)。我如何在R中做到这一点?

解决方法

您可以尝试以下任何一种方法(我已经使用了一些模拟数据):

#Option 1
lapply(listofmodels,function(x)summary(x)[8])

输出:

$model1
$model1$r.squared
[1] 0.01382265


$model2
$model2$r.squared
[1] 0.9271098

或者:

#Option 2
lapply(listofmodels,function(x)summary(x)[['r.squared']])

输出:

$model1
[1] 0.01382265

$model2
[1] 0.9271098

使用了一些数据:

#Data
listofmodels <- list(model1=lm(iris$Sepal.Length~iris$Sepal.Width),model2=lm(iris$Petal.Width~iris$Petal.Length))
,

我们可以使用tidy glancebroom模型输出并提取相关组件

library(broom)
library(purrr)
map_dfr(listofmodels,tidy)

仅提取“ r.squared”

map_dfr(listofmodels,~ glance(.x) %>%
                            select(r.squared))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。