2013-04-08 16 views
6

Ich versuchte, ein Diagramm aus der Korrelationsmatrix zu machen und drei Farben zu haben, um die Korrelationskoeffizienten unter Verwendung des Bibliotheksgitters darzustellen.Heatmap oder Plot für eine Korrelationsmatrix

library(lattice) 

levelplot(cor) 

ich erhalten die folgende Handlung:

Plot of correlation matrix

Das Grundstück ist nur für eine Teilmenge der Daten, die ich hatte. Wenn ich den ganzen Datensatz verwende (400X400), wird es unklar und die Färbung wird nicht richtig dargestellt und wird als Punkte angezeigt. Ist es möglich, dasselbe für eine große Matrix in Form einer Kachel zu erhalten?

Ich habe versucht, mit der Funktion pheatmap, aber ich möchte nicht meine Werte gruppiert werden und wollen nur eine Darstellung der hohen und niedrigen Werte deutlich in einer Kachelform.

+0

Haben Sie versucht, die png-Auflösung zu erhöhen? Sagen wir, 4 Pixel pro Variable = 4x400 wird zu 1600x1600 png image. – Marek

+0

Es tut mir leid, ich verstehe nicht, wie man das macht und habe es nicht versucht – user2258452

+0

Sie könnten Bild in PNG schreiben zB: 'png (" cor.png ", 1600,1600); drucken (levelplot (cor)); dev. aus() '. – Marek

Antwort

0

@Lucas bietet hier einen guten Rat, da corrplot sehr nützlich für die Visualisierung von Korrelationsmatrizen ist. Es behandelt jedoch nicht das ursprüngliche Problem der Darstellung einer großen Korrelationsmatrix. In der Tat wird corrplot auch fehlschlagen, wenn man versucht, diese große Korrelationsmatrix zu visualisieren. Für eine einfache Lösung sollten Sie in Betracht ziehen, die Anzahl der Variablen zu reduzieren. Das heißt, ich würde vorschlagen, die Korrelation zwischen einer Teilmenge von Variablen zu betrachten, von denen Sie wissen, dass sie für Ihr Problem wichtig sind. Zu versuchen, die Korrelationsstruktur dieser vielen Variablen zu verstehen, wird eine schwierige Aufgabe sein (selbst wenn Sie sie visualisieren können)!

+0

Wie viele Variablen ist "groß", bitte? – smci

12

Wenn Sie eine Korrelationsplot tun möchten, verwenden Sie die corrplot Bibliothek als es viel Flexibilität hat Heatmap-ähnliche Zahlen für Korrelationen

library(corrplot) 
#create data with some correlation structure 
jnk=runif(1000) 
jnk=(jnk*100)+c(1:500, 500:1) 
jnk=matrix(jnk,nrow=100,ncol=10) 
jnk=as.data.frame(jnk) 
names(jnk)=c("var1", "var2","var3","var4","var5","var6","var7","var8","var9","var10") 

#create correlation matrix 
cor_jnk=cor(jnk, use="complete.obs") 
#plot cor matrix 
corrplot(cor_jnk, order="AOE", method="circle", tl.pos="lt", type="upper",   
tl.col="black", tl.cex=0.6, tl.srt=45, 
     addCoef.col="black", addCoefasPercent = TRUE, 
     p.mat = 1-abs(cor_jnk), sig.level=0.50, insig = "blank") 

enter image description here Der obige Code nur bringt Farbe in den Korrelationen zu erstellen das haben> abs (0,5) Korrelation, aber Sie können das leicht ändern. Schließlich gibt es viele Möglichkeiten, wie Sie auch das Aussehen des Plots konfigurieren können (ändern Sie den Farbverlauf, die Anzeige der Korrelationen, die Anzeige der vollen gegenüber der halben Matrix usw.). Das Argument order ist besonders nützlich, da es Ihnen ermöglicht, Ihre Variablen in der Korrelationsmatrix auf der Basis von PCA zu sortieren, sodass sie auf der Grundlage von Ähnlichkeiten in der Korrelation geordnet sind.

Für Quadrate zum Beispiel (ähnlich Ihren ursprünglichen Plot) - nur die Methode Quadrate ändern: enter image description here

EDIT: @Carson. Sie können diese Methode immer noch für sinnvolle große Korrelationsmatrizen verwenden, zum Beispiel eine 100-Variable-Matrix unten. Darüber hinaus sehe ich nicht, wie eine grafische Darstellung einer Korrelationsmatrix mit so vielen Variablen ohne eine gewisse Teilmenge erstellt werden kann, da dies sehr schwer zu interpretieren ist. enter image description here

Verwandte Themen