r - R中两个矩阵的相关性

标签 r file

我有两个矩阵(不同的行和相同的列)。我想计算两个矩阵的行之间的相关性。 (逐元素相关)。第一个是这样的:

A 2 5
B 6 9
c 7 8

第二个是这样的:

D 8 6
E 1 7
F 7 9

在这种情况下,结果将是一个 3 x 3 矩阵(逐个元素相关以及可能的显着性水平)。我怎样才能做到?

最佳答案

这就是您要找的吗:

# Create some fake data
set.seed(5) # for reproducibility
mat1 = matrix(rnorm(20), nrow=4)
mat2 = matrix(rnorm(25), nrow=5)

cor(t(mat1),t(mat2)) # With compliments to @user20650  

输出是相关系数矩阵,其中输出矩阵的行是 mat1 的行索引,列是 mat2 的行索引。

           [,1]       [,2]       [,3]       [,4]       [,5]
[1,] -0.8160882  0.6347404  0.4746797 -0.1497491 -0.4571110
[2,] -0.3021956  0.5039831  0.3204012 -0.2516131  0.6280471
[3,] -0.1188116  0.1798996  0.4537378  0.6036471  0.3732481
[4,]  0.6682962 -0.4815078 -0.5085583 -0.1232551 -0.1088882

您可以使用 Hmisc 包中的 rcorr 获取显着性水平。 rcorr 连接两个矩阵并返回所有列对之间的相关性和显着性水平。这是一种仅获取每个矩阵之间而不是每个矩阵内部的相关性显着性水平的方法(尽管可能有更简单的方法)。

转置函数只是让上面的相关矩阵和下面返回的显着性矩阵之间的行和列相对应。另请注意,只需将 [[3]] 更改为 [[1]],即可从下面的代码中获取相关矩阵。 rcorr 返回一个列表,其中第一个元素为相关矩阵,第三个元素为显着性矩阵。

library(Hmisc)
t(sapply(1:nrow(mat1), function(x) {
    sapply(1:nrow(mat2), function(y) {
      rcorr(mat1[x,],mat2[y,])[[3]][1,2]
    })
  }))

           [,1]      [,2]      [,3]      [,4]      [,5]
[1,] 0.09202147 0.2499648 0.4191522 0.8100486 0.4389450
[2,] 0.62117186 0.3866162 0.5991440 0.6830495 0.2565734
[3,] 0.84908109 0.7721863 0.4427686 0.2810484 0.5360431
[4,] 0.21755702 0.4115164 0.3815924 0.8434650 0.8616337

关于r - R中两个矩阵的相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27846787/

相关文章:

R:如何组合具有相同 id 的数据帧的行并采用最新的非 NA 值?

MySQL:驱动程序从 5 更新到 8 后,LOAD DATA LOCAL INFILE 不起作用

r - 每个观察的百分位数 w/r/t 分组变量

java - Android - 根据文件名获取文件的 R.raw.value?

java - 我们如何在Android中复制文件并保留其只读属性?

c++ - 检查文件是否只包含空格 C++

r - 在 dplyr 的 group_by 中使用对象而不是列名

file - 如何从 MS Word 创建 PCL 文件

python - Python逐行写入文件

r - 获取列表中共享元素的所有组合