После многократного вменения некоторого набора данных с использованием пакета 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»
Заранее спасибо за помощь!