Сбор объекта (вывод MICE для пяти вмененных наборов данных)?

Я использую MICE для вменения данных в многоуровневую модель. Затем я использую функцию with () в MICE для многоуровневого анализа с помощью lmer (). В этом первом наборе данных рассматривается общая преступность. Затем я провожу еще один анализ по типу преступления, чтобы собрать насильственные преступления и преступления против собственности. Первоначально для этого второго набора данных я думал собрать данные о преступлениях против собственности и насильственных преступлениях до вменения, а затем вменять предикторы, но это занимает НАВСЕГДА (более 20 часов). Есть ли способ собрать выходные данные MICE (ниже mice.crime), чтобы затем смоделировать ценности насильственных преступлений и преступлений против собственности?

Большое спасибо!

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

library(mice)
df.1 <- data.frame(place_id = as.integer(seq (1:n)),
property_crime = as.numeric(sample(c(20:90), n, rep = TRUE)),
violent_crime = as.numeric(sample(c(20:90), n, rep = TRUE)),
med_income = sample(c(20:90), n, rep = TRUE))%>%
  mutate(crime_total = property_crime + violent_crime)

df <- apply(subset(df.1,select=-c(place_id, property_crime, violent_crime, crime_total)), 2, function(x)
     {x[sample(c(1:n),floor(n/10))]<-NA; x}) 
df.1 <- df.1%>%select(-(med_income))
df <- cbind(df.1, df)

impmethod.1 <- character(ncol(df))
names(impmethod.1) <- colnames(df)
impmethod.1[c("med_income")] <- "2l.lmer" 
impmethod.1[c("place_id", "property_crime", "violent_crime", "crime_total")] <- ""
impmethod.1

pm <- make.predictorMatrix(df)
pm["place_id",] <- -c(0,0,0,0,2)
pm["property_crime",] <- -c(-2,0,0,0,2)
pm["violent_crime",] <- -c(-2,0,0,0,2)
pm["crime_total",] <- -c(-2,0,0,0,2)
pm["med_income",] <- -c(-2,0,0,0,0)

mice.crime <- mice(df, m=5, predictorMatrix = pm,
                    method=impmethod.1, maxit=10, printFlag = FALSE, seed=1874)

person James    schedule 06.07.2020    source источник


Ответы (1)


Я продолжаю здесь свой вопрос с ответом ... в надежде, что я смогу у кого-нибудь здесь реализовать пакет MICE много времени и разочарований. Пакет MICE потрясающий. Он хорошо продуман и универсален. И функция with (), в которой можно легко объединить пять отдельных наборов данных с помощью множественной или многоуровневой регрессии, является символом этого. Однако, если вы планируете затем использовать sjPlot (еще один замечательный, невероятно хорошо продуманный пакет) для построения размеров эффекта, или если вы хотите перекрестно проверить свои результаты; Я бы остановился на MICE после вменения и переключился на пакет sjMisc (другой пакет от Daniel Ludecke), который имеет функцию merge_imputations (), которая будет брать вмененные векторы и объединять их с вашим исходным набором данных. Подробнее об этом здесь: https://www.rdocumentation.org/packages/sjmisc/versions/2.8.4/topics/merge_imputations (на самом деле это одна из немногих R-документов, которые я нашел, где есть полезный пример). Таким образом, теперь у вас есть один набор данных с вашими вмененными значениями, и вы можете двигаться дальше с lme4 (и / или подразделениями для перекрестной проверки) или любыми регрессиями, которые вы выполняете.

С точки зрения статистики, я думаю, что функция with () лучше, поскольку она берет пять отдельных списков вмененных данных и объединяет их с исходным набором данных по мере вменения, но с практической точки зрения, если вы хотите построить график или перекрестную проверку, вы попадете в тупик. До тех пор, пока кто-то не опубликует более подробный статистический или вычислительный ответ на вопрос, надеюсь, это спасет вас от того, что я уже сделал.

person James    schedule 10.07.2020