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

Posted

技术标签:

【中文标题】如何在小鼠多重插补后创建相关矩阵【英文标题】:How to create correlation matrix after mice multiple imputation 【发布时间】:2021-05-06 19:56:44 【问题描述】:

我正在使用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】:

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

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

【讨论】:

以上是关于如何在小鼠多重插补后创建相关矩阵的主要内容,如果未能解决你的问题,请参考以下文章

在进行小鼠插补并保存结果后,如何使缺失值保持不变?

r 用小鼠多次插补

绘制多重插补结果

R中缺失和删失数据的多重插补

R语言高级方法进行缺失数据多重插补案例演示

Matlab:对缺失数据的多重插补