統計学と疫学と時々、助教生活

疫学を専門とする助教の研究に関する備忘録的ページ。

【R】gtsummaryで回帰分析の表を結合する(tbl_stack編)

前回の投稿に引き続き、gtsummaryパッケージで作成した回帰分析の表を行方向に結合する関数(tbl_stack)について書き残しておきます。

1. 前準備

今回も、palmerpenguinsパッケージにあるpenguinsというデータセットを使用します。
allisonhorst.github.io

install.packages("palmerpenguins") #パッケージのインストール
library(palmerpenguins); library(tidyverse); library(gtsummary)  #必要なパッケージの読み込み
data(penguins) #データの呼び出し

2. 異なるグループ(AdelieおよびGentoo)でのモデルの実施 + tbl_regressionによる書き出し

ここでは、2つの異なる集団に絞って回帰モデルの実施をします。

Model AではAdelieでの回帰分析を実施したものをresAdelieに格納します。同様に、Model BではGentooでの回帰分析を実施したものをresGentooに格納します。

#Model for Adelie
resAdelie <- penguins %>%
  filter(species == "Adelie") %>%
  glm(bill_length_mm ~ flipper_length_mm, data = .) %>%
  tbl_regression(estimate_fun = ~style_sigfig(., digits = 3)) %>%
  bold_p(t = 0.05)

#Model for Gentoo
resGentoo <- penguins %>%
  filter(species == "Gentoo") %>%
  glm(bill_length_mm ~ flipper_length_mm, data = .) %>%
  tbl_regression(estimate_fun = ~style_sigfig(., digits = 3)) %>%
  bold_p(t = 0.05)

それぞれ個別に出力すると、次のようになります。

Model for Adelie(resAdelie)の出力

f:id:ryosukefujii0320:20210719183010p:plain

Model for Gentoo(resGentoo)の出力

f:id:ryosukefujii0320:20210719182951p:plain


論文でよく見るような(男女や年齢層で層別化した)表を出力したいなと思うこともしばしばあると思います。それを実現するのが、tbl_stackになります。

3. 異なるモデルのマージ(結合)

2. で作成したtbl_regressionのresAdelieおよびresGentooについて、tbl_stackを使用して結合したものを出力します。

tbl_stack_res <- tbl_stack(tbls = list(resAdelie, resGentoo), group_header = c("Adelie", "Gentoo"))
tbl_stack_res

tbl_stackを使用した出力が次のようになります。

f:id:ryosukefujii0320:20210719182612p:plain


異なる集団(層別化解析)について共通のモデルを実施する場合には有用です。非常にシンプルですが、tbl_mergeと同じく結果をまとめる時にはパワフルな関数だと思います。