使用 MICE 导出多个估算对象
Exporting multiple imputed objects with 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" )
如果您在使用 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")
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]>
我正在使用鼠标来估算我丢失的数据。这里的问题是完成插补需要一两个小时。因此,当它完成估算时,我想将其导出以供将来使用,这样我就可以避免重复耗时的估算过程,以防我必须重新访问分析。
我在 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" )
如果您在使用 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")
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]>