【问题标题】:How import the saved mice/mids object from a file如何从文件中导入保存的鼠标/中间对象
【发布时间】:2023-03-04 10:45:03
【问题描述】:

我正在寻找一种将鼠标对象导出到文件的方法,以便将来可以将其加载回来以进行进一步分析。我找到了一些关于使用miceadds::write.mice.imputation 将数据保存到本地文件的信息。我还在Exporting multiple imputed objects with MICE 中找到了类似的帖子,但该帖子中接受的答案并没有真正解决问题,write.mice.imputation 可以将估算的数据、变量列表等保存到文件中,但它不会保存重建老鼠对象的信息。

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对象

library(mice)
library(miceadds)

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

最后一行无法编译,因为 oldData 只是数据而不是鼠标对象。

【问题讨论】:

    标签: r r-mice


    【解决方案1】:

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

    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 文件,

    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

    load("mice_imp1/mice_imp1.Rdata")
    ls()
    # [1] "impdir" "mi.res"
    

    它是 "mi.res""mids" 类,

    class(mi.res)
    # [1] "mids"
    

    并且可以绘制。

    stripplot(get("mi.res"), pch=20, cex=2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-17
      • 2019-02-11
      • 1970-01-01
      • 2011-05-17
      • 1970-01-01
      • 2011-11-13
      • 2021-11-19
      相关资源
      最近更新 更多