R中的相关矩阵

R中的相关矩阵,r,R,我正在关联几个矩阵,其中包含[lat,lon,time]维度。现在,我通过创建一个具有如下循环的函数来实现这一点: GetCorrelation <- function(x,y){ #defining dimension out_tot <- matrix(NA,nrow=size[1],ncol=size[2]) for(i in 1:length(loni)){ for(j in 1:length(lati)){

我正在关联几个矩阵,其中包含[lat,lon,time]维度。现在,我通过创建一个具有如下循环的函数来实现这一点:

  GetCorrelation <- function(x,y){
    #defining dimension     
     out_tot  <- matrix(NA,nrow=size[1],ncol=size[2])
     for(i in 1:length(loni)){
         for(j in 1:length(lati)){

          out_tot[i,j] <- cor(x[i,j,],y[i,j,],method="spearman",use="na.or.complete")

           }    
      }

         return(out_tot)
    }

GetCorrelation该命令实际上非常简单:cor(df):

您可以根据自己的需求进行扩展

对于矩阵,以下内容可能有用:

Mantel检验(两个距离矩阵之间的相关性(R)

您还可以尝试将矩阵转换为向量(通过as.vector(m)或as.vector(t(m)),将这些向量组合为数据帧的列,然后运行cor(df)。由于每列将表示一个矩阵,因此cor(df)将表示矩阵之间的相关矩阵

ddf = structure(list(vnum1 = c(0.715897737792417, 0.299617190296728, 
-1.02251319233659, -0.862117012932794, 1.44997632983787, 1.65615043993346, 
0.945107258196299, 0.568115024409375, 1.20791502923882, -1.04639514112998
), vnum2 = c(0.287509825313464, 0.19995830883272, 0.848034866852686, 
0.544316479703411, 0.160545825958252, 0.398045151494443, 0.121440409682691, 
0.0364419857505709, 0.105769601417705, 0.217918869107962), vint1 = c(2L, 
7L, 2L, 3L, 4L, 10L, 5L, 4L, 2L, 9L), vint2 = c(8L, 12L, 6L, 
5L, 3L, 3L, 7L, 12L, 11L, 8L)), .Names = c("vnum1", "vnum2", 
"vint1", "vint2"), row.names = c(NA, 10L), class = "data.frame")

ddf
        vnum1      vnum2 vint1 vint2
1   0.7158977 0.28750983     2     8
2   0.2996172 0.19995831     7    12
3  -1.0225132 0.84803487     2     6
4  -0.8621170 0.54431648     3     5
5   1.4499763 0.16054583     4     3
6   1.6561504 0.39804515    10     3
7   0.9451073 0.12144041     5     7
8   0.5681150 0.03644199     4    12
9   1.2079150 0.10576960     2    11
10 -1.0463951 0.21791887     9     8

cor(ddf)

            vnum1      vnum2       vint1       vint2
vnum1  1.00000000 -0.5660315  0.09141771 -0.08964374
vnum2 -0.56603151  1.0000000 -0.17904374 -0.47127521
vint1  0.09141771 -0.1790437  1.00000000 -0.15697672
vint2 -0.08964374 -0.4712752 -0.15697672  1.00000000
> 
cor(matrix1, matrix2)
cor(c(matrix1), c(matrix2)).
cor(c(as.matrix(matrix1)), c(as.matrix(matrix2)))
diag(cor(a,b))
mapply(cor(a,b))
colCors(a,b)
library(ade4)
mantel.rtest(m1, m2, nrepet = 99)