使用gtsummary包的宽格式的多项式Lo​​gistic回归结果表

时间:2020-10-21 12:46:49

标签: r mlogit gtsummary

我有一个有四个结果的因变量。我已经使用mlogit软件包进行了多项逻辑回归。

当我尝试使用gtsummary软件包呈现结果时,我的多项逻辑回归结果彼此堆叠(请参见下面的代码和表)。

无论如何,是否仅使用一组级别的标签将结果并排成一行,而不是像下面的表格那样相互堆叠?

# load packages
library(gtsummary)
library(nnet)

# dummy data 
crime <-data.frame(city = sample(c("SF", "AR", "NYC","MN"),13000,replace = TRUE),
                   year = sample(as.factor(c(1990, 2000, 1999, 1989)),13000,replace = TRUE)
                   )

# multinom model tabulated with gtsummary  
multinom(city ~ year, data = crime) %>%
  tbl_regression(exponentiate = T)

enter image description here

1 个答案:

答案 0 :(得分:1)

多项式模型的处理在该软件包的当前开发版本中得到了改进,并将很快发布(在1.3.6版中)。

默认情况下,多项模型将以长格式打印。参见下面的示例。

# install dev versions
remotes::install_github("ddsjoberg/gtsummary@mice_nnet")
remotes::install_github("larmarange/broom.helpers")

# load packages
library(gtsummary)
library(nnet)
theme_gtsummary_compact()

# dummy data 
crime <-data.frame(city = sample(c("SF", "AR", "NYC","MN"),13000,replace = TRUE),
                   year = sample(as.factor(c(1990, 2000, 1999, 1989)),13000,replace = TRUE)
)

# build model
mod <- multinom(city ~ year, data = crime)

# multinom model tabulated with gtsummary  
tbl_long <-
  mod %>%
  tbl_regression(exponentiate = TRUE) %>%
  modify_header(estimate ~ "**OR**")

enter image description here

使用默认的LONG格式打标肯定会更加简单。但是也有可能获得广泛的格式。本质上,您需要为结果的每个级别构造一个gtsummary表,以将gtsummary表显示和合并在一起。

# to make it WIDE --------------------------------------------------------------
tbl_MN <-
  tbl_regression(
    mod,
    exponentiate = TRUE, 
    tidy_fun = function(x, ...) broom::tidy(x, ...) %>% dplyr::filter(y.level == "MN")
  ) %>%
  modify_table_body(dplyr::ungroup) %>%
  modify_table_body(dplyr::select, -groupname_col)

tbl_NYC <-
  tbl_regression(
    mod,
    exponentiate = TRUE, 
    tidy_fun = function(x, ...) broom::tidy(x, ...) %>% dplyr::filter(y.level == "NYC")
  ) %>%
  modify_table_body(dplyr::ungroup) %>%
  modify_table_body(dplyr::select, -groupname_col)

tbl_SF <-
  tbl_regression(
    mod,
    exponentiate = TRUE, 
    tidy_fun = function(x, ...) broom::tidy(x, ...) %>% dplyr::filter(y.level == "SF")
  ) %>%
  modify_table_body(dplyr::ungroup) %>%
  modify_table_body(dplyr::select, -groupname_col)

tbl_wide <-
  tbl_merge(list(tbl_MN, tbl_NYC, tbl_SF), tab_spanner = c("**MN**", "**NYC**", "**SF**"))

enter image description here

相关问题