Как суммировать несколько моделей логистики c в таблице? - PullRequest
2 голосов
/ 31 марта 2020

У меня есть набор данных с непрерывным возрастом и как фактор, пол как фактор и 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")

Я хочу сделать регрессию c для каждой переменной (Возраст, Возраст_1 и пол) для каждой из групп (N, G, L_1, C_1, G_1, m). например.

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 et c), а затем объединить таблицы в одну объединенную таблицу.

Я открыт для использования различные пакеты, если есть другие варианты, которые подходят лучше. Я хочу сделать таблицу, которая может быть экспортирована в слове.

1 Ответ

4 голосов
/ 01 апреля 2020

Я согласен, что некоторый воспроизводимый код будет полезен. Я не уверен на 100%, какой результат вы хотите получить. Вы хотите построить несколько одномерных регрессионных моделей логистики c, отдельно для 2 или более групп?

Если это правильно, вот один из способов go об этом: я буду использовать данные trial установите в качестве примера gtsummary. Я сделаю группировку переменной обработки (trt).

library(gtsummary)
library(tidyverse)

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

Начнем с построения одномерных таблиц регрессии, стратифицированных по trt, с использованием функции tbl_uvregression() из пакета gtsummary. Они будут сохранены в новом столбце во фрейме данных с именем 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
)

Это приводит к таблице ниже. Я надеюсь, что это полезно!

enter image description here

...