2017-02-16 4 views
0

Das MINERVA-Paket bietet eine Funktion zur Durchführung des maximalen Informationskoeffizienten (MIC). Die Beschreibung des Pakets besagt, dass die Funktion mine (x, y) nur mit 2 Matrizen A und B gleicher Größe funktioniert.MIC-Korrelation zwischen 2 Matrizen in R

Hier möchte ich den MIC-Koeffizientenwert erhalten aus der Korrelation von zwei A- und B-Matrizen unterschiedlicher Größe erhalten, A ist n durch m und B ist n durch z, wobei n die Anzahl der Beobachtungen ist (Reihen). Mit anderen Worten, ist mein Ziel, eine C-Matrix von m x z, die für jeden Wert zurückkehrt zu erhalten, ist die MHK-Korrelationskoeffizientenwerte geben (und, wenn möglich, der P-Wert zugeordnet ist, wenn überhaupt).

Ich gebe ein Beispiel dafür, was ich mit der Pearson-Korrelation will.

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

I Einen Autor des MINERVA Pakets ohne Erfolg geschickt, gibt es eine Möglichkeit, die Mine Funktion anwenden, um den gewünschten m durch z Korrelation zu erhalten?

Antwort

0

Lassen Sie mich auf meinen eigenen Beitrag antworten. Im folgenden Code verwende ich die Loop-Funktion, die möglicherweise nicht die klügste/schnellste Methode ist, aber es funktioniert wie erwartet.

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