Kapitel 2 · Univariate deskriptive Statistik
Grafische Darstellungen
Diagramme für diskrete Merkmale
- Stabdiagramm: über jeder Ausprägung ein senkrechter Strich der Höhe (oder ) — höhenproportional.
- Säulendiagramm: wie Stabdiagramm, aber mit Rechtecken (Breite bedeutungslos).
- Kreisdiagramm: flächenproportional, Sektorwinkel .
Da Flächen optisch leicht falsch eingeschätzt werden, sind Kreisdiagramme nur für nominale Merkmale zu empfehlen; sonst Stab-/Säulendiagramme.
Übungsaufgabe Biersorten — Diagrammwahl & Kreiswinkel
Interpretiere die Tabelle als Ergebnis einer eindimensionalen Häufigkeitsanalyse:
| Biersorte | Helles | Bockbier | Pilsener | Rauchbier |
|---|---|---|---|---|
| Umsatz (in Mio. €) | 10 | 4,5 | 15 | 0,5 |
Stelle die Biersorten mit ihren Umsätzen grafisch dar. Begründe deine Wahl der Diagrammart und beschrifte die Darstellung.
R R-Lösung anzeigen
umsatz <- c(Helles = 10, Bockbier = 4.5, Pilsener = 15, Rauchbier = 0.5)
barplot(umsatz, main = "Umsatz je Biersorte", ylab = "Umsatz (Mio. Euro)")
pie(umsatz, main = "Umsatzanteile") # Kreisdiagramm
umsatz / sum(umsatz) # relative Häufigkeiten relative Haeufigkeiten (Helles, Bockbier, Pilsener, Rauchbier):
0.33333 0.15000 0.50000 0.01667 Lösung
0/5 aufgedecktDas Histogramm — Fläche statt Höhe
Bei vielen Ausprägungen bildet man Klassen der Breite und zeichnet Rechtecke mit
Genau hier liegt die häufigste Falle: Nur bei konstanter Klassenbreite ist das Histogramm höhenproportional. Bei ungleichen Breiten zählt die Fläche. Probiere es — verschiebe die Klassenanzahl und beobachte, wie sich Form und Dichte ändern, während die Gesamtfläche stets 1 bleibt:
Faustregeln für die Klassenanzahl: oder .
Übung: Histogramme von Hand und in R
Übungsaufgabe Fermentationstemperaturen — Histogramm mit gleichen Klassen
In einem Bioprozess wurden bei verschiedenen Fermentationsläufen folgende Temperaturen in Grad Celsius erfasst ():
7.9, 8.1, 8.2, 8.3, 8.5, 8.5, 8.5, 8.6, 8.6, 8.6, 8.7, 8.7, 8.8, 8.8, 8.8, 8.8, 8.9, 8.9, 8.9, 8.9, 8.9, 8.9, 9.0, 9.0, 9.0, 9.0, 9.0, 9.1, 9.1, 9.2, 9.2, 9.2, 9.2, 9.2, 9.3, 9.4, 9.4, 9.4, 9.4, 9.5, 9.5, 9.5, 9.8, 9.8, 9.9, 9.9, 10.0, 10.0, 10.0, 10.2
Erstelle ein Histogramm der absoluten Häufigkeiten mit gleich breiten Klassen. Wie viele Klassen hältst du für angemessen? Beschrifte das Histogramm.
R R-Lösung anzeigen
temp <- c(7.9,8.1,8.2,8.3,8.5,8.5,8.5,8.6,8.6,8.6,8.7,8.7,8.8,8.8,8.8,8.8,
8.9,8.9,8.9,8.9,8.9,8.9,9.0,9.0,9.0,9.0,9.0,9.1,9.1,9.2,9.2,9.2,
9.2,9.2,9.3,9.4,9.4,9.4,9.4,9.5,9.5,9.5,9.8,9.8,9.9,9.9,10.0,
10.0,10.0,10.2)
hist(temp, breaks = seq(7.9, 10.3, by = 0.3),
main = "Fermentationstemperatur, n = 50",
xlab = "Temperatur (Grad C)", ylab = "abs. Klassenhäufigkeit") # 8 Klassen, Höhen: 3 4 9 13 10 3 7 1 Lösung
0/8 aufgedecktÜbungsaufgabe Gewicht — Histogramme & Klasseneinteilung in R
Gegeben sind Messwerte des Merkmals „Gewicht” in Kilogramm (, hier gekürzt dargestellt — vollständig im R-Code unten):
51, 54, 55, 57, 58, …, 103, 104, 106, 107, 108
Visualisiere die Daten mithilfe von Histogrammen in R. a) Welche Klassen schlägt R vor? b) Ändere die Klassen auf sowie . c) Finde eine eigene Klasseneinteilung und beschrifte das Histogramm. d) Gestalte ein Histogramm farbig. e) Erstelle einen Report mit allen Histogrammen.
R R-Lösung anzeigen
Gewicht <- c(51,54,55,57,58,58,58,59,60,60,62,62,62,63,63,63,64,65,65,65,
66,66,66,68,68,68,69,69,69,69,70,70,71,72,72,73,75,78,79,79,
80,80,81,81,82,82,83,83,84,84,84,84,85,86,86,87,87,87,87,87,
88,88,88,88,89,90,90,90,90,90,91,91,91,92,92,92,92,92,93,93,
93,94,95,95,95,95,96,97,97,98,98,98,100,100,100,103,104,106,
107,108)
hist(Gewicht) # a) Auto-Klassen
hist(Gewicht, breaks = seq(50, 110, by = 15)) # b) gleich breit
hist(Gewicht, breaks = c(50, 80, 95, 110)) # ungleich -> Dichte
hist(Gewicht, breaks = seq(50, 110, by = 5), # c)-d) beschriftet + farbig
main = "Verteilung des Gewichts, n = 100",
xlab = "Gewicht (in kg)", ylab = "Klassenhäufigkeit",
col = heat.colors(12)) # Auto-Klassen: Breite 10 von 50 bis 110 Lösung
0/6 aufgedecktÜbung: Funktionen und Daten in R zeichnen
Neben Verteilungen lassen sich auch Funktionsverläufe und eingelesene Datensätze als Linien darstellen:
Übungsaufgabe Sinusfunktion in R zeichnen
Gegeben ist die Funktion
Stelle die Funktion in R grafisch dar (Liniendiagramm). Das Seitenverhältnis der Achsen ist nicht relevant.
R R-Lösung anzeigen
x <- seq(0, 2*pi, length.out = 100) # Definitionsbereich [0, 2pi]
f.von.x <- sin(2*x) # f(x) = sin(2x)
plot(x = x, y = f.von.x, type = "l",
main = "Sinus mit Periode pi",
ylab = "sin(2x)", col = "blue", lwd = 2) # Liniendiagramm: zwei volle Sinusschwingungen auf [0, 2pi] Lösung
0/5 aufgedecktÜbungsaufgabe Datei einlesen & Liniendiagramm (SLY.dat) in R
Ein Datensatz liegt als Textdatei SLY.dat vor (Spalten ).
Der Wert NA bedeutet in R eine fehlende Beobachtung.
Bearbeite in R: a) Verschaffe dir einen Überblick über den Aufbau der Datei.
b) Lies sie in das Objekt SLY.df ein. c) Prüfe, ob korrekt eingelesen
wurde, und lass dir die Struktur ausgeben. d) Erstelle ein gemeinsames
Liniendiagramm der Merkmale in Abhängigkeit von .
📥 Datei: SLY.dat
R R-Lösung anzeigen
SLY.df <- read.table(file = "SLY.dat",
header = TRUE, sep = ":", dec = "~")
str(SLY.df) # Struktur (NA = fehlend)
plot(SLY.df$X, SLY.df$Y1, type = "l", col = "orange",
xlab = "X", ylab = "Y")
lines(SLY.df$X, SLY.df$Y2)
lines(SLY.df$X, SLY.df$Y3)
lines(SLY.df$X, SLY.df$Y4) 'data.frame': 5464 obs. of 5 variables:
$ X : num 0 0 0 0 0 ...
$ Y1: num 48.8 48.8 48.9 49 49 ...
$ Y2: num NA NA NA NA NA ... Lösung
0/6 aufgedecktÜbungsaufgabe Wetterdaten erkunden — Einlesen, Plots & Kennzahlen (DWD)
Der Deutsche Wetterdienst stellt tagesgenaue Messdaten 2015 für
München-Flughafen als Textdatei DWD.txt bereit. Löse in R: a) Speichere
die Datei. b) Lies sie als DWD.df ein. c) Stelle dar: (i)
„NIEDERSCHLAGSHOEHE_IND” als Kreisdiagramm, (ii) „LUFTTEMPERATUR_MAXIMUM” als
Histogramm und Box-Plot, (iii) „LUFTTEMPERATUR_MAXIMUM” über „MESS_DATUM” als
Liniendiagramm. d) Wie viele Stunden scheint die Sonne im Mittel pro Tag?
Bestimme außerdem Standardabweichung und Spannweite der Sonnenscheindauer.
📥 Datei: DWD.txt
R R-Lösung anzeigen
DWD.df <- read.table("DWD.txt", header = TRUE, sep = ";", dec = ".")
str(DWD.df)
pie(table(DWD.df$NIEDERSCHLAGSHOEHE_IND), main = "Niederschlag (Indikator)")
hist(DWD.df$LUFTTEMPERATUR_MAXIMUM, main = "Max. Temperatur", xlab = "Grad C")
boxplot(DWD.df$LUFTTEMPERATUR_MAXIMUM)
plot(DWD.df$MESS_DATUM, DWD.df$LUFTTEMPERATUR_MAXIMUM, type = "l")
mean(DWD.df$SONNENSCHEINDAUER) # mittlere Sonnenstunden/Tag
sd(DWD.df$SONNENSCHEINDAUER) # Standardabweichung
diff(range(DWD.df$SONNENSCHEINDAUER)) # Spannweite 'data.frame': 365 obs. of 18 variables:
$ MESS_DATUM: chr "2015-01-01" ...
$ LUFTTEMPERATUR_MAXIMUM: num ... Lösung
0/7 aufgedecktForm der Verteilung
- Modalität: unimodal (ein Gipfel), bimodal (zwei), multimodal (mehrere).
- Symmetrie/Schiefe: linkssteil (rechtsschief, Ausläufer nach rechts) vs. rechtssteil (linksschief, Ausläufer nach links).
Klausurfalle: »Höhe = Häufigkeit« stimmt nur bei gleichen Klassenbreiten. Bei ungleichen Breiten ist die Fläche die Häufigkeit.
Abruf-Quiz
Frage 1 / 3Beim Histogramm mit ungleichen Klassenbreiten ist proportional zur Häufigkeit die …