r - 如何计算R中不同列维数矩阵之间的相关性

标签 r matrix

我有两个行数相同但列数不同的矩阵:

mat1 <- matrix(rnorm(20), 4, 5)
mat2 <- matrix(rnorm(12), 4, 3)

由于我有相同的行数,我想计算矩阵列之间的以下相关性:

 cor.test(mat1[,1], mat2[,1])
 cor.test(mat1[,1], mat2[,2])
 cor.test(mat1[,1], mat2[,3])
 cor.test(mat1[,2], mat2[,1])
 cor.test(mat1[,2], mat2[,2])
 cor.test(mat1[,2], mat2[,3])
 ...........
 ...........
 cor.test(mat1[,5], mat2[,3])

for(i in 1:5){
  for(j in 1:3){
    pv[i,j] <- cor.test(mat1[, i], mat2[ , j])$p.value
  }
}

最后我想要一个矩阵(5 * 3)或包含相关值的向量,有人可以帮忙吗?

我可以用它来返回 p.value 和估计值吗?

 FUN <- function(x, y) { 
    res <- cor.test(x, y, method="spearman", exact=F) 
    return(list(c = res$estimate, p = res$p.value)) 
  }

 r1 <- outer(colnames(mat1), colnames(mat2), Vectorize(function(i,j) FUN(mat1[,i], mat2[,j])$p))
 r2 <- outer(colnames(mat1), colnames(mat2), Vectorize(function(i,j) FUN(mat1[,i], mat2[,j])$c))

谢谢。

最佳答案

为什么不直接使用 cor 函数来计算 PIL 逊相关性?

seed(1)
mat1 <- matrix(rnorm(20), 4, 5)
mat2 <- matrix(rnorm(12), 4, 3)
cor(mat1, mat2)
       [,1]        [,2]        [,3]
[1,]  0.4406765 -0.70959590  0.10731768
[2,] -0.2566199 -0.01588993 -0.63630159
[3,] -0.9813313  0.85082165 -0.77172317
[4,]  0.6121358 -0.38564314  0.87077092
[5,] -0.6897573  0.66272015 -0.08380553

要仔细检查,

> col_1 <- 3
> col_2 <- 2
# all.equal is used to compare numeric equality where `==` is discouraged
> all.equal(cor(mat1, mat2)[col_1, col_2], cor(mat1[,col_1], mat2[,col_2]))
[1] TRUE

他们是平等的!

关于r - 如何计算R中不同列维数矩阵之间的相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27052739/

相关文章:

c++ - 如何更改和设置 Rcpp 编译参数

R Shiny - 导航到选项卡项时自动隐藏侧边栏

r - 如何计算R中1之间的0数?

r - 计算重复R代码的出现次数

mysql - 如何在 MySQL 中存储距离矩阵?

r - 将不同长度的向量组合成R中的数据框

matrix - 在 NumPy 中增加矩阵

Matlab:向图中添加符号

python - 如何在Tensorflow中计算矩阵乘积的对角线?

opengl - 如何创建透视投影矩阵,给定焦点和相机主中心