首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从文件导入保存的mice/mids对象

如何从文件导入保存的mice/mids对象
EN

Stack Overflow用户
提问于 2021-03-13 10:13:48
回答 1查看 207关注 0票数 2

我正在寻找一种将mice对象导出到文件的方法,这样我就可以在将来加载它以进行进一步的分析。我发现了一些关于使用miceadds::write.mice.imputation将数据保存到本地文件的信息。我也在Exporting multiple imputed objects with MICE中找到了一个类似的帖子,但该帖子中公认的答案并没有真正解决问题,write.mice.imputation可以将输入的数据、变量列表等保存到文件中,但它不会保存信息来重建mice对象。

代码语言:javascript
复制
library(mice)
library(miceadds)

imp <- mice::parlmice(data=nhanes, n.core = 4, n.imp.core = 1, m=3, maxit = 50, print=T)
write.mice.imputation(mi.res=imp, name="mice_imp1")

我看到在本地创建了mice_imp1文件夹,一些数据也保存在那里。但是,使用以下代码加载数据不会重新生成mice对象

代码语言:javascript
复制
library(mice)
library(miceadds)

oldData <- read.table("mice_imp1/mice_imp1__IMPDATA1.dat")
stripplot(oldData, pch=20, cex=2) # this line gives error

最后一行不能编译,因为oldData只是数据而不是mice对象。

EN

回答 1

Stack Overflow用户

发布于 2021-03-13 16:36:55

一方面,write.mice.imputation将多个推定的数据集中的每一个都存储在.dat文件中,另一方面,它将"mids"对象存储为.Rdata文件。当你想要后者时,你需要加载前者。

代码语言:javascript
复制
library(mice)
library("miceadds")

impdir <- "./mice_imp1"
imp <- mice::parlmice(data=nhanes, n.core=4, n.imp.core=1, m=3, maxit=50, print=T)
write.mice.imputation(mi.res=imp, name=impdir, mids2spss=F)
ls()  ## whats in the wrkspace?
# [1] "imp"    "impdir"
rm(imp)  ## remove the mice data

查看目录中存储了哪些对象,并且我们可能需要mice_imp1.Rdata文件,

代码语言:javascript
复制
file.info(list.files("./mice_imp1", full.names=T))[,1, drop=F]
# mice_imp1/mice_imp1.Rdata                14105
# mice_imp1/mice_imp1__DATALIST.Rdata        734
# mice_imp1/mice_imp1__IMP_LIST.txt          108
# mice_imp1/mice_imp1__IMP_SUMMARY.txt      3875
# mice_imp1/mice_imp1__IMPDATA1.dat          365
# mice_imp1/mice_imp1__IMPDATA2.dat          363
# mice_imp1/mice_imp1__IMPDATA3.dat          363
# mice_imp1/mice_imp1__IMPDATA4.dat          365
# mice_imp1/mice_imp1__IMPMETHOD.csv          37
# mice_imp1/mice_imp1__LEGEND.txt             20
# mice_imp1/mice_imp1__LONG.dat             1878
# mice_imp1/mice_imp1__PREDICTORMATRIX.csv    70
# mice_imp1/mice_imp1__VARNAMES.txt           20

我们可以使用load

代码语言:javascript
复制
load("mice_imp1/mice_imp1.Rdata")
ls()
# [1] "impdir" "mi.res"

它以类"mids""mi.res"的形式出现,

代码语言:javascript
复制
class(mi.res)
# [1] "mids"

并且可以进行绘图。

代码语言:javascript
复制
stripplot(get("mi.res"), pch=20, cex=2)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66609504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档