2017-02-16 22 views
0

Пакет MINERVA предоставляет функцию для выполнения максимального информационного коэффициента (MIC). Описание пакета предусматривает, что функция mine (x, y) работает только с 2 матрицами A и B того же размера.Связь MIC между 2 матрицами в R

Здесь я хотел бы получить значение коэффициента MIC, полученное из корреляции двух матриц A и B разного размера, по существу, A равно n на m, а B - n на z, а n - количество наблюдений (строки). Другими словами, моя цель состоит в том, чтобы получить матрицу C из м х г, который возвращает, для каждого значения, дают значения коэффициентов МИК корреляции (и, если возможно, связанное значение Р, если таковые имеются).

Я предоставляю пример того, что я хочу с корреляцией Пирсона.

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 без успеха, есть ли способ, что я могу применить функцию шахты, чтобы получить желаемый м по г корреляции?

ответ

0

Позвольте мне ответить на мой собственный пост. В приведенном ниже коде я использую функцию цикла, которая может быть не самым умным/быстрым способом сделать это, но работает как ожидалось.

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 
}}