如何在不使用库的情况下将模型摘要的每一列存储在R中的列表中

问题描述

enter image description here

请参见上图以查看摘要

我希望摘要的每个元素都转换为一个列表。这是摘要数据,我想创建单独的列表,例如

predictors = ['Age','WorkClassLocal-gov',...,HoursWork]
z value = [14.762,-6.719,16.714]
pr>|z| = [2e-16,6.46e-10,2e-16]
...

摘要如下

Call: glm(formula = Salary ~ .,family = binomial,data = train) 

Coefficients: 
                     Estimate Std. Error z value Pr(>|z|)
(Intercept)        -7.614e+00  4.525e-01 -16.826  < 2e-16 *** 
Age                 2.626e-02  1.779e-03  14.762  < 2e-16 *** 
WorkClassLocal-gov -7.214e-01  1.168e-01  -6.179 6.46e-10 *** 
HoursWork           2.965e-02  1.774e-03  16.714  < 2e-16 ***

我无法执行此操作。请帮我做到这一点。

解决方法

我们没有您的数据,但是我们可以展示使用内置mtcars数据集如何完成此工作的原理。

首先,我们创建一个模型:

model <- glm(mpg ~ .,data = mtcars)

接下来,我们存储summary函数的结果,该函数实际上会生成类summary.glm的类似列表的对象。

model_summary <- summary(model)

系数表存储为该对象内部的矩阵,以及称为coefficients的成员:

model_summary$coefficients
#>                Estimate  Std. Error    t value   Pr(>|t|)
#> (Intercept) 12.30337416 18.71788443  0.6573058 0.51812440
#> cyl         -0.11144048  1.04502336 -0.1066392 0.91608738
#> disp         0.01333524  0.01785750  0.7467585 0.46348865
#> hp          -0.02148212  0.02176858 -0.9868407 0.33495531
#> drat         0.78711097  1.63537307  0.4813036 0.63527790
#> wt          -3.71530393  1.89441430 -1.9611887 0.06325215
#> qsec         0.82104075  0.73084480  1.1234133 0.27394127
#> vs           0.31776281  2.10450861  0.1509915 0.88142347
#> am           2.52022689  2.05665055  1.2254035 0.23398971
#> gear         0.65541302  1.49325996  0.4389142 0.66520643
#> carb        -0.19941925  0.82875250 -0.2406258 0.81217871

我们可以轻松地将其转换为数据框,并将其行名称转换为自己的列:

coefs <- as.data.frame(model_summary$coefficients)

coefs$variable <- rownames(coefs)

尽管数据框实际上是变量列表(对于大多数应用程序,将结果保留为数据框格式会更有用),但是如果您要将其转换为列表,可以简单地做到:

as.list(coefs)
#> $Estimate
#>  [1] 12.30337416 -0.11144048  0.01333524 -0.02148212  0.78711097 -3.71530393
#>  [7]  0.82104075  0.31776281  2.52022689  0.65541302 -0.19941925
#> 
#> $`Std. Error`
#>  [1] 18.71788443  1.04502336  0.01785750  0.02176858  1.63537307  1.89441430
#>  [7]  0.73084480  2.10450861  2.05665055  1.49325996  0.82875250
#> 
#> $`t value`
#>  [1]  0.6573058 -0.1066392  0.7467585 -0.9868407  0.4813036 -1.9611887
#>  [7]  1.1234133  0.1509915  1.2254035  0.4389142 -0.2406258
#> 
#> $`Pr(>|t|)`
#>  [1] 0.51812440 0.91608738 0.46348865 0.33495531 0.63527790 0.06325215
#>  [7] 0.27394127 0.88142347 0.23398971 0.66520643 0.81217871
#> 
#> $variable
#>  [1] "(Intercept)" "cyl"         "disp"        "hp"          "drat"       
#>  [6] "wt"          "qsec"        "vs"          "am"          "gear"       
#> [11] "carb"