Mehr als 2 Merkmale#
Es folgt ein Überblick über Methoden der deskriptiven Statistik für multivariate Daten, wenn mehr als 2 Merkmale gemessen/erhoben wurden. Zu beachten ist hier wieder welche Messbarkeit die erhobenen Merkmale haben.
Maßzahlen#
Vektor mit Maßzahlen#
Die Maßzahlen der univariaten Statistik können pro Merkmal erhoben werden und dann als Vektor oder Tabelle dargestellt werden. Liegen metrische Daten vor, so kann z.B. ein Mittelwertvektor gebildet werden. Dies ist zeigt natürlich nicht den Zusammenhang der Daten, sondern behandelt sie wie einzelne getrennt voneinander erhobene Stichproben.
Umsetzung in R
Hier bietet es sich an, den apply()
-Befehl zu nutzen. Damit kann man eine Funktion auf die Spalten (oder Zeilen) eines data.frame
s anwenden.
apply(iris[,1:4], 2, mean)
- Sepal.Length
- 5.84333333333333
- Sepal.Width
- 3.05733333333333
- Petal.Length
- 3.758
- Petal.Width
- 1.19933333333333
Erkärung des Codes
iris[,1:4]
wählt die ersten 4 Spalten voniris
aus. In der 5. Spalte stehen die Spezies, die möchten wir hier nicht betrachten.Die
2
steht für Spalten, d.h. wir wollen die Funktion auf die Spalten anwenden. Eine1
würde bedeuten, dass wir die Funktion auf die Zeilen anwenden wollen.mean
heißt die Funktion die wir auf jede einzelne Spalte anwenden wollen
Es ist auch möglich eine Funktion selbst zu definieren und diese in den apply
-Befehl einzusetzen. Die ist zum Beispiel nötig, wenn wir den Variationskoeffizient pro Spalte ausrechnen wollen.
varkoeff <- function(x){ sd(x)/mean(x)}
apply(iris[, 1:4], 2, varkoeff)
- Sepal.Length
- 0.14171125977944
- Sepal.Width
- 0.142564201353041
- Petal.Length
- 0.46974407484286
- Petal.Width
- 0.635551141434419
Erkärung des Codes
varkoeff <- function(x){ ... }
bedeutet wir definieren eine neue Funktion. Sie sollvarkoeff
heißen. Hier kann man sich einen beliebigen Namen ausdenken. Der Ausdruckfunction(x)
sagt, dass es eine Funktion ist und das Argumentx
heißt. In die geschweiften Klammern schreibt man, was die Funktion mit demx
macht, also die Bildungsvorschrift.sd(x)/mean(x)
ist die Bildungsvorschrift in unserer Funktion: Berechne die Standardabweichung vonx
und teile diesen Wert durch das arithmetische Mittel vonx
.
Der summary-Befehl#
Eine schnelle Übersicht über viele Maßzahlen liefert der Befehl summary()
.
summary(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width
Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
Median :5.800 Median :3.000 Median :4.350 Median :1.300
Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
Species
setosa :50
versicolor:50
virginica :50
Kovarianzmatrix und Korrelationsmatrix#
Zeigt die Kovarianzen (oder Korrelationskoeffizienten) zwischen allen Variablenpaaren (Diagonalen = Varianzen). Um dies zu verstehen, wiederholen Sie gern Maßzahlen im Abschnitt Zwei metrische Merkmale.
An Stelle \(i,j\) der Matrix steht die Kovarianz (oder der Korrelationskoeffizient) vom \(i\)-tem und \(j\)-tem Merkmal. Die Kovarianz (bzw Korrelation nach Pearson) lässt sich natürlich nur zwischen stetigen Merkmalen erheben. Auf der Diagonalen der Kovarianzmatrix steht jeweils die Varianz. Auf der Diagonalen der Korrelationsmatrix steht immer eine \(1\), denn dies ist der Korrelationskoeffizient von eine Spalte mit sich selbst.
Merke:
Kovarianzmatrix:
An Stelle \((i,j)\) steht die Kovarianz von Spalte \(i\) und Spalte \(j\).
Die Kovarianzmatrix ist symmetrisch: An Stelle \((i,j)\) steht immer der gleiche Wert wie an Stelle \((j,i)\).
Auf der Diagonalen stehen die Varianzen: An Stelle \((i,i)\) steht die Varianz der Daten in Spalte \(i\).
Korrelationsmatrix:
An Stelle \((i,j)\) steht der Korrelationskoeffizient von Spalte \(i\) und Spalte \(j\).
Die Korrelationsmatrix ist symmetrisch: An Stelle \((i,j)\) steht immer der gleiche Wert wie an Stelle \((j,i)\).
Auf der Diagonalen stehen immer \(1\)en.
Umsetzung in R
Wendet man die (schon bekannten) Befehle cov
und cor
auf einen data.frame
mit metrischen Daten an, so wird die Korrelationsmatrix bzw die Kovarianzmatrix erstellt.
cov(iris[,1:4])
cor(iris[,1:4])
Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | |
---|---|---|---|---|
Sepal.Length | 0.6856935 | -0.0424340 | 1.2743154 | 0.5162707 |
Sepal.Width | -0.0424340 | 0.1899794 | -0.3296564 | -0.1216394 |
Petal.Length | 1.2743154 | -0.3296564 | 3.1162779 | 1.2956094 |
Petal.Width | 0.5162707 | -0.1216394 | 1.2956094 | 0.5810063 |
Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | |
---|---|---|---|---|
Sepal.Length | 1.0000000 | -0.1175698 | 0.8717538 | 0.8179411 |
Sepal.Width | -0.1175698 | 1.0000000 | -0.4284401 | -0.3661259 |
Petal.Length | 0.8717538 | -0.4284401 | 1.0000000 | 0.9628654 |
Petal.Width | 0.8179411 | -0.3661259 | 0.9628654 | 1.0000000 |
Graphische Darstellungen#
Heatmap#
Eine Heatmap ist eine Art von visueller Darstellung, die verwendet wird, um komplexe Daten zu visualisieren und zu analysieren. Sie zeigt die Beziehungen zwischen verschiedenen Variablen oder Werten in einer Tabelle oder Matrix.
Eine Heatmap besteht aus einer Tabelle oder Matrix, in der jede Zelle einen Wert darstellt. Die Werte werden in einer Farbskala dargestellt, wobei die Helligkeit oder Intensität der Farbe die Größe oder Stärke des Wertes anzeigt. Die Farben können auch unterschiedliche Nuancen haben, um die Art der Beziehung zwischen den Variablen anzuzeigen.
Eine Heatmap für eine Korrelationsmatrix ist eine besondere Art von Heatmap, die verwendet wird, um die Korrelationen zwischen verschiedenen Variablen in einer Datenmenge zu visualisieren. Hier werden die Korrelationen zwischen den Variablen in einer Farbskala dargestellt. Dadurch kann man schnell erkennen, welche Variablen stark miteinander korreliert sind und welche nicht.
Umsetzung in R: Varinate 1 ohne zusätzliches Paket
# Korrelationsmatrix berechnen
korrelationsmatrix <- cor(iris[, 1:4])
# Heatmap zeichnen
heatmap(korrelationsmatrix, # korrelationsmatrix ist Input
symm=TRUE, # sagt, dass symm. Matrix eigegeben wird
revC = TRUE, # sort für die richtige Reihenfolge d. Zeilen
Rowv = NA,Colv = NA,) # kein Dendrogramm zeichnen
Umsetzung in R: Varinate 2 mit reshape2
und ggplot2
Mit ggplot2
sieht der Heatplot etwas moderner aus. Außerdem haben wir die Möglichkeit die eine Legende für die Farbscala hinzuzufügen.
library(ggplot2)
library(reshape2)
# Korrelationsmatrix berechnen
korrelationsmatrix <- cor(iris[, 1:4])
# Umstrukturieren der Matrix für ggplot2
korrelationsmatrix_melted <- melt(korrelationsmatrix)
ggplot(korrelationsmatrix_melted,
aes(factor(Var1, levels = rev(levels(Var1))), Var2, fill = value)) +
geom_tile() +
scale_fill_gradient2(low = "blue", high = "red", mid = "white", midpoint = 0, limit = c(-1, 1), space = "Lab", name = "Korrelation") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
labs(title = "Heatmap der Korrelationsmatrix", x = "Variablen", y = "Variablen")
Erläuterung des Codes
library(reshape2)
: Hier laden wir die Bibliothekreshape2
, die wir später für die Umstrukturierung der Korrelationsmatrix benötigen.korrelationsmatrix <- cor(iris[, 1:4])
: Berechnet die Korrelationsmatrixkorrelationsmatrix_melted <- melt(korrelationsmatrix)
: Umstrukturierung der Matrix, so dass sie als Eingabe fürggplot2
passt. Diemelt()
-Funktion erstellt eine neue Tabelle, in der jede Zeile eine einzelne Zelle der ursprünglichen Matrix darstellt. Die neuen SpaltenVar1
undVar2
enthalten die Namen der Variablen, die korreliert sind, und die Spaltevalue
enthält die Korrelation zwischen den Variablen.ggplot(korrelationsmatrix_melted, ...)
der plot Befehl vonggplot2
aes()
definiert die Ästhetik der Heatmap.Die
factor()
-Funktion wird verwendet, um die Variablen in der Var1-Spalte in der richtigen Reihenfolge anzuzeigen.Die
geom_tile()
-Funktion erstellt die Heatmap selbst.Die
scale_fill_gradient2()
-Funktion definiert die Farbskala für die Heatmap.Die
theme_minimal()
-Funktion passt die Optik leicht an (ist optional)Die
theme()
-Funktion setzt die Anzeige der Variablen in derVar1
-Spalte.Die
labs()
-Funktion setzt den Titel und die Beschriftungen für die Heatmap.
Streudiagramm-Matrix#
Die paarweise Darstellung aller Streudiagramme der möglichen Variablenkombinationen.
Dies ist schnell erreicht mit dem Befehl pairs()
.
3D-Streudiagramme#
Für drei Variablen lässt sich noch ein Streudiagramm zeichnen. Die ist auch möglich mit Interaktion/Rotation. Halten Sie dazu in der Grafik die linke Maustaste gedrückt und bewegen Sie den Curser.
Wir plotten zunächst 3 Merkmale aus dem iris
- Datensatz. Die Färbung wird entsprechend der Spezies vorgenommen.
library(plotly) # Paket für 3d-Plots
Show code cell output
Attache Paket: ‘plotly’
Das folgende Objekt ist maskiert ‘package:ggplot2’:
last_plot
Das folgende Objekt ist maskiert ‘package:stats’:
filter
Das folgende Objekt ist maskiert ‘package:graphics’:
layout
plot_ly(data = iris , # plot_ly ist der Plot-Befehl aus "plotly",
x = ~Sepal.Length, # data= legt Datensatz fest
y = ~Sepal.Width, # x,y,z = ordnet den Achsen die Spalte zu
z = ~Petal.Width, #
color = ~Species, # Farbe entsprechend der Spezies
type="scatter3d", # es soll ein 3d-Plot entstehen
mode="markers", # werte sollen als Punkte dargestellt werden
size = 0.2) # Größe der Punkte
# Ein weiteres Beispiel mit zufälligen Daten
set.seed(123) # damit bleibt der Zufall jedes mal gleich
temp <- rnorm(100, mean=30, sd=5) # zufällige Temperaturen auswürfeln
pressure <- rnorm(100) # zufälligen Druck auswürfeln
dtime <- 1:100 # Zeitpunkte zuordnen
plot_ly(x=temp, y=pressure, z=dtime,
type="scatter3d", mode="markers",
color=temp) # Farbe entsprechend der Temperatur
Parallele Koordinaten#
Was ist ein Parallel Coordinate Plot?
Ein Parallel Coordinate Plot (deutsch: Parallele Koordinaten-Diagramm) ist eine Visualisierungsmethode zur Darstellung mehrerer numerischer Variablen gleichzeitig. Dabei wird jede Variable auf einer eigenen vertikalen Achse dargestellt, und jede Beobachtung (Zeile im Datensatz) wird als Linie gezeichnet, die die Werte der Beobachtung über die Achsen hinweg verbindet.
Diese Diagrammart eignet sich besonders zur Darstellung von multivariaten Daten mit mehreren numerischen Variablen. Alle Variablen werden auf parallelen Achsen gezeigt, um Muster in Beobachtungen zu erkennen.
Wie erstellt man einen Parallel Coordinate Plot in R?
Für die Erstellung von Parallel Coordinate Plots in R wird häufig das Paket GGally
verwendet, das eine Erweiterung von ggplot2
ist. Wir zeigen dies am Beispiel des iris
Datensatz.
library(ggplot2) # Pakte um schöne Grafiken zu erstellen
library(GGally) # Paket um den Parallel-Koordianten-Plot zu erstellen
Registered S3 method overwritten by 'GGally':
method from
+.gg ggplot2
options_orig<-options() # Anzeigeoptionen speichern
options(repr.plot.width = 14, repr.plot.height = 6) # Anzeigeoptionen ändern (Breite Grafik)
# Parallel Coordinate Plot
ggparcoord(data = iris,
columns = 1:4, # Die Spalten 1 bis 4 (numerische Variablen)
groupColumn = 5, # Gruppierung nach Species
scale = "globalminmax", # Werte auf gleiche Skala bringen
alphaLines = 0.5, # Transparenz der Linien
showPoints = TRUE) + # Punkte für einzelne Werte anzeigen
labs(title = "Parallele Koordinaten-Plot der Iris-Daten",
x = "Merkmale", # Titel und Achsen
y = "Werte") + # Bezeichnungen
theme_minimal() # optionale optische Anpassung
options(options_orig) # Anzeigeoptionen zurücksetzen
Interpretation
Beim Interpretieren eines Parallel Coordinate Plots achtet man auf folgende Aspekte:
Gruppenunterschiede: Linien von verschiedenen Gruppen (z.B. Arten) haben oft ähnliche Verläufe.
Korrelationen: Wenn zwei benachbarte Achsen fast parallele Linien zeigen, deutet dies auf eine positive Korrelation hin. Kreuzen sich die Linien häufig, könnte eine negative Korrelation vorliegen.
Ausreißer: Einzelne Linien, die sich stark von den anderen unterscheiden, können auf Ausreißer hinweisen.
Streuung: Eine breite Streuung der Linien zeigt eine hohe Varianz in den Daten.
Vor- und Nachteile
Vorteile |
Nachteile |
---|---|
Darstellung vieler Variablen |
Schwer lesbar bei großen Datenmengen |
Vergleich von Gruppen möglich |
Interpretation kann schwierig sein |
Identifikation von Ausreißern möglich |
Linien können sich stark überlagern |
Visualisierung von Korrelationen |
Reihenfolge der Achsen beeinflusst das Ergebnis |