d <- tibble(
A = c(1, 2, 3, 4, 5, 6),
B = c(1, 2, 1, 2, 1, 2)
)5 Kenngrößen und Beschreibung von Verteilungen in R
Übersicht Dataframes für diese Folien
| Name | Inhalt |
|---|---|
d_ns_m |
Monatswerte für Niederschläge in Bochum |
d_ns_m_2008 |
Monatswerte im Jahr 2008 (Bochum) |
d_ns_m_2010 |
Monatswerte im Jahr 2010 (Bochum) |
d_ns_m_0810 |
Monatswerte in den Jahren 2008 und 2010 (Bochum) |
d_ns_m_nha_trang_2015 |
Monatswerte der Niederschläge in Nha Trang 2015 |
Quellen: https://www.dwd.de und https://www.gso.gov.vn
5.1 Kenngrößen von Verteilungen berechnen
Berechnung von Kenngrößen
Lagemaße
| Funktion | Berechnet |
|---|---|
mean(x) |
Arithmetisches Mittel |
median(x) |
Median |
Keine Funktionen für Modus und geometrisches/harmonisches Mittel
Streumaße
| Funktion | Berechnet |
|---|---|
max(x) - min(x) |
Spannweite \(R\) |
var(x) |
Empirische Varianz \(\tilde{s}^2\) |
sd(x) |
Empirische Standardabweichung \(\tilde{s}\) |
Keine Funktion für AD-Streuung
Spalten von Dataframes mit $
Dataframe
Spalten der beiden Merkmale
d$A[1] 1 2 3 4 5 6
d$B[1] 1 2 1 2 1 2
\(\rightarrow\) Merkmal X von Dataframe d als Array mit d$X
Kenngrößen für Merkmale
Merkmal A
Lagemaße
mean(d$A)[1] 3.5
median(d$A)[1] 3.5
Streumaße
max(d$A) - min(d$A)[1] 5
var(d$A)[1] 3.5
sd(d$A)[1] 1.870829
Merkmal B
Lagemaße
mean(d$B)[1] 1.5
median(d$B)[1] 1.5
Streumaße
max(d$B) - min(d$B)[1] 1
var(d$B)[1] 0.3
sd(d$B)[1] 0.5477226
Mit echten Daten…
Niederschlag in Bochum
Beobachtungszeitraum: Spannweite von Merkmal Jahr
max(d_ns_m$Jahr) - min(d_ns_m$Jahr)[1] 86
Mittelwert, Median und Standardabweichung
Im Jahr 2008
mean(d_ns_m_2008$Niederschlag)[1] 72.45
median(d_ns_m_2008$Niederschlag)[1] 71.8
sd(d_ns_m_2008$Niederschlag)[1] 22.23447
Im Jahr 2010
mean(d_ns_m_2010$Niederschlag)[1] 73.05
median(d_ns_m_2010$Niederschlag)[1] 70.15
sd(d_ns_m_2010$Niederschlag)[1] 46.71366
(Zahlenwerte aus dem Skript)
Bestimmte Werte darstellen mit geom_vline() und geom_hline()
Minimalbeispiel (mit Dataframe)
d <- tibble(A = c(1, 2, 3), B = c(0, 4, 5))
ggplot(data = d) +
geom_hline(mapping = aes(yintercept = A)) + geom_vline(mapping = aes(xintercept = B))
- Schnittpunkte mit Achsen via
xinterceptbzw.yintercept
Minimalbeispiel (mit Zahlenwerten)
ggplot() +
geom_hline(yintercept = c(1, 2, 3)) + geom_vline(xintercept = c(0, 4, 5))
- Werte können auch direkt angegeben werden (anstatt aus Dataframe)
- Dann kein Mapping erforderlich
Mit echten Daten…
Histogramm mit Mittelwert
ggplot(data = d_ns_m) +
geom_histogram(mapping = aes(x = Niederschlag), binwidth = 10, boundary = 0) +
geom_vline(xintercept = mean(d_ns_m$Niederschlag), color = "red")
- Ohne
c(...)wenn nur ein Wert dargestellt werden soll - Linienfarbe mit
color
Mit emp. Verteilungsfunktion
ggplot(data = d_ns_m) +
geom_step(mapping = aes(x = Niederschlag), stat = "ecdf") +
geom_hline(yintercept = c(0.2, 0.5, 0.9), color = "blue")
Monatsniederschläge mit Mittelwert
ggplot(data = d_ns_m_0810, mapping = aes(x = Monat, y = Niederschlag, group = Jahr, color = Jahr)) +
geom_hline(yintercept = mean(d_ns_m_0810$Niederschlag)) +
geom_line() + geom_point()
- 3 Layer übereinander, Reihenfolge beachten
- Linien mit
geom_line()(später im Detail)
Abweichungen vom Mittelwert
nmw <- mean(d_ns_m_0810$Niederschlag)
ggplot(data = d_ns_m_0810) +
geom_col(mapping = aes(x = Monat, y = Niederschlag - nmw, fill = Jahr))
- Mittelwert abziehen
- Säulen nebeneinander mit
position = "dodge
5.2 Quantile berechnen mit quantile()
Funktion quantile()
d <- tibble(X = c(1, 2, 2, 4, 4, 6, 6, 6, 9, 10, 10, 12, 13, 13, 13, 16, 17, 18, 19, 20))
quantile(d$X, probs = c(0.2, 0.25, 0.5, 0.9), type = 2) 20% 25% 50% 90%
4.0 5.0 10.0 18.5
Funktionsweise
- Gesuchte Quantilen mit
probs = c(...)angeben - Es gibt verschiedene Definitionen der Quantilwerte
- Unsere Definition mit
type = 2 - Ergebnis ist ein Named Vector
Quantile und emp. Verteilungsfunktion
p <- c(0.2, 0.25, 0.5, 0.9)
q <- quantile(d$X, p, type = 2)
ggplot(data = d) +
geom_hline(yintercept = p, color = "blue") + geom_vline(xintercept = q, color = "red") +
geom_step(mapping = aes(x = X), stat = "ecdf")
- Werte und Quantile in Variablen
pundq
5.3 Boxplots mit geom_boxplot()
Monatliche Niederschläge Bochum (alle Jahre)
ggplot(data = d_ns_m) +
geom_boxplot(mapping = aes(y = Niederschlag))
- Merkmal für y-Koordinate
Monatliche Niederschläge Bochum (2008 und 2010)
ggplot(data = d_ns_m_0810) +
geom_boxplot(mapping = aes(x = Jahr, y = Niederschlag))
- Mehrere Boxplots mit Angabe von Merkmal für x-Koordinate
- Funktioniert nur für diskretes Merkmal (Details später)
Monatliche Niederschläge (alle Jahre einzeln) 1/2
ggplot(data = d_ns_m) +
geom_boxplot(mapping = aes(x = Jahr, y = Niederschlag))
Warum funktioniert das nicht?
- Merkmal
Jahrjetzt mit vielen verschiedenen Ausprägungen - Für ggplot ist das dann ein kontinuierliches Merkmal
- Angabe von
xwird ignoriert, nur eine Box!
Monatliche Niederschläge (alle Jahre einzeln) 2/2
ggplot(data = d_ns_m) +
geom_boxplot(mapping = aes(x = factor(Jahr), y = Niederschlag))
- Mit
factor(Jahr)kennzeichnen, dassJahrdiskretes Merkmal
5.4 Lorenzkurve und Gini-Koeffizient
Aus dem Paket ineq (installieren)
Beispiel aus dem Skript
Lorenzkurve berechnen
d <- tibble(A = c(4, 4, 4, 4, 4), B = c(1, 1, 1, 1, 16), C = c(2, 3, 4, 5, 6))
lc_A <- Lc(d$A)
lc_B <- Lc(d$B)
lc_C <- Lc(d$C)- Funktion
Lcaus Paketineq
Ergebnis
lc_B$p[1] 0.0 0.2 0.4 0.6 0.8 1.0
lc_B$L[1] 0.00 0.05 0.10 0.15 0.20 1.00
- Koordinaten \(u_j\) mit
$pund \(v_j\) mit$L
Als Dataframe (Details später)
Eigene Funktion um Ergebnis von Lc in Dataframe zu konvertieren
lc_to_tibble <- function(lc) { tibble(u = lc$p, v = lc$L) }Beispiel
lc_to_tibble(lc_B)- Eigene Funktion um Dataframe aus Ergebnis von
Lczu erzeugen - Details hierzu später
Bänder mit geom_ribbon()
Minimalbeispiel 1/2
d <- tibble(A = c(1, 2, 3, 4), B = c(1, 0, 1, 3), C = c(3, 5, 6, 5))
ggplot(data = d) + geom_ribbon(mapping = aes(x = A, ymin = B, ymax = C))
- Plottet Bereich zwischen Wertepaaren
yminundymax
Minimalbeispiel 2/2
ggplot(data = d) +
geom_ribbon(mapping = aes(x = A, ymax = C, ymin = 0))
- Es kann auch ein fester Wert angegeben werden
Lorenzkurve Merkmal A (Skript)
ggplot(data = lc_to_tibble(lc_A)) +
geom_ribbon(mapping = aes(x = u, ymin = v, ymax = u), color = "black", fill = "linen") +
geom_point(mapping = aes(x = u, y = v))
- Farben mit
colorundfill
Lorenzkurve Merkmal B (Skript)
ggplot(data = lc_to_tibble(lc_B)) +
geom_ribbon(mapping = aes(x = u, ymin = v, ymax = u), color = "black", fill = "linen") +
geom_point(mapping = aes(x = u, y = v))
- Farben mit
colorundfill
Lorenzkurve Merkmal C (Skript)
ggplot(data = lc_to_tibble(lc_C)) +
geom_ribbon(mapping = aes(x = u, ymin = v, ymax = u), color = "black", fill = "linen") +
geom_point(mapping = aes(x = u, y = v))
- Farben mit
colorundfill
Mit echten Daten…
Niederschläge Bochum (2008)
d <- Lc(d_ns_m_2008$Niederschlag)
ggplot(data = lc_to_tibble(d)) +
geom_ribbon(mapping = aes(x = u, ymin = v, ymax = u), color = "black", fill = "linen") +
geom_point(mapping = aes(x = u, y = v))
Niederschläge Nha Trang (2015)
d <- Lc(d_ns_m_nha_trang_2015$Niederschlag)
ggplot(data = lc_to_tibble(d)) +
geom_ribbon(mapping = aes(x = u, ymin = v, ymax = u), color = "black", fill = "linen") +
geom_point(mapping = aes(x = u, y = v))
Gini-Koeffizient
Wieder aus dem Paket ineq (jetzt installiert)
Minimalbeispiel
Gini(c(0, 0, 0, 0, 1))[1] 0.8
Gini(c(1, 1, 1, 2, 3))[1] 0.25
Gini(c(1, 1, 1, 1, 1))[1] 0
Gini(c(10, 10, 10, 10, 10))[1] 0
- Berechnung des Gini-Koeffizienten mit
Gini(<Werte>) - Der Wert wird nicht normiert
- Normierung auf \(G^*\) falls notwendig mit Faktor \(n / (n - 1)\)
Niederschläge
Gini-Koeffizienten Bochum und Nha Trang
Gini(d_ns_m_2008$Niederschlag)[1] 0.1656315
Gini(d_ns_m_nha_trang_2015$Niederschlag)[1] 0.7196082
Lorenz-Münzer-Koeffizienten Bochum und Nha Trang
12 / 11 * Gini(d_ns_m_2008$Niederschlag)[1] 0.1806889
12 / 11 * Gini(d_ns_m_nha_trang_2015$Niederschlag)[1] 0.7850271
5.5 Zusammenfassung
Linien: geom_hline() & geom_vline()
Werte aus Dataframe
ggplot(data = d) +
geom_hline(mapping = aes(yintercept = <M>), Argumente) +
geom_vline(mapping = aes(xintercept = <M>), Argumente)Werte direkt angegeben
ggplot() +
geom_hline(yintercept = c(...), Argumente) +
geom_vline(xintercept = c(...), Argumente)| AES/Argumente | Beschreibung | Optional |
|---|---|---|
| xintercept | Schnittpunkte mit x-Achse | Nein |
| yintercept | Schnittpunkte mit y-Achse | Nein |
| color | Linienfarbe | Ja |
| size | Linienstärke | Ja |
Boxplots mit geom_boxplot()
ggplot(data = d) +
geom_boxplot(mapping = aes(x = <M>, y = <M>), Argumente)
| AES | Beschreibung | Optional |
|---|---|---|
| x | Merkmal für x-Achse (diskret) | Ja |
| y | Merkmal, das dargestellt werden soll | Nein |
| Argumente | Beschreibung |
|---|---|
| varwidth | Breite entsprechend Anzahl Werte (TRUE oder FALSE) |
Bänder mit geom_ribbon()
ggplot(data = d) +
geom_ribbon(mapping = aes(x = <M>, ymin = <M>, ymax = <M>), Argumente)
| AES | Beschreibung | Optional |
|---|---|---|
| x | Position auf x-Achse | Nein |
| ymin | Unterer Wert | Nein |
| ymax | Oberer Wert | Nein |
| Argumente | Beschreibung |
|---|---|
| color | Linienfarbe |
| fill | Füllfarbe |