问题描述
我正在使用 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)).