Vorbereitung
Bitte laden Sie für die folgenden Aufgaben die Übungsdatensatze mdbf und fb24:
# Übungsdatensatz für Aufgabe 3
load(url("https://pandar.netlify.app/daten/mdbf.rda"))
# Übungsdatensatz für Aufgabe 4
load(url("https://pandar.netlify.app/daten/fb24.rda"))
Aufgabe 1
Eigene Funktionen helfen, Arbeitsschritte effizient zusammenzufassen.
- Schreiben Sie eine eigene Funktion namens quadriere, die eine Zahl entgegennimmt und deren Quadrat zurückgibt.
- Testen Sie die Funktion mit den Werten 3 und 7.
Aufgabe 2
Mit if-Abfragen kann die Ausführung von Code gesteuert werden.
- Schreiben Sie eine Funktion alterstest, die ein Alter als Eingabe erhält und zurückgibt:
- „Volljährig“, wenn das Alter mindestens 18 ist,
- „Minderjährig“, wenn das Alter darunter liegt.
- Testen Sie Ihre Funktion mit den Werten 16 und 22.
Aufgabe 3
Ziel dieser Aufgabe ist es, alle negativ gepolten Items im mdbf-Datensatz in eine positive Richtung umzucodieren.
Folgende Items sind negativ gepoolt: "stim3", "stim4", "stim5", "stim7", "stim9", "stim11"
- Erstellen Sie zunächst eine Kopie des Datensatzes mdbf (z. B. mdbf_r).
- Speichern Sie alle negativ gepolten Variablen in einem Vektor neg.
- Rekodieren Sie die Items mit einem for-Loop, indem Sie die Werte wie folgt umdrehen:
-1 * (x - 5)
- Überprüfen Sie den Erfolg der Rekodierung durch die Berechnung der Korrelation vor und nach der Umkodierung für stim3.
- Hinweis: Die Korrelation sollte -1 betragen
Aufgabe 4
Im zugehörigen Kapitel haben wir die Funktion var_eigen zur Ausgabe der Varianz und Stichprobengröße erstellt:
var_eigen <- function(x, empirical = TRUE){
n <- length(x)
x_quer <- mean(x)
if (empirical == TRUE) {
var <- sum((x - x_quer)^2) / n
} else {
var <- sum((x - x_quer)^2) / (n - 1)
}
return(list(Varianz = var, Stichprobengroesse = n))
}
Nach Anwendung der Funktion auf alle numerischen Variablen im Datensatz fb24, haben wir festgestellt, dass die Berechnung für einige der Variablen fehltschlägt, da diese NAs beinhalten. Folgende for-Schleife haben wir dazu genutzt:
for (i in names(fb24)) {
print(i)
if (is.character(fb24[, i])) {
print("Eine character Variable.")
} else {
print(var_eigen(x = fb24[, i], empirical = TRUE))
}
}
Erweitern Sie nun die Funktion var_eigen um ein logisches Argument na.rm.
Wird na.rm = TRUE
gesetzt, sollen fehlende Werte aus der Berechnung ausgeschlossen werden.
- Achten Sie darauf, dass die Berechnung von n auf der bereinigten Stichprobe basiert.
- Testen Sie die neue Funktion sowohl mit als auch ohne
na.rm = TRUE
. - Wenden Sie sie anschließend mit
na.rm = TRUE
auf alle numerischen Variablen in fb24 an.