본문 바로가기
R

[R] 통계 모형 깔끔하게 출력하기(broom)

by rubyda 2021. 9. 17.
728x90

지금까지 공부를 하면서는 다음과 같이 모델을 생성하고 평가하는데 summary() 함수를 많이 사용했다. 회귀분석을 예시로 생각해보자. 회귀분석 후에 우리는 예측 값, 잔차, r.squared등 살펴봐야 할 값들이 많다.

m<- lm(dist~speed, data = cars)
summary(m)

Call:
lm(formula = dist ~ speed, data = cars)

Residuals:
    Min      1Q  Median      3Q     Max 
-29.069  -9.525  -2.272   9.215  43.201 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -17.5791     6.7584  -2.601   0.0123 *  
speed         3.9324     0.4155   9.464 1.49e-12 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 15.38 on 48 degrees of freedom
Multiple R-squared:  0.6511,	Adjusted R-squared:  0.6438 
F-statistic: 89.57 on 1 and 48 DF,  p-value: 1.49e-12

 

그런데 여러 모델을 실험하게 될때는 조금 불편함이 있었다. 그러던 중 효자템을 발견했다. 그게 바로 broom이다!! broom은 summary()에서 출력된 값들을 데이터프레임 형태로 표현을 해준다.

 

 

https://broom.tidymodels.org/index.html

#install.packages('broom')
library('broom')

설치는 다음과 같이 해준다. 참고로 broom은 tidymodels에도 들어있기 때문에 install.packages('tidymodels')를 해도 된다!

 

broom 에서는 크게 tidy, glance, augment 이 사용된다.

 

tidy()


tidy는 모형 작업의 결과를 데이터프레임 형태로 보여준다. 다음과 같이 estimate, p.value등이 있다. 군집분석의 경우 군집별 정보도 출력해준다고 한다. 굿!

m %>% 
 tidy()
 
# A tibble: 2 × 5
  term        estimate std.error statistic  p.value
  <chr>          <dbl>     <dbl>     <dbl>    <dbl>
1 (Intercept)   -17.6      6.76      -2.60 1.23e- 2
2 speed           3.93     0.416      9.46 1.49e-12

 

glance()


glance는 모형의 성능을 데이터프레임 형태로 보여준다.  r.squared, adj.r.squared, AIC등이 있다.

m %>% 
 glance()
 
# A tibble: 1 × 12
  r.squared adj.r.squared sigma statistic  p.value    df logLik   AIC   BIC deviance
      <dbl>         <dbl> <dbl>     <dbl>    <dbl> <dbl>  <dbl> <dbl> <dbl>    <dbl>
1     0.651         0.644  15.4      89.6 1.49e-12     1  -207.  419.  425.   11354.
# … with 2 more variables: df.residual <int>, nobs <int>

 

augment()


augment는 예측값, 잔차, 등을 알려주는데 원래 데이터프레임에 추가해서 출력을 해준다

m %>%
 augment()

# A tibble: 50 × 8
    dist speed .fitted .resid   .hat .sigma  .cooksd .std.resid
   <dbl> <dbl>   <dbl>  <dbl>  <dbl>  <dbl>    <dbl>      <dbl>
 1     2     4   -1.85   3.85 0.115    15.5 0.00459       0.266
 2    10     4   -1.85  11.8  0.115    15.4 0.0435        0.819
 3     4     7    9.95  -5.95 0.0715   15.5 0.00620      -0.401
 4    22     7    9.95  12.1  0.0715   15.4 0.0255        0.813
 5    16     8   13.9    2.12 0.0600   15.5 0.000645      0.142
 6    10     9   17.8   -7.81 0.0499   15.5 0.00713      -0.521
 7    18    10   21.7   -3.74 0.0413   15.5 0.00133      -0.249
 8    26    10   21.7    4.26 0.0413   15.5 0.00172       0.283
 9    34    10   21.7   12.3  0.0413   15.4 0.0143        0.814
10    17    11   25.7   -8.68 0.0341   15.5 0.00582      -0.574
# … with 40 more rows