[英]correlation of two matrices in R
我有两个矩阵(不同的行和相同的列)。 我想计算两个矩阵的行之间的相关。 (元素相关性)。第一个是这样的:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.