[英]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.