2017-08-16 6 views
1

Ich analysiere bestimmte Daten mehrerer Beobachtungen mit mehreren Variablen und visualisiere sie über Heatmaps, um Reihen- und Spaltenumlagerungen mit Clusterbildung und Dendrogrammbildung durchzuführen. Ich verwende heatmap.2() Funktion von Rs Gplots-Bibliothek. Bestimmte Zeilen (typischerweise mehrere letzte) von Beobachtungen müssen jedoch von der Analyse ausgeschlossen werden, da sie einige Teilsummen sind, aber sie müssen an ihrer Stelle in das Dendrogramm aufgenommen werden. Das heißt, ich muss Clustering für Daten durchführen, ohne diese Zeilen für die Skalierung usw. zu berücksichtigen, sondern schließe sie an den letzten Positionen mit konserviertem Farbschema ein. Hier ist das minimale Beispiel von Daten und Manipulationenr heatmap.2: Verhindern, dass einige Matrixzeilen im Dendrogramm manipuliert werden

# load library and create some data 
library(gplots) 
my_palette <- colorRampPalette(c("red", "yellow", "green"))(n = 299) 
df<-read.csv(text="experiment,var1,var2 
1,5,4 
2,3,2 
3,2.3,1 
4,3,4 
sum1,3,5 
sum2,4,5") 

# arrange data so that it has the structure of datamatrix with original names 
rname<-df[,1] 
df<-df[,-1] 
rownames(df)<-rname 
df.matr<-data.matrix(df) 

Weiter Ich baue das Dendrogramm mit Clustering nur durch Beobachtungen (Zeilen) und benutzerdefinierte Farbpalette. Die Skalierung erfolgt über Spalten. Hier

heatmap.2(df.matr,cellnote=df.matr,scale="column",col=my_palette,trace="none",density.info="none",notecol="black",dendrogram="row",Colv="NA") 

ist das Ergebnis: dendrogram and heatmap

Wie es zu sehen ist, sind die letzten Zeilen, sum1 und sum2, nahmen an Clustering-Umlagerung; Vermutlich wurden sie auch für die Berechnung von Durchschnitten und Abweichungen für die Datenskalierung verwendet. Aus bestimmten Gründen kann dies unerwünscht sein (diese Zeilen können bereits teilweise Summen sein oder von einer anderen Population stammen); Sie müssen jedoch im endgültigen Dendrogramm auf derselben Grundlage enthalten und visualisiert werden. Ich könnte diese Zeilen vor der Analyse löschen, aber wie setze ich sie wieder ein? Oder vielleicht gibt es eine eingebaute Lösung im Paket selbst?

Antwort

1

Eine mögliche Lösung ist die Verwendung des Pakets pheatmap. Ich würde entfernen Reihen sum1 und sum2, ein Dendrogramm bauen, dann fügen Sie sum1 und sum2 als Anmerkung auf der Heatmap: heatmap Sie können auch Farbe der Anmerkungsleiste ändern in der Heatmap verwendeten Farben entsprechen.

Verwandte Themen