簡體   English   中英

R中兩個矩陣的相關性

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM