<- tibble(
d A = c(1, 2, 3, 4, 5, 6),
B = c(1, 2, 1, 2, 1, 2)
)
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
1. Kenngrößen von Verteilungen berechnen
Berechnung von Kenngrößen
Lagemaße
Funktion | Berechnet |
---|---|
mean(x) |
Arithmetisches Mittel |
median(x) |
Median |
Keine eingebauten Funktionen für Modus und geometrisches/harmonisches Mittel (selber definieren)
Streumaße
Funktion | Berechnet |
---|---|
max(x) - min(x) |
Spannweite \(R\) |
var(x) |
Empirische Varianz \(\tilde{s}^2\) |
sd(x) |
Empirische Standardabweichung \(\tilde{s}\) |
Variationskoeffizient \(v\) aus sd(x)/mean(x)
berechnen, keine eingebaute Funktion für AD-Streuung
Spalten von Dataframes mit $
Dataframe
kable(d)
A | B |
---|---|
1 | 1 |
2 | 2 |
3 | 1 |
4 | 2 |
5 | 1 |
6 | 2 |
Spalten der beiden Merkmale
$A d
[1] 1 2 3 4 5 6
$B d
[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)
2. Bestimmte Werte darstellen mit geom_vline()
und geom_hline()
Minimalbeispiel (mit Dataframe)
<- tibble(A = c(1, 2, 3), B = c(0, 4, 5))
d ggplot(data = d) +
geom_hline(mapping = aes(yintercept = A)) + geom_vline(mapping = aes(xintercept = B))
- Schnittpunkte mit Achsen via
xintercept
bzw.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) +
geom_hline(yintercept = mean(d_ns_m_0810$Niederschlag)) +
geom_line(mapping=aes(x=Monat,y=Niederschlag,group=Jahr,color=Jahr)) +
geom_point(mapping=aes(x=Monat, y=Niederschlag, color=Jahr))
- 3 Layer übereinander, Reihenfolge beachten
- Linien mit
geom_line()
(später im Detail)
Abweichungen vom Mittelwert
<- mean(d_ns_m_0810$Niederschlag)
nmw ggplot(data=d_ns_m_0810) +
geom_col(mapping = aes(x = Monat, y = Niederschlag - nmw, fill = Jahr))
- Säulen nebeneinander mit
position = "dodge
3. Quantile berechnen mit quantile()
Funktion quantile()
<- tibble(X = c(1,2,2,4,4,6,6,6,9,10,10,12,13,13,13,16,17,18,19,20))
d 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
<- c(0.2, 0.25, 0.5, 0.9)
p <- quantile(d$X, p, type=2)
q 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
p
undq
4 Boxplots mit geom_boxplot()
Niederschlag Bochum
Monatliche Niederschläge (alle Jahre)
ggplot(data = d_ns_m) +
geom_boxplot(mapping = aes(y = Niederschlag))
- Merkmal für y-Koordinate
Monatliche Niederschläge (Jahre 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))
Warning: Continuous x aesthetic
ℹ did you forget `aes(group = ...)`?
Warum funktioniert das nicht?
- Merkmal
Jahr
jetzt mit vielen verschiedenen Ausprägungen - Für ggplot ist das dann ein kontinuierliches Merkmal
- Angabe von
x
wird 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, dassJahr
diskretes Merkmal
5. Lorenzkurve
Aus dem Paket ineq
(installieren)
Beispiel aus dem Skript
Lorenzkurve berechnen
<- tibble(A = c(4, 4, 4, 4, 4), B = c(1, 1, 1, 1, 16), C = c(2, 3, 4, 5, 6))
d <- Lc(d$A)
lc_A <- Lc(d$B)
lc_B <- Lc(d$C) lc_C
- Funktion
Lc
aus Paketineq
Ergebnis
$p lc_B
[1] 0.0 0.2 0.4 0.6 0.8 1.0
$L lc_B
[1] 0.00 0.05 0.10 0.15 0.20 1.00
- Koordinaten \(u_j\) mit
$p
und \(v_j\) mit$L
Als Dataframe (Details später)
Funktion um Ergebnis von Lc
in Dataframe zu konvertieren
<- function(lc) {
lc_to_tibble tibble(u = lc$p, v = lc$L)
}
Beispiel
kable(lc_to_tibble(lc_B))
u | v |
---|---|
0.0 | 0.00 |
0.2 | 0.05 |
0.4 | 0.10 |
0.6 | 0.15 |
0.8 | 0.20 |
1.0 | 1.00 |
- Eigene Funktion um Dataframe aus Ergebnis von
Lc
zu erzeugen - Details hierzu später
6. Bänder mit geom_ribbon()
Minimalbeispiel 1/2
<- tibble(A = c(1, 2, 3, 4), B = c(0, 0, 1, 2), C = c(3, 5, 6, 6))
d ggplot(data = d) + geom_ribbon(mapping = aes(x = A, ymin = B, ymax = C))
- Plottet Bereich zwischen Wertepaaren
Minimalbeispiel 2/2
ggplot(data = d) +
geom_ribbon(mapping = aes(x = A, ymax = C, ymin = 0))
- Es kann auch ein fester Wert angegeben werden
- Anmerkung: Das geht auch mit anderen Geoms
Lorenzkurve Merkmal A (Skript S.45)
ggplot(data = lc_to_tibble(lc_A)) +
geom_ribbon(mapping = aes(x = u, ymin = v, ymax = u), color = 'black', fill = 'light blue') +
geom_point(mapping = aes(x = u, y = v))
- Farben mit
color
undfill
Lorenzkurve Merkmal B (Skript S.45)
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
color
undfill
Lorenzkurve Merkmal C (Skript S.45)
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
color
undfill
Mit echten Daten…
Niederschläge Bochum (2008)
<- Lc(d_ns_m_2008$Niederschlag)
lc_bochum ggplot(data = lc_to_tibble(lc_bochum)) +
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)
<- Lc(d_ns_m_nha_trang_2015$Niederschlag)
lc_nha_trang ggplot(data = lc_to_tibble(lc_nha_trang)) +
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(1, 1, 1, 1, 1))
[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
8. 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 |