使用MICE导出多个估算对象

时间:2019-06-20 12:42:36

标签: r imputation r-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" )

2 个答案:

答案 0 :(得分:0)

如果您注意到使用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")

答案 1 :(得分:0)

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]>