如何在使用mice进行多重插补后创建相关矩阵。

3
我正在使用mice包创建多个插补。我想创建一个相关矩阵(以及相关系数的p值矩阵)。我使用miceadds::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) 的输出结果。谁能帮助我?
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接