多重插补数据集

时间:2016-03-25 14:05:18

标签: r r-mice

我正在使用mice中的R软件包对数据集进行多次插补,并且存在大量缺失。原始数据集中的变量对于插补过程和后续分析非常重要。但是,我想使用cor()创建一个相关矩阵,而不包括一些变量。通常,对于简单数据集xcor(x[,3:7])将产生第3列到第7列的相关矩阵。如果x是由mids创建的mice对象函数,通常会使用with执行重复分析来创建mira对象,然后使用pool创建一个mipo池化结果对象。但是,with的第二个元素应该是引用数据集列的公式,而不是cor()的输入类型。如果xmids个对象,则cor(x[,3:7])不起作用,with(x, cor(x[,3:7]))也不起作用。

如何为多重插补数据集中的变量子集创建合并关联矩阵?

#reproducible example
x = data.frame(matrix(rnorm(100),10,10))  #create random data
x[9:10,] = NA #add missingness
x.mice = mice(x)  #make imputed data set
cor(x.mice[,3:7]) #doesn't work
with(x.mice, cor(x.mice[,3:7])) #doesn't work
with(x.mice[,3:7], cor()) #doesn't work

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。新添加的包“miceadds”为鼠标包添加了非常有用的功能。

具体来说,对于你的问题,查找函数 micombine.cor ,它推断了乘法的相关性和协方差。 数据集。

例如:

library(missForest)
library(mice)
library(miceadds)

#Get the data
data <- iris

#introduce missings
iris.mis <- prodNA(iris, noNA = 0.1)


#imputedata
imputed     <-mice(iris.mis, m = 5, maxit = 5, method = "pmm")

#correlations for the first three variables (package miceadds) 
correlations<- miceadds::micombine.cor(mi.res=iris.mis, variables = c(1:3))

#and because i am a psychologist and don't like scientific coding... 
old_school<-format(correlations$p, scientific=FALSE)
correlations["p_value"] <- NA; correlations$p_value <- old_school; 
correlations