Seite 1 von 1

Heatmap Interpretation und Funktion

Verfasst: Sa Mai 04, 2019 12:28 pm
von brunsi
Hallo Zusammen

Im Rahmen meiner Bachelorarbeit soll ich rausfinden, ob zwischen zwei Kodierungen, die aus kategorischen Werten bestehen und in einer n:m Beziehung kodiert werden, Muster und Abhängigkeiten bestehen.

Ich habe aus den vielen Daten verschiedene Datensets erstellt und aus diesen dann jeweils eine Heatmap mit heatmap.2 erstellt. Bei der Interpretation der Ergebnisse habe ich festgestellt, dass ich wohl zu wenig verstehe, was die heatmap.2 genau macht; was geschieht, wenn ich bspw. nach row oder column skaliere.

Ich habe einige generelle Erklärungen gefunden, jedoch bin ich mir nicht sicher, ob ich das alles richtig verstehe. Hat jemand eventuell gute Literaturtipps, die mir hilft, die Ergebnisse der Heatmap richtig zu interpretieren/verstehen oder kann es mir eventuell sogar hier erklären kurz und knackig erklären oder einige Stichworte lieferen, die für das Verständnis relevant sind?

Liebe Grüsse
S.

Re: Heatmap Interpretation und Funktion

Verfasst: Sa Mai 04, 2019 12:47 pm
von jogo
Hallo Brunsi,

kannst Du bitte die Struktur der Daten und Deinen Code und die Heatmap zeigen?

Gruß, Jörg

Re: Heatmap Interpretation und Funktion

Verfasst: Sa Mai 04, 2019 1:57 pm
von brunsi
Ich hab mal verschiedene Auswertungen gemacht, wo ich scale jeweils angepasst habe.

Code 1

Code: Alles auswählen

heatmap_HNOKapitel80 <- heatmap.2(HNOKapitel80_rix, dendrogram = "both", scale="none",  density.info = "none", trace = 'none',
                                  col=colors, 
                                  main ="test_scalenone",
                                  margins= c(4.7, 6), cexRow=0.7, cexCol=1)
Code 2

Code: Alles auswählen

heatmap_HNOKapitel80 <- heatmap.2(HNOKapitel80_rix, dendrogram = "both", scale="row",  density.info = "none", trace = 'none',
                                  col=colors, 
                                  main ="test_scalerow",
                                  margins= c(4.7, 6), cexRow=0.7, cexCol=1)
Code 3

Code: Alles auswählen

heatmap_HNOKapitel80 <- heatmap.2(HNOKapitel80_rix, dendrogram = "both", scale="row",  density.info = "none", trace = 'none',
                                  col=colors, 
                                  main ="test_scalerow",
                                  margins= c(4.7, 6), cexRow=0.7, cexCol=1)

Re: Heatmap Interpretation und Funktion

Verfasst: Sa Mai 04, 2019 1:58 pm
von brunsi
Und hier noch die Heatmap zu Code1 sowie das Datenset.

Gemäss meinem Verständnis sollte ich aus diesen Heatmaps ableiten können, ob die Kodes der X und der Y Achse korrelieren oder nicht und ob es sich lohnt, diese Thematik weiterzuverfolgen. Mit dem langfristigen Ziel, von den Werte der Y Achse auf die X Achse zu schliessen.

Zu Beginn hatte ich nicht realisiert, dass es eine scale Funktion gibt, weshalb ich davon ausging, je dunkler ein Bereicht, desto besser. Nun bin ich aber durch diese beiden Scale Funktionen sehr verunsichert und stehe wohl grad etwas an

Re: Heatmap Interpretation und Funktion

Verfasst: Sa Mai 04, 2019 11:32 pm
von jogo
Hallo Brunsi,

bei mir kennt R die Funktion heatmap.2() nicht. Hast Du eine Erklärung dafür?

Gruß, Jörg

Re: Heatmap Interpretation und Funktion

Verfasst: So Mai 05, 2019 10:42 pm
von brunsi
Hi Jörg

ich musste das package gplots installieren.

Gruss

Re: Heatmap Interpretation und Funktion

Verfasst: Mo Mai 06, 2019 9:27 am
von jogo
Hallo Brunsi,
brunsi hat geschrieben: So Mai 05, 2019 10:42 pm ich musste das package gplots installieren.
aber das alleine reicht doch nicht. Da muss doch in Deinem Code noch irgendwo

Code: Alles auswählen

library("gplots")
stehen, oder nicht?
ok, ich habe es geschafft, das Paket zu installieren.
Wenn Du mir jetzt noch verrätst, wie ich die Daten einlesen kann, dann haben wir ein reproduzierbares Beispiel im Sinne von
viewtopic.php?f=20&t=11 oder
https://stackoverflow.com/questions/596 ... le-example

Gruß, Jörg

Re: Heatmap Interpretation und Funktion

Verfasst: Mo Mai 06, 2019 11:00 am
von brunsi
Hi Jörg

Anbei der komplette Code.

Damit ich die Daten mit der Funktion "read.csv" einlesen konnte, musste ich erst mit setwd den korrekten Pfad festlegen.

Aus den eingelesenen Daten habe ich eine Data Matrix erstellt, mit der ich dann die Heatmap erstellen konnte.

Liebe Grüsse
Silvia

Code: Alles auswählen

Code: #Library laden
library(gplots)
getwd()

#pfad definieren

setwd("C://Bachelorarbeit//Daten//")
getOption("max.print")
options(max.print=500000)

#read data als CSV
HNOKapitel80 <- read.csv("HNOKapitel_absolout_80.csv", row.names=1, header = TRUE, sep=";")

#Import prüfen
HNOKapitel80

#create datamatrix
HNOKapitel80_rix <- data.matrix(HNOKapitel80)

#Datenatrix prüfen
HNOKapitel80_rix



#Create heatmap.2 mit scaling "none"

heatmap_HNOKapitel80 <- heatmap.2(HNOKapitel80_rix, dendrogram = "both", scale="none",  density.info = "none", trace = 'none',
                                  col=colors, 
                                  main ="test_scalecolumn",
                                  margins= c(4.7, 6), cexRow=0.7, cexCol=1) 
[/b]

Re: Heatmap Interpretation und Funktion

Verfasst: Mo Mai 06, 2019 1:10 pm
von jogo
Hallo Silvia,

Code: Alles auswählen

library("gplots")

#read data als CSV
# http://forum.r-statistik.de/download/file.php?id=526
HNOKapitel80 <- read.csv("http://forum.r-statistik.de/download/file.php?id=526", row.names=1, header = TRUE, sep=";")
HNOKapitel80_rix <- data.matrix(HNOKapitel80) #create datamatrix
# HNOKapitel80_rix #Datenatrix prüfen

#Create heatmap.2 mit scaling "none"
heatmap_HNOKapitel80 <- 
heatmap.2(HNOKapitel80_rix, dendrogram = "both", scale="none",  density.info = "none", trace = 'none',
                                  col=colors, margins= c(4.7, 6), cexRow=0.7, cexCol=1) 
führt bei mir zu dem Fehler:

Code: Alles auswählen

> heatmap_HNOKapitel80 <- 
+ heatmap.2(HNOKapitel80_rix, dendrogram = "both", scale="none",  density.info = "none", trace = 'none',
+                                   col=colors, margins= c(4.7, 6), cexRow=0.7, cexCol=1)
Fehler in image.default(1:nc, 1:nr, x, xlim = 0.5 + c(0, nc), ylim = 0.5 +  : 
  must have one more break than colour
:(
vielleicht ist das so wie hier:
https://stackoverflow.com/questions/368 ... -a-heatmap

So funktioniert das bei mir erstmal:

Code: Alles auswählen

my_palette<- colorRampPalette(c("white","lightskyblue","navyblue"))
#Create heatmap.2 mit scaling "none"
heatmap_HNOKapitel80 <- 
heatmap.2(HNOKapitel80_rix, dendrogram = "both", scale="none",  density.info = "none", trace = 'none',
                                  col=my_palette, margins= c(4.7, 6), cexRow=0.7, cexCol=1) 
Wahrscheinlich bin ich auch nicht schlauer als Du. Ich habe mir noch

Code: Alles auswählen

example(heatmap.2)
angesehen, aber da ich bisher noch nie diese Darstellungen verwendet habe, um irgendetwas daraus zu interpretieren, müsste auch ich erstmal lesen. Auch der Abschnitt Details im Hilfetext der Funktion konnte mich noch nicht erleuchten. :?

Gruß, Jörg

Re: Heatmap Interpretation und Funktion

Verfasst: Mo Mai 06, 2019 4:54 pm
von brunsi
Hi Jörg

Ich hab mich in der Zwischenzeit ausführlich eingelesen. Wählt man eine Skallierung der Daten (scale = "row" oder scale = "column") wird der Z-Score der Werte berechnet (Wert 0 Mittelwert / Standardabweichung), wodurch die sich die werte jeweils um den 0-Wert herum sammeln. Wählt man keine Skallierung aus, erhält jeder Wert der Matrix eine Farbe entsprechend der Farblegende und der Zahl des Wertes. Sobald in den Daten Ausreisser dabei sind, führt des dazu, dass die breite der Legende so gross ist, dass die Ergebnisse "verrissen" werden und nur noch die Ausreisser erkennbar sind.

Liebe Grüsse.
S.