【问题标题】:Using imputation models created from amelia or mice in R for new data使用从 R 中的 amelia 或小鼠创建的插补模型获取新数据
【发布时间】:2023-04-07 17:20:01
【问题描述】:

假设我在一个大数据框上运行缺失的变量插补 R 包之一,amelia 或小鼠(或类似的)——比如说 100000 行和 50 列——来获得一个特定列的插补(让我们比如说 200) NA。

有没有办法保存派生的插补算法,以便当我获得包含 1000 行新数据的新数据时,我可以简单地将算法应用于该新数据?

目标是使用与基础数据相同的算法来估算新数据集中的任何新 NA。

提前致谢 - 如果不清楚,我很乐意回答任何问题。

【问题讨论】:

  • 您好,请提供一个最小的、可重复的、有代表性的示例以及所需的最终结果。将dput() 用于数据并指定所有具有库调用的非基础包。不要为数据或代码嵌入图片,使用缩进的代码块。
  • 为什么不能每次只做一次插补,就两行代码?有一个 m(mice) 参数可以起到再现性的作用。
  • @NelsonGon 对不起,我不清楚。是的,我当然可以重新进行估算,但是在“新数据”的情况下,我希望“编译”的估算速度非常快。几乎就像我想要一个插补的“预测”声明......

标签: r imputation r-mice


【解决方案1】:

caret 接近您想要的:这假设所有新数据都采用相同的变量。 caretmice 的估算有不同的准确性(根据我的经验)。

library(caret)
mydata<-data.frame(A=c(rep(NA,900),rep(3,900)),B=c(rep(NA,200),rep(3,400)))
mydata1<-data.frame(D=mydata,E=rep(mydata))
prep<-preProcess(mydata,method = "medianImpute")
df_new<-predict(prep,mydata)
df_new
df_new2<-predict(prep,mydata1)

【讨论】:

  • 是的,这正是我想要的。但是,我想知道是否有一种方法可以在类似编译的过程中“保存”插补算法,而不必将“mydata”加载到内存中?有什么想法吗?
  • 抱歉,您能否详细说明类似编译的进程如何工作?
  • 我不知道怎么做。大多数这些插补包都依赖于将插补值保存在内存中。也许在环境中临时分配对象?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 2020-03-09
  • 2021-06-29
  • 2019-08-04
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多