#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): первым аргументом должен быть именованный список