본문 바로가기
R/Tables

[r] gtsummary 다중회귀분석 테이블 만들기

by R파고 Py파고 2022. 4. 28.

 

knitr::opts_chunk$set(echo = TRUE)
require(ggplot2)
require(gtsummary)
require(gt)

이전 포스트에서 gtsummary 를 통해 회귀분석 테이블을 만들어봤습니다. 그 때의 테이블은 로지스틱 회귀분석 테이블이었습니다.

이번에는 종속변수가 연속형 변수인 다중회귀분석 테이블을 만들어보도록 하겠습니다.

0. 패키지 불러오기

require(ggplot2)
require(gtsummary)

1. 모델만들기

ggplot2 패키지에 내장되어 있는 diamonds 데이터셋을 활용하여 다중회귀분석을 실시해보도록 하겠습니다.

diamonds %>% head()

이제 다중회귀분석 모델을 만들어 줍니다.

model <- lm(price ~ carat + depth+ table + x+y+z,
            data=diamonds)

2. 회귀분석 테이블 만들기

이제 gtsummarytbl_regression 기능을 통해 회귀분석 테이블을 만들어봅시다.

tbl_regression(
  model,
) %>% as_flex_table()

간단한 코드만으로 벌써 회귀분석 테이블이 완성되었습니다.

그런데 테이블이 뭔가 허전합니다. standard error 도 안보이고
설명력(R²)도 보이지 않습니다.

지금부터 gtsummary 내의 기능들을 통해 테이블을 하나씩 완성시켜보겠습니다.

우선 standard error 열을 추가시켜볼까요?

standard error 행은 기본적으로 숨겨져 있습니다. 따라서 숨김을 해제해야(unhide) 합니다.

tbl_regression(
  model
) %>% 
  modify_column_unhide(columns = std.error) %>% 
  as_kable()

std.error 열이 테이블에 나타난 것을 확인할 수 있습니다.

significance 추가하기

테이블에 p-value 에 따라 * 표시 (asterisk) 를 추가하고 싶을 수도 있습니다.

add_significance_stars() 기능을 통해 테이블에 *표시를 추가할 수 있습니다.

add_significance_stars() 을 사용할 시, p-valueCI 열이 사라집니다. 함께 나타내고 싶은 경우 추가해주어야 합니다.

tbl_regression(
  model
) %>% 
  modify_column_unhide(columns = std.error) %>% 
  add_significance_stars(hide_ci = F,
                         hide_p = F)

설명력 및 N수 추가하기

R에서 회귀분석 모델을 summary 하면 설명력과 N수, 그리고 F-statistic 가 함께 나옵니다.

model %>% summary()

회귀분석 테이블에도 위의 결과값들들을 추가해보도록 하겠습니다.

tbl_regression(
  model
) %>% 
  modify_column_unhide(columns = std.error) %>% 
  add_significance_stars(hide_ci = F,
                         hide_p = F) %>% 
  add_glance_table(include = c(nobs, r.squared,adj.r.squared,statistic))

만약 테이블의 행이 아닌 테이블의 주석 (source note) 로 결과값들을 추가하고 싶다면 add_glance_source_note() 를 사용하시면 됩니다.

tbl_regression(
  model
) %>% 
  modify_column_unhide(columns = std.error) %>% 
  add_significance_stars(hide_ci = F,
                         hide_p = F) %>% 
  add_glance_source_note(include = c(nobs, r.squared,adj.r.squared,statistic))

테이블 라벨 변경하기

어느 정도 회귀분석 테이블이 만들어졌습니다. 이제 테이블의 column 명과 변수의 이름들을 바꿔보도록 하겠습니다.
우선 변수이름은 label() 인자를 통해서 변경할 수 있습니다.

tbl_regression(
  model,
  label = list(
    carat ~ '캐럿',
    depth ~ '깊이',
    table ~ '테이블'
  )
) %>% 
  modify_column_unhide(columns = std.error) %>% 
  add_significance_stars(hide_ci = F,
                         hide_p = F) %>% 
  add_glance_source_note(include = c(nobs, r.squared,adj.r.squared,statistic))

테이블의 carat, depth, table을 각각 캐럿, 깊이, 테이블로 변경하였습니다.

 

다음으로 테이블의 헤더 이름은 modify_header()으로 바꿀 수 있습니다. 테이블의 헤더를 바꾸기 전에 원래 어떤 이름을 갖고 있는지 살펴봅시다.

tbl_regression(
  model,
  label = list(
    carat ~ '캐럿',
    depth ~ '깊이',
    table ~ '테이블'
  )
) %>% 
  modify_column_unhide(columns = std.error) %>% 
  add_significance_stars(hide_ci = F,
                         hide_p = F) %>% 
  add_glance_source_note(include = c(nobs, r.squared,adj.r.squared,statistic)) %>% 
  show_header_names()

header 의 이름은 label, estimate, std.error, ci, p.value 네요.
헤더명을 바꿔보도록 하겠습니다.

tbl_regression(
  model,
  label = list(
    carat ~ '캐럿',
    depth ~ '깊이',
    table ~ '테이블'
  )
) %>% 
  modify_column_unhide(columns = std.error) %>% 
  add_significance_stars(hide_ci = F,
                         hide_p = F) %>% 
  add_glance_source_note(include = c(nobs, r.squared,adj.r.squared,statistic)) %>% 
modify_header(label = "**Variable**", 
                estimate = "**β**", 
                ci = '**CI**',
                p.value = "**P value**")

테이블 헤더의 이름이 변경되었습니다.

댓글