如何在小鼠多次插补后创建相关矩阵

问题描述

我正在使用 mouse 包来创建多个插补。我想创建一个相关矩阵(以及一个相关系数的 p 值矩阵。我使用 mouseadds::micombine.cor 来做到这一点。但这给出了一个数据框,第一列中有变量,然后是一些包含 r、p、t 值等的列。

我正在寻找一种方法来将这个数据帧变成一个“旧”矩阵,其中 x 和 y 之间的相关系数在 [x,y] 位置,以及一个具有 p 值的矩阵 有没有人有简单的方法要这样做吗?

这是一些要重现的代码

data <- mtcars
mt.mis <- prodNA(mtcars,noNA = 0.1)
imputed     <-mice(iris.mis,m = 5,maxit = 5,method = "pmm")
correlations<- miceadds::micombine.cor(mi.res=iris.mis,variables = c(1:3))

我正在寻找类似于 cor(mtcars) 的输出。谁能帮忙?

解决方法

我最终编写了自己的函数。可能可以更有效地完成,但这是我所做的。

cormatrix <- function(r,N){
  x <- 1
  cormatrix <- matrix(nrow = N,ncol = N)  # create empty matrix
  for (i in 1:N) {
  for (j in i:N) {
    if(j>i){
    cormatrix[i,j] <- r[x]
    cormatrix[j,i] <- r[x]
    x <- x + 1
    }
  }
}
diag(cormatrix) <- 1
cormatrix
}

您可以使用 micombine.cor 的输出和模型中的变量数作为参数来调用它。例如 cormatrix(correlations$r,ncol(df)).