gtsummary::tbl_regression использует pool_and_tidy_mice() с tidy_standardize()

#r #tidyverse #r-mice #gtsummary

#r #tidyverse #r-мыши #gtsummary

Вопрос:

В настоящее время я пытаюсь запустить tbl_regression с вмененным набором данных из mice прогона через логистический glm. У меня возникли проблемы при попытке объединить пользовательские средства pool_and_tidy_mice очистки и tidy_standardize для получения результатов регрессии из результатов объединения мышей и стандартизированных оценок отношения шансов.

Есть ли способ получить стандартизированные коэффициенты шансов с объединением условных данных с помощью tbl_regression или, возможно, другой шаг, который я могу предпринять, чтобы получить их?

Используя surival пакет в качестве примера, я могу получить стандартизированное отношение шансов с не вмененными данными с помощью этого кода:

 library(tidyverse)
library(broom.mixed)
library(broom)
library(survival)

mod <- glm(death ~ marker   grade, data = trial, family = "binomial")
tbl_regression(mod, tidy_fun = tidy_standardize, 
                    exponentiate = TRUE, conf.int = TRUE, conf.level = 0.95)
 

Но, если я попытаюсь использовать tidy_standardize в следующем коде,

 suppressWarnings(mice::mice(trial, m = 2)) %>%
  with(glm(death ~ marker   grade, family = "binomial")) %>%
  tbl_regression(tidy_fun = tidy_standardize, 
                 exponentiate = TRUE, conf.int = TRUE, conf.level = 0.95)
 

Я получаю эту ошибку:

 x There was an error calling `tidy_fun()`. Most likely, this is because the
function supplied in `tidy_fun=` was misspelled, does not exist, is not
compatible with your object, or was missing necessary arguments (e.g. `conf.level=` or `conf.int=`). See error message below.
Error: Error in .model_parameters_generic(model = mice::pool(model), ci = ci, : formal argument "standardize" matched by multiple actual arguments
In addition: Warning messages:
1: Could not get model data. 
2: No variables could be standardized. 
3: Could not get model data. 
4: No variables could be standardized. 
 

Я также попробовал следующее, но все равно получил сообщение об ошибке:

 suppressWarnings(mice::mice(trial, m = 2)) %>%
  with(glm(death ~ marker   grade, family = "binomial")) %>%
  tbl_regression(tidy_fun = purrr::partial(tidy_standardize, method = "posthoc"), 
                 exponentiate = TRUE, conf.int = TRUE, conf.level = 0.95)
 
 x There was an error calling `tidy_fun()`. Most likely, this is because the
function supplied in `tidy_fun=` was misspelled, does not exist, is not
compatible with your object, or was missing necessary arguments (e.g. `conf.level=` or `conf.int=`). See error message below.
Error: Error in .model_parameters_generic(model = mice::pool(model), ci = ci, : formal argument "standardize" matched by multiple actual arguments
 

Ответ №1:

К сожалению, средства очистки нельзя комбинировать или складывать.

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

Пример ниже!

 library(gtsummary)
packageVersion("gtsummary")
#> [1] '1.5.0'

tbl <-
  suppressWarnings(mice::mice(trial, m = 2)) %>%
  with(glm(death ~ scale(marker)   grade, family = "binomial")) %>%
  tbl_regression(exponentiate = TRUE)
#> pool_and_tidy_mice(): Tidying mice model with
#> `mice::pool(x) %>% mice::tidy(exponentiate = TRUE, conf.int = TRUE, conf.level = 0.95)`
 

введите описание изображения здесь
Создано 2021-12-10 пакетом reprex (версия v2.0.1)

Ответ №2:

В отличие от невычисленных данных, mice не выводит таблицу, поэтому ее необходимо преобразовать с помощью complete впоследствии. Как насчет этого:

 library(tidyverse)
library(broom.mixed)
library(broom)
library(survival)
library(gtsummary)
library(mice)

data(trial)

mice(trial, m = 2) %>%
  complete() %>%
  as_tibble() %>%
  glm(death ~ marker   grade, data = ., family = "binomial") %>%
  tbl_regression(
    tidy_fun = tidy_standardize,
    exponentiate = TRUE, conf.int = TRUE, conf.level = 0.95
  )
 

Комментарии:

1. Это работает! Однако, когда я устал использовать его с другой моделью, которую мне нужно сделать с моими данными, заменив glm на glmer, я получаю эту ошибку: Ошибка в list2env(data): первым аргументом должен быть именованный список