【发布时间】:2016-07-13 07:12:56
【问题描述】:
我正在使用R 中的mice 包对具有大量缺失的数据集进行多重插补。原始数据集中的一些变量对于插补过程和以后的分析很重要。但是,我想使用cor() 创建一个相关矩阵,而不包括一些变量。通常,对于一个简单的数据集x,cor(x[,3:7]) 将产生第 3 列到第 7 列的相关矩阵。如果x 是由mice 函数创建的mids 对象,通常会使用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
【问题讨论】:
-
请考虑在您的问题中添加reproducible example:这将对我们有很大帮助。
-
好点,文森特·吉列莫特。我在问题中添加了一个。谢谢。
-
如果你命名数据中的列,它可能更容易使用。所以在相关位置使用
x = setNames(x, letters[1:10])(在调用鼠标之前)然后这应该可以工作with(x.mice, cor(cbind(a,b))) -
但是作为另一个想法,由于没有
pool方法(除非你使用lm我猜),它可能更容易循环通过complete数据集... @ 987654346@ -
为了合并结果,我只取 mean 矩阵,巧合的是,它也是一个相关矩阵。如果所有矩阵都在一个列表
L中,则执行Reduce("+",L)/5以获得池化相关矩阵。