R中两个矩阵之间的MIC相关性

R中两个矩阵之间的MIC相关性,r,matrix,correlation,pearson-correlation,R,Matrix,Correlation,Pearson Correlation,MINERVA软件包提供了执行最大信息系数MIC的功能。软件包的说明规定,函数mine x,y仅适用于大小相同的2个矩阵A和B 这里,我想获得从两个不同大小的A和B矩阵的相关性中获得的MIC系数值,分别是,A是n×m,B是n×z,n是观测行数。 换句话说,我的目标是获得一个m x z的C矩阵,它返回每个值,给出MIC相关系数值,如果可能,给出相关的P值(如果有) 我提供了一个皮尔逊相关的例子 set.seed(1) x <- matrix(rnorm(20), nrow=5, ncol=1

MINERVA软件包提供了执行最大信息系数MIC的功能。软件包的说明规定,函数mine x,y仅适用于大小相同的2个矩阵A和B

这里,我想获得从两个不同大小的A和B矩阵的相关性中获得的MIC系数值,分别是,A是n×m,B是n×z,n是观测行数。 换句话说,我的目标是获得一个m x z的C矩阵,它返回每个值,给出MIC相关系数值,如果可能,给出相关的P值(如果有)

我提供了一个皮尔逊相关的例子

set.seed(1)
x <- matrix(rnorm(20), nrow=5, ncol=10)
y <- matrix(rnorm(15), nrow=5, ncol=20)
P <- cor(x, y=y)

我给MINERVA软件包的一位作者发了邮件,但没有成功。我有没有办法应用mine函数来获得所需的m×z相关性?

让我回答我自己的帖子。在下面的代码中,我使用了loop函数,这可能不是实现它的最聪明/最快的方法,但它可以按预期工作

library(minerva)
set.seed(1)
x <- matrix(rnorm(20), nrow=5, ncol=10)
y <- matrix(rnorm(15), nrow=5, ncol=20)

Result = matrix(ncol = ncol(y),nrow = ncol(x))
for(i in 1:ncol(x))
{Thisvar = x[,i]
  print(i)
for(k in 1:ncol(y)) 
  {Thisvar2 = y[,k]
  res = mine(Thisvar,Thisvar2, master=TRUE, use="all.obs")
  Result[i,k] = res$MIC
}}