Может ли вывод функции MICE pool () быть сгруппирован с использованием dplyr? - PullRequest
0 голосов
/ 27 июня 2019

После многократного вменения некоторого набора данных с использованием пакета MICE я хотел бы рассчитать отдельные модели линейной регрессии для каждой из двух зависимых переменных (оценка_1, оценка_2).Независимые переменные (рука, пол, возраст, базовый балл) идентичны для обеих моделей.К сожалению, мне не удается (1) интегрировать функцию mice :: pool () в конвейер dplyr, и (2) я не знаю, как сгруппировать функцию mice :: pool () по зависимой переменной (df_lm $ score).

library(tidyverse)
library(mice)


# SIMULATE DATA


df <- data.frame(id = 1:120,
                 arm = sample(c('intervention', 'control'), 120, replace = TRUE),
                 sex = sample(c('m', 'f'), 120, replace = TRUE),
                 age = round(rnorm(120, 55, 10)),
                 score_1 = round(rnorm(120, 50, 5)),
                 score_2 = round(rnorm(120, 50, 7)))

df <- df %>% bind_rows(df) %>%
  mutate(time = c(rep('baseline', 120), rep('follow_up', 120))) %>%
  select(id, arm, time, everything()) %>%
  gather(score, measure , -(id:age)) %>%
    spread(key = time, value = measure)

# INSERT SOME MISSING VALUES

df$follow_up[seq(1, 240, 5)] <- NA

# IMPUTATION MODEL 

init <- mice(df, maxit = 0)
predM <- init$predictorMatrix
# remove as predictor
predM[ , c('arm')] <- 0


mids_from_df <- mice(df,
  method = 'pmm',
  predictorMatrix = predM,
  m = 5,
  seed = 123,
  print = FALSE
)


# COMPUTE MODELS


fmla <- "follow_up ~ baseline + arm + sex + age"

df_lm <- mids_from_df %>%
  mice::complete("long", include = FALSE) %>%
  group_by(.imp, score) %>%
  nest() %>%
  mutate(lm_model = map(data, ~lm(fmla, data = .))) 

Я хотел бы получить объединенные результаты для каждой зависимой переменной в отдельности.Тем не менее, я не знаю, как использовать mice :: pool () вместе с dplyr и purr.Следующий код выдает ошибку:

df_lm <- mids_from_df %>%
  mice::complete("long", include = FALSE) %>%
  group_by(.imp, score) %>%
  nest() %>%
  mutate(lm_model = map(data, ~lm(fmla, data = .)))  %>%
  group_by(.imp, score) %>%
  pool(., lm_model) # does not work

Сообщение об ошибке: «Ошибка: нет метода взгляда для объектов класса integer»

Заранее спасибо за помощь!

...