R中两个矩阵的相关性

R中两个矩阵的相关性,r,file,R,File,我有两个矩阵(不同的行和相同的列)。我想计算两个矩阵行之间的相关性。(元素相关)。第一个是这样的: 第二个是这样的: 在这种情况下,结果将是一个3乘3的矩阵(元素之间的相关性,如果可能的话,显著性水平)。我该怎么做呢?这就是你想要的吗: # Create some fake data set.seed(5) # for reproducibility mat1 = matrix(rnorm(20), nrow=4) mat2 = matrix(rnorm(25), nrow=5) cor(t(

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

第二个是这样的:


在这种情况下,结果将是一个3乘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

这就是你想要的吗:

# 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

这就是你想要的吗:

# 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

这就是你想要的吗:

# 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

你的矩阵中是否有两列以上的列?是的,我有50列。下次你举例时,你可能想再增加几列,或者指定实际问题的维度。如果有两列,你只能得到1或-1。你的矩阵中有两列以上吗?是的,我有50列。下次你举例时,你可能想再增加几列,或者指定实际问题的维度。如果有两列,你只能得到1或-1。你的矩阵中有两列以上吗?是的,我有50列。下次你举例时,你可能想再增加几列,或者指定实际问题的维度。如果有两列,你只能得到1或-1。你的矩阵中有两列以上吗?是的,我有50列。下次你举例时,你可能想再增加几列,或者指定实际问题的维度。对于2列,您只能得到1或-1。