我正在使用鼠标来估算丢失的数据。这里的问题是完成插补需要一两个小时。因此,在完成插补后,我希望将其导出以供将来使用,以免在需要重新访问分析的情况下避免重复耗时的插补过程。
我在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" )
答案 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]>