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

问题描述 投票:0回答:2

我正在使用 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) 的输出。谁能帮忙?

r correlation imputation r-mice
2个回答
2
投票

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

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))。


0
投票

在阅读了 micombine.cor() 部分的帮助文件后,我发现了建议这样做的代码。我不知道这是否是您正在寻找的。另外,我不确定您是否打算这样做,但您在上面的示例代码中使用了非估算数据。我将其切换为您的估算数据。您还在示例中使用了 iris,但我认为您打算将其保留在 mtcars 中。感谢您提供示例代码!

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

attr(correlations, "r_matrix")
© www.soinside.com 2019 - 2024. All rights reserved.