Экспорт нескольких вмененных объектов с помощью MICE

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

Я поискал в Google и нашел функцию miceadds::write.mice.imputation. Я посмотрел руководство. Он предлагал пример экспорта, но я не уверен, как его импортировать обратно. Кажется, сгенерирован какой-то файл .dat.

скажем, у меня есть следующий код:

# Model 1: Imputation using mice  
imp1 <- mice::mice( nhanes, m=3, maxit=5 )  
# write results 
write.mice.imputation(mi.res=imp1, name="mice_imp1" )

person etc    schedule 20.06.2019    source источник


Ответы (2)


Если вы заметили, когда вы используете write.mice.imputation, его значения по умолчанию предназначены для сохранения ваших вмененных данных в файлах различных типов (csv, spss, dat, Rdata).

Мы можем создать образец данных: set.seed (1) df ‹- data.frame (group = sample (c (1: 5, NA), replace = TRUE, size = 10), val = sample (c (10: 15, NA), replace = TRUE, size = 10))

Загрузите и оцените наши данные:

require(mice)
require(miceadds)
imp1 <- mice::mice(df, m=3, maxit=5 )  

Напишите наши результаты:

write.mice.imputation(mi.res=imp1, name="mice_imp1", 
                      include.varnames=TRUE,
                      long=TRUE, mids2spss=TRUE,
                      spss.dec=",", dattype=NULL)

Теперь мы можем загружать файлы любого удобного для вас типа. Например, dat файл:

oldData <- read.table("mice_imp1/mice_imp1__LONG.dat")
person DJV    schedule 20.06.2019

est_long <- parlmice(nhanes, cluster.seed = 123, print = FALSE, n.core = 4, n.imp.core = 100) %>%
  mice::complete("long")

дает

head(est_long)
  .imp .id age  bmi hyp chl
1    1   1   1 22.0   1 131
2    1   2   2 22.7   1 187
3    1   3   1 27.2   1 187
4    1   4   3 27.2   2 284
5    1   5   1 20.4   1 113
6    1   6   3 20.4   1 184

Вы можете продолжить, разбив длинный набор данных на список из 400 наборов данных.

    est_long <- parlmice(nhanes, cluster.seed = 123, print = FALSE, n.core = 4, n.imp.core = 100) %>%
      mice::complete("long")%>%
  group_by(.imp) %>% 
  nest()  
head(est_long)
# A tibble: 6 x 2
# Groups:   .imp [6]
   .imp data                 
  <int> <list>               
1     1 <tibble[,5] [25 × 5]>
2     2 <tibble[,5] [25 × 5]>
3     3 <tibble[,5] [25 × 5]>
4     4 <tibble[,5] [25 × 5]>
5     5 <tibble[,5] [25 × 5]>
6     6 <tibble[,5] [25 × 5]>
person hnguyen    schedule 27.04.2021