Несколько вмененных наборов данных - результаты объединения - PullRequest
0 голосов
/ 07 января 2019

У меня есть набор данных, содержащий пропущенные значения. Я вменял этот набор данных следующим образом:

library(mice)
id <- c(1,2,3,4,5,6,7,8,9,10)
group <- c(0,1,1,0,1,1,0,1,0,1)
measure_1 <- c(60,80,90,54,60,61,77,67,88,90)
measure_2 <- c(55,NA,88,55,70,62,78,66,65,92)
measure_3 <- c(58,88,85,56,68,62,89,62,70,99)
measure_4 <- c(64,80,78,92,NA,NA,87,65,67,96)
measure_5 <- c(64,85,80,65,74,69,90,65,70,99)
measure_6 <- c(70,NA,80,55,73,64,91,65,91,89)
dat <- data.frame(id, group, measure_1, measure_2, measure_3, measure_4, measure_5, measure_6)
dat$group <- as.factor(dat$group)

imp_anova <- mice(dat, maxit = 0)
meth <- imp_anova$method
pred <- imp_anova$predictorMatrix
imp_anova <- mice(dat, method = meth, predictorMatrix = pred, seed = 2018, 
maxit = 10, m = 5)

Это создает пять вмененных наборов данных. Затем я создал полные наборы данных (пример набора данных 1):

impute_1 <- mice::complete(imp_anova, 1) # complete set 1   

И тогда я выполнил желаемый анализ:

library(reshape)
library(reshape2)
datLong <- melt(impute_1, id = c("id", "group"), measure.vars = c("measure_1", "measure_2", "measure_3", "measure_4", "measure_5", "measure_6"))

colnames(datLong) <- c("ID", "Gender", "Time", "Value")
table(datLong$Time) # To check if correct
datLong$ID <- as.factor(datLong$ID)

library(ez)
model_mixed_1 <- ezANOVA(data = datLong, 
                   dv = Value, 
                   wid = ID, 
                   within = Time, 
                   between = Gender, 
                   detailed = TRUE, 
                   type = 3,
                   return_aov = TRUE)

Я сделал это для всех пяти наборов данных, в результате чего получилось пять моделей:

model_mixed_1
model_mixed_2
model_mixed_3
model_mixed_4
model_mixed_5

Теперь я хочу объединить результаты этой модели, чтобы получить один результат. Я задавал подобный вопрос раньше, но там я сосредоточился на моделях. Здесь я просто хочу спросить, как я могу просто совместить пять моделей. Надеюсь, кто-нибудь может мне помочь!

1 Ответ

0 голосов
/ 20 января 2019

Вы правильно поняли основной процесс множественного вменения. Процесс похож на:

  1. Сначала создайте свои m вмененные наборы данных. (мыши () - функция)
  2. Затем вы анализируете каждый из этих наборов данных. (с () - функцией)
  3. В итоге вы объединяете эти результаты вместе. (бассейн () - функция)

Это довольно часто неправильно понимаемый процесс (часто люди предполагают, что вы должны объединить свои m вмененные наборы данных в один набор данных - что неправильно)

Вот изображение этого процесса: enter image description here

Теперь вы должны следовать этим шагам в рамках мыши - вы делали это только до шага 1.

Вот отрывок из справки о мышах:

Функция pool () объединяет оценки из m повторных полных анализов данных. Типичная последовательность шагов для анализа множественного вменения:

  1. Вменять пропущенные данные с помощью функции мышей, что приводит к множественному вмененному набору данных (средние классы);

  2. Подгонка интересующей модели (научной модели) к каждому условному значению, установленному функцией with (), в результате чего получается объект класса mira;

  3. Объедините оценки из каждой модели в единый набор оценок и стандартных ошибок, в результате чего получается объект класса mipo;

  4. При желании можно сравнить объединенные оценки из разных научных моделей с помощью функции pool.compare ().

Код, например, выглядит так:

imp <- mice(nhanes, maxit = 2, m = 5)
fit <- with(data=imp,exp=lm(bmi~age+hyp+chl))
summary(pool(fit))
...