2

我正在使用该miceR对具有大量缺失的数据集进行多次插补。原始数据集中的一些变量对于插补过程和以后的分析很重要。cor()但是,我想使用不包括某些变量来创建相关矩阵。通常,对于一个简单的数据集xcor(x[,3:7])将产生第 3 列到第 7 列的相关矩阵。如果xmidsmice函数创建的对象,通常会使用with执行重复分析来创建mira对象,然后用于pool创建mipo池化结果对象. 然而,第二个元素with应该是引用数据集列的公式,而不是进入cor(). Ifx是一个mids对象,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
4

1 回答 1

1

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

具体来说,对于您的问题,请查找函数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
于 2017-06-06T12:39:22.303 回答