Vorbereitung
Laden Sie zunächst den Datensatz
fb23
von der pandaR-Website durch die bekannten Befehle direkt ins Environment. Alternativ ist die Datei unter diesem Link zum Download verfügbar. Beachten Sie in jedem Fall, dass die Ergänzungen im Datensatz vorausgesetzt werden. Die Bedeutung der einzelnen Variablen und ihre Antwortkategorien können Sie dem Dokument Variablenübersicht entnehmen.
R-Code für die Vorbereitung
#### Was bisher geschah: ----
# Daten laden
load(url('https://pandar.netlify.app/daten/fb23.rda'))
# Nominalskalierte Variablen in Faktoren verwandeln
fb23$hand_factor <- factor(fb23$hand,
levels = 1:2,
labels = c("links", "rechts"))
fb23$fach <- factor(fb23$fach,
levels = 1:5,
labels = c('Allgemeine', 'Biologische', 'Entwicklung', 'Klinische', 'Diag./Meth.'))
fb23$ziel <- factor(fb23$ziel,
levels = 1:4,
labels = c("Wirtschaft", "Therapie", "Forschung", "Andere"))
fb23$wohnen <- factor(fb23$wohnen,
levels = 1:4,
labels = c("WG", "bei Eltern", "alleine", "sonstiges"))
Falls Sie nochmal sicher gehen wollen, ob alles korrekt funktioniert hat, könnte die Anzahl der Zeilen und Spalten einen Hinweis geben:
dim(fb23)
## [1] 179 41
Der Datensatz besteht aus 179 Zeilen (Beobachtungen) und 41 Spalten (Variablen). Falls Sie bereits eigene Variablen erstellt haben, kann die Spaltenzahl natürlich abweichen.
Aufgabe 1
Erstellen Sie im Datensatz fb23
die Skalenwerte für die Subskala ruhig/unruhig der aktuellen Stimmung, die mit den Items mdbf3, mdbf6, mdbf9 und mdbf12 gemessen wurde. mdbf3 und mdbf9 sind invertiert und müssen rekodiert werden. Speichern sie diese als ru_pre
im Datensatz fb23
ab.
- Erstellen Sie den Skalenwert als Mittelwert der vier Items.
Lösung
# Invertieren
fb23$mdbf3_pre_r <- -1 * (fb23$mdbf3_pre - 5)
fb23$mdbf9_pre_r <- -1 * (fb23$mdbf9_pre - 5)
# Skalenwert
ru_pre <- fb23[, c("mdbf3_pre_r", "mdbf6_pre", "mdbf9_pre_r", "mdbf12_pre")]
fb23$ru_pre <- rowMeans(ru_pre)
Oder in einem Schritt mit der Pipe:
# Skalenwert
fb23$ru_pre <- fb23[, c("mdbf3_pre_r", "mdbf6_pre",
"mdbf9_pre_r", "mdbf12_pre")] |> rowMeans()
Aufgabe 2
Bestimmen Sie für die Skala den gesamten Mittelwert und Median.
- Was vermuten Sie, aufgrund des Verhältnisses der beiden Maße der zentralen Tendenz, bezüglich der Schiefe der Verteilung?
- Prüfen Sie Ihre Vermutung anhand eines Histogramms!
Lösung
# Median und Mittelwert
median(fb23$ru_pre, na.rm = TRUE)
## [1] 3
mean(fb23$ru_pre, na.rm = TRUE)
## [1] 2.730447
Der Median ist größer als der Mittelwert, was eine linksschiefe Verteilung vermuten lässt.
Prüfen der Vermutung anhand eines Histogramms!
hist(fb23$ru_pre, breaks = 6) # Histogramm
Unser Histogramm zeigt uns, dass die Verteilung tatsächlich einigermaßen linksschief verläuft.
Aufgabe 3
Bestimmen Sie für den Skalenwert ru_pre
die empirische Varianz und Standardabweichung. Achten Sie dabei darauf, ob es auf der Skala fehlende Werte gibt.
- Sind empirische Varianz und Standardabweichung größer oder kleiner als diejenige Schätzung, die mithilfe von
var()
odersd()
bestimmt wird?
Lösung
Erinnerung:
- Empirische Varianz: $s^2_{X} = \frac{\sum_{m=1}^n (x_m - \bar{x})^2}{n}$
- Schätzer der Populationsvarianz: $\hat{\sigma}^2_{X} = \frac{\sum_{m=1}^n (x_m - \bar{x})^2}{n - 1}$
Zur Berechnung der Varianz gemäß Formel benötigen wir $n$. Wir könnten mit nrow(fb23)
die Länge des Datensatzes für n
heranziehen. Dies ist jedoch nur dann sinnvoll, wenn auf der Variable `ru_pre`` keine fehlenden Werte vorhanden sind!
is.na(fb23$ru_pre) |> sum()
## [1] 0
Hier gibt es tatsächlich keinen fehlenden Wert.
# empirische Varianz
# per Hand
sum((fb23$ru_pre - mean(fb23$ru_pre, na.rm = T))^2, na.rm = T) / (length(na.omit(fb23$ru_pre)))
## [1] 0.5582769
# durch Umrechnung
var(fb23$ru_pre, na.rm = T) * (length(na.omit(fb23$ru_pre))-1) / length(na.omit(fb23$ru_pre))
## [1] 0.5582769
# Populationsschätzer
var(fb23$ru_pre, na.rm = T)
## [1] 0.5614133
Die empirische Varianz ist kleiner als der Populationsschätzer.
Nun fehlt noch die Betrachtung der Standardabweichung. Als einfachste Möglichkeit für die Berechnung der empirischen Standardabweichung haben wir gelernt, dass man die Wurzel aus der empirischen Varianz ziehen kann.
# empirische Standardabweichung (na.omit / na.rm kann auch ausgelassen werden!)
(sum((fb23$ru_pre - mean(fb23$ru_pre, na.rm = T))^2, na.rm = T) / length(na.omit(fb23$ru_pre))) |> sqrt()
## [1] 0.7471793
# Populationsschätzer
sd(fb23$ru_pre, na.rm = T)
## [1] 0.7492752
Auch hier ist der empirische Wert kleiner als der Schätzer.
Aufgabe 4
Erstellen Sie eine z-standardisierte Variante der Skala ruhig/unruhig und legen Sie diese im Datensatz als neue Variable ru_pre_zstd
an.
- Erstellen Sie für die z-standardisierte Variable ein Histogramm.
- Was fällt Ihnen auf, wenn Sie dieses mit dem Histogramm der unstandardisierten Werte (Erinnerung: Variablennamen
ru_pre
) vergleichen? - Erstellen Sie beide Histogramme noch einmal mit 40 angeforderten Breaks.
Lösung
Um die Vergleichbarkeit zu erhöhen, wird im folgenden Code ein kleiner Trick angewendet. Die beiden Histogramme sollten am besten gleichzeitig unter Plots angezeigt werden. Durch die verwendete Funktion par()
kann man verschiedene Plots gemeinsam in einem Fenster zeichnen. Das Argument bestimmt dabei, dass es eine Zeile und zwei Spalten für die Plots gibt.
par(mfrow=c(1,2))
# z-Standardisierung
fb23$ru_pre_zstd <- scale(fb23$ru_pre, center = TRUE, scale = TRUE)
# Histogramme
hist(fb23$ru_pre_zstd)
hist(fb23$ru_pre)
Beim Vergleich der beiden Histogrammen fällt auf, dass sich - aufgrund der R-Voreinstellungen - das Erscheinungsbild fälschlicherweise unterscheidet (vor allem, wenn wir die y-Achse betrachten!) - eigentlich sollte sich durch die z-Transformation nur Skalierung der x-Achsen-Variable verändern. Tatsächlich aber bestimmt R hier eine unterschiedliche Anzahl von Kategorien. Wir erhalten eine konstantere Darstellung durch das breaks
-Argument:
# Histogramme mit jeweils 5/6 Breaks
par(mfrow=c(1,2))
hist(fb23$ru_pre_zstd, breaks = 5)
hist(fb23$ru_pre, breaks = 6)
Die Verteilungen sehen nun tatsächlich vergleichbar aus. Da die Breaks ein weicher Befehl sind, kann hier keine komplette Gleichheit gegeben werden.