我正在使用 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))。
在阅读了 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")