Ich habe eine Korrelationsmatrix R in und ich möchte, wie viele Gruppen (und setzen diese Gruppen in Vektoren) kennen von Elementen zwischen ihnen in mehr als 95% zu korrelieren.exctract korrelierten Elementen einer Korrelationsmatrix
X <- matrix(0,3,5)
X[,1] <- c(1,2,3)
X[,2] <- c(1,2.2,3)*2
X[,3] <- c(1,2,3.3)*3
X[,4] <- c(6,5,1)
X[,5] <- c(6.1,5,1.2)*4
cor.matrix <- cor(X)
cor.matrix <- cor.matrix*lower.tri(cor.matrix)
cor.vector <- which(cor.matrix>0.95, arr.ind=TRUE)
cor.vector
dann enthält:
row col
[1,] 2 1
[2,] 3 1
[3,] 3 2
[4,] 5 4
Das heißt, wie zu erwarten, dass die Vektoren 1,2 und 3 Korrelat zwischen ihnen, und auch 4 und 5
Was ich brauchen würde ist es, zwei Vektoren c(1,2,3)
und c(4,5)
als Endergebnis zu erhalten.
Dies ist ein einfaches Beispiel, bin ich die Verarbeitung obwohl große Matrizen.
ist es möglich, dass '1-2',' 1-3' korreliert sind, aber '2-3' nicht? – Nishanth
Es ist nicht. Wenn 1-2 und 1-3 korrelieren, dann müssen 2-3 in derselben Gruppe enthalten sein. Es ist eine besondere Bedingung für das, was ich brauche. – Xavi
Ein naiver Ansatz wäre es, alle zu testen paarweise Reihenkombinationen von 'cor.vector' über' Summe (is.element (i, j))> 0 'und, wenn sie ein gemeinsames Element teilen, dann verbinden Sie sie und geht auf. Wie könnte es wahrscheinlich effiziente Art und Weise sein, die Lösung zu bekommen, wage ich nicht dies als eine Antwort zu schreiben ... –