R中两个矩阵的相关性

AGH*_*GHA 2 r file

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

A 2 5
B 6 9
c 7 8
Run Code Online (Sandbox Code Playgroud)

第二个是这样的:

D 8 6
E 1 7
F 7 9
Run Code Online (Sandbox Code Playgroud)

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

eip*_*i10 5

这是您要找的吗:

# 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  
Run Code Online (Sandbox Code Playgroud)

输出是相关系数矩阵,其中输出矩阵的行是 的行索引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
Run Code Online (Sandbox Code Playgroud)

您可以rcorrHmisc包中获取显着性水平。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
Run Code Online (Sandbox Code Playgroud)