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