#install.packages("gapminder")
library(gapminder)
data("gapminder")
<- gapminder d
vis-gapminder
Aufgabe
In dieser Fallstudie (YACSDA: Yet another Case Study on Data Analysis) untersuchen wir den Datensatz gapminder
.
Sie können den Datensatz so beziehen:
Oder so:
<- read.csv("https://vincentarelbundock.github.io/Rdatasets/csv/gapminder/gapminder.csv") d
Ein Codebook finden Sie hier.
Die Forschungsfrage lautet:
Was ist der Einfluss des Kontinents und des Bruttosozialprodukts auf die Lebenswartung?
- Abhängige Variable (metrisch),
y
: Lebenserwartung - Unabhängige Variable 1 (nominal),
x1
: Kontinent - Unabhängige Variable 2 (metrisch),
x2
: Bruttosozialprodukt
Visualisieren Sie dazu folgende Aspekte der Forschungsfrage!
Aufgaben
- Visualisieren Sie die Verteilung von
y
auf zwei verschiedene Arten. - Fügen Sie relevante Kennzahlen zur letzten Visualisierung hinzu.
- Visualisieren Sie die Verteilung von
x1
undx2
. - Visualisieren Sie die Verteilung von
y
bedingt aufx1
. - Fügen Sie relevante Kennzahlen zur letzten Visualisierung hinzu.
- Visualisieren Sie den Zusammenhang von
y
undx2
. - Verbessern Sie das letzte Diagramm, so dass es übersichtlicher wird.
- Fügen Sie dem letzten Diagramm relevante Kennzahlen hinzu.
- Fügen Sie dem Diagramm zum Zusammenhang von
y
undx2
eine Regressionsgerade hinzu. - Ersetzen Sie die Regressionsgerade durch eine LOESS-Gerade.
- Gruppieren Sie das letzte Diagramm nach
x1
. - Dichotomisieren Sie
y
und zählen Sie die Häufigkeiten. Achtung: Dichotomisieren wird von einigen Statistikern mit Exkommunikation bestraft. Proceed at your own risk. - Gruppieren Sie das letzte Diagramm nach den Stufen von
x1
. - Variieren Sie das letzte Diagramm so, dass Anteile (relative Häufigkeiten) statt absoluter Häufigkeiten gezeigt werden.
Hinweise:
- Orientieren Sie sich im Übrigen an den allgemeinen Hinweisen des Datenwerks.
Lösung
Pakete starten
library(tidyverse)
library(easystats)
library(ggpubr)
library(ggstatsplot)
Los geht’s
Umbenennen
Zur einfacheren Verarbeitung nenne ich die Variablen um:
<-
d |>
d rename(y = lifeExp, x1 = continent, x2 = gdpPercap)
Visualisieren Sie die Verteilung von y
auf zwei verschiedene Arten.
Das R-Paket ggpubr
erstellt schöne Diagramme (basierend auf ggplot
) auf einfache Art. Nehmen wir ein Dichtediagramm; die Variable y
soll auf der X-Achse stehen:
ggdensity(d, x = "y")
Beachten Sie, dass die Variable in Anführungsstriche gesetzt werden muss: x = "y"
.
Oder ein Histogramm:
gghistogram(d, x = "y")
Warning: Using `bins = 30` by default. Pick better value with the argument
`bins`.
Fügen Sie relevante Kennzahlen zur letzten Visualisierung hinzu.
Um Diagramme mit Statistiken anzureichen, bietet sich das Paket ggstatsplot
an:
gghistostats(d, x = y)
Beachten Sie, dass die Variable nicht in Anführungsstriche gesetzt werden darf: x = y
.
Visualisieren Sie die Verteilung von x1
und x2
.
x1
<-
d_counted |>
d count(x1)
ggbarplot(data = d_counted, y = "n", x = "x1", label = TRUE)
x2
gghistostats(d, x = x2)
Visualisieren Sie die Verteilung von y
bedingt auf x1
gghistogram(d, x = "y", fill = "x1")
Warning: Using `bins = 30` by default. Pick better value with the argument
`bins`.
Oder so:
gghistogram(d, x = "y", facet.by = "x1")
Warning: Using `bins = 30` by default. Pick better value with the argument
`bins`.
Fügen Sie relevante Kennzahlen zur letzten Visualisierung hinzu
grouped_gghistostats(d, x = y, grouping.var = x1)
Visualisieren Sie den Zusammenhang von y
und x2
ggscatter(d, x = "x2", y = "y")
Verbessern Sie das letzte Diagramm, so dass es übersichtlicher wird
Es gibt mehrere Wege, das Diagramm übersichtlicher zu machen. Logarithmieren ist ein Weg.
|>
d mutate(x2 = log(x2)) |>
ggscatter(x = "x2", y = "y")
Synonym könnten wir schreiben:
<-
d_logged |>
d mutate(x2 = log(x2))
ggscatter(d_logged, x = "x2", y = "y")
Fügen Sie dem letzten Diagramm relevante Kennzahlen hinzu
ggscatterstats(d_logged, x = "x2", y = "y")
Fügen Sie dem Diagramm zum Zusammenhang von y
und x2
eine Regressionsgerade hinzu
ggscatter(d_logged, x = "x2", y = "y", add = "reg.line",
add.params = list(color = "blue"))
Ersetzen Sie die Regressionsgerade durch eine LOESS-Gerade
ggscatter(d_logged, x = "x2", y = "y", add = "loess",
add.params = list(color = "blue"))
Gruppieren Sie das letzte Diagramm nach x1
ggscatter(d_logged, x = "x2", y = "y", add = "loess",
add.params = list(color = "blue"),
facet.by = "x1")
Dichotomisieren Sie y
und zählen Sie die Häufigkeiten
Nehmen wir einen Mediansplit, um zu dichotomisieren.
<-
d |>
d mutate(y_dicho = ifelse(y > median(y), "high", "low"))
|>
d count(y_dicho) |>
ggbarplot(x = "y_dicho", y = "n")
Gleich viele! Das sollte nicht verwundern.
Gruppieren Sie das letzte Diagramm nach den Stufen von x1
<-
d_count |>
d count(y_dicho, x1)
d_count
# A tibble: 9 × 3
y_dicho x1 n
<chr> <fct> <int>
1 high Africa 64
2 high Americas 211
3 high Asia 207
4 high Europe 346
5 high Oceania 24
6 low Africa 560
7 low Americas 89
8 low Asia 189
9 low Europe 14
ggbarplot(d_count, x = "y_dicho", y = "n", facet.by = "x1")
Variieren Sie das letzte Diagramm so, dass Anteile (relative Häufigkeiten) statt absoluter Häufigkeiten gezeigt werden
<-
d_count |>
d_count mutate(prop = n / sum(n)) |>
mutate(prop = round(prop, 2))
d_count
# A tibble: 9 × 4
y_dicho x1 n prop
<chr> <fct> <int> <dbl>
1 high Africa 64 0.04
2 high Americas 211 0.12
3 high Asia 207 0.12
4 high Europe 346 0.2
5 high Oceania 24 0.01
6 low Africa 560 0.33
7 low Americas 89 0.05
8 low Asia 189 0.11
9 low Europe 14 0.01
Check:
|>
d_count summarise(sum(prop))
# A tibble: 1 × 1
`sum(prop)`
<dbl>
1 0.99
Gut! Die Anteile summieren sich zu ca. 1 (100 Prozent).
ggbarplot(d_count, x = "y_dicho", y = "prop", facet.by = "x1", label = TRUE)
Man beachten, dass sich die Anteile auf das “Gesamt-N” beziehen.
Vielleicht möchten wir die Anteile lieber pro Stufe von x1
beziehen. Dazu gruppieren wir nach (und pro Stufe von) x1
.
<-
d_count |>
d_count group_by(x1) |>
mutate(prop = n / sum(n)) |>
mutate(prop = round(prop, 2))
d_count
# A tibble: 9 × 4
# Groups: x1 [5]
y_dicho x1 n prop
<chr> <fct> <int> <dbl>
1 high Africa 64 0.1
2 high Americas 211 0.7
3 high Asia 207 0.52
4 high Europe 346 0.96
5 high Oceania 24 1
6 low Africa 560 0.9
7 low Americas 89 0.3
8 low Asia 189 0.48
9 low Europe 14 0.04
ggbarplot(d_count, x = "y_dicho", y = "prop", facet.by = "x1", label = TRUE)
Categories:
- vis
- yacsda
- ggquick
- gapminder
- string