【问题标题】:how to summarise multiple logistic regression models in a table?如何在表格中总结多个逻辑回归模型?
【发布时间】:2020-07-12 11:57:48
【问题描述】:

我有一个数据集,其中年龄作为连续因素和一个因素,性别作为因素和 4 个组。

structure(list(Age = c(9, 12, 16, 57), Age_1 = structure(c(2L, 
3L, 3L, 7L), .Label = c("8", "1", "2", "3", "4", "5", "6", "7"
), class = "factor"), Sex = structure(c(2L, 1L, 2L, 1L), .Label = c("M", 
"F", "U"), class = "factor"), N = structure(c(2L, 2L, 2L, 
2L), .Label = c("0", "1"), class = "factor"), G = structure(c(1L, 
1L, 1L, 1L), .Label = c("0", "1"), class = "factor"), L_1 = 
structure(c(1L, 
1L, 1L, 1L), .Label = c("0", "1"), class = "factor"), C_1 = 
structure(c(1L, 
1L, 1L, 1L), .Label = c("0", "1"), class = "factor"), G_1 = 
structure(c(1L, 
1L, 1L, 1L), .Label = c("0", "1"), class = "factor"), m = structure(c(1L, 
1L, 1L, 1L), .Label = c("0", "1"), class = "factor"), A = c(1, 
1, 1, 1)), row.names = c(NA, 4L), class = "data.frame")

我想对每个组(N、G、L_1、C_1、G_1、m)的每个变量(Age、Age_1 和性别)进行逻辑回归。 例如。

mylogit <- glm(N  ~ Sex, data = logistic_s, family = "binomial")
mylogit <- glm(N  ~ Age, data = logistic_s, family = "binomial")

我正在使用 gtsummary 来组合表格中的变量。

library(gtsummary) 

tbl_n <-
      tbl_uvregression(
        logistic_s[c("N", "Age", "sex", "Age_1")],
        method = glm,
        y = N,
        method.args = list(family = binomial),
        exponentiate = TRUE
      )

tbl_n  

这会产生一组(例如 N)的输出,其中包含变量 Age、Age_1、Sex。

我想对每个组(例如 N、G、L_1 等)重复此操作,然后将这些表组合成一个组合表。

如果有其他更适合的选项,我愿意使用不同的包。我想做一个可以用word导出的表格。

【问题讨论】:

  • 你能描述一下你所说的组是什么意思吗?分组变量是对数据进行子集化的一种方式,还是您将它们用作不同的结果?例如N ~ Age + SexG ~ Age + Sex 等等?
  • 你的数据结构很难理解——你能用dput让它重现吗?另外,您能否包括必要的library 电话? tbl_regressiontbl_uvregression 来自哪里?
  • @MargaretHannum 组(N、G、L_1、C_1、G_1、m)是结果。我想看看年龄和性别与这些潜在结果中的每一个之间的关系
  • @Conor Neilson 谢谢,帖子已被编辑

标签: r sjplot gtsummary


【解决方案1】:

我同意一些可重现的代码会有所帮助。我不是 100% 确定你想要得到什么样的输出。您想为 2 个或更多组分别构建一些单变量逻辑回归模型?

如果这是正确的,这是一种解决方法: 我将以gtsummary包中的trial数据集为例。我将进行分组变量处理(trt)。

library(gtsummary)
library(tidyverse)

trial_subset <-
  trial %>%
  select(trt, response, age, marker, grade) 

我们将首先使用gtsummary 包中的tbl_uvregression() 函数构建按trt 分层的单变量回归表。它们将存储在数据框中名为tbl_uv 的新列中。

df_uv <-
  trial_subset %>%
  # group by trt, and nest data within group
  group_by(trt) %>%
  nest() %>%
  # build univariate logistic regression models separately within grouping variable
  mutate(
    tbl_uv = map(
      data,
      ~tbl_uvregression(
        data = .x, 
        y = response,
        method = glm, 
        method.args = list(family = binomial),
        exponentiate = TRUE
      )
    )
  )
#> # A tibble: 2 x 3
#> # Groups:   trt [2]
#>   trt    data               tbl_uv    
#>   <chr>  <list>             <list>    
#> 1 Drug A <tibble [98 x 4]>  <tbl_vrgr>
#> 2 Drug B <tibble [102 x 4]> <tbl_vrgr>

我们现在可以使用df_uv 中保存的表格,通过tbl_merge() 函数将它们合并为一个表格。

tbl_merge(
  tbls = df_uv$tbl_uv, # list of the univariate logistic regression tables
  tab_spanner = paste0("**", df_uv$trt, "**") # adding stars to bold the header
)

这会产生下表。我希望这会有所帮助!

【讨论】:

  • 我想对潜在结果(N、G、L_1、C_1、G_1、m)的每个变量(Age、Age_1、Sex)进行逻辑回归,并将它们组合在一个表格中,显示每个结果(N、G、L_1、C_1、G_1、m)的 OR/CI/p 可能在横向视图中(即变量作为行)。但如果这太大了,我可能会垂直堆叠它们。
  • 这能让你开始吗? gtsummary 包还有一个tbl_stack() 函数,你可以堆叠使用gtsummary 创建的任何表。
  • 你可以在 mutate 之后使用 pull(tbl_uv),然后通过管道进入合并
  • 替换我不小心删除的问题,为有关 pull(tbl_uv) 的答案提供上下文...我询问是否有办法跳过保存 df_uv 的中间步骤,%&gt;% pull(tbl_uv) %&gt;% tbl_merge() 有效很棒。
猜你喜欢
  • 2020-05-29
  • 2017-09-01
  • 2012-07-02
  • 1970-01-01
  • 2019-01-06
  • 2018-05-21
  • 2022-10-04
  • 2014-11-21
  • 2020-12-22
相关资源
最近更新 更多