Beispiel 1: LMS-Daten

Datensatz erstellen

set.seed(123)  # Zufallszahl für Reproduzierbarkeit

# Erstellen eines Beispiel-Datensatzes aus einem LMS mit starkem Einfluss der Quiznoten und Aktivitätspunkte auf die Abschlussnote
datensatz_lms <- data.frame(
  Student_ID = 1:170,  # 170 Studierende
  Alter = sample(18:30, 170, replace = TRUE),  # Zufällige Alterswerte zwischen 18 und 30
  Studiengang = sample(c("Informatik", "Mathematik", "Psychologie"), 170, replace = TRUE),
  # Hier werden Quiznoten und Aktivitätspunkte so erzeugt, dass sie starken Einfluss auf die Abschlussnote haben
  Quiznoten = round(runif(170, 1.0, 5.0), 2),  # Zufällige Quiznoten zwischen 1.0 und 5.0
  Aktivitaetspunkte = sample(20:100, 170, replace = TRUE),  # Punkte für die Teilnahme an Aktivitäten (20-100)
  Hausaufgaben_Stunden = sample(5:20, 170, replace = TRUE),  # Stunden pro Woche für Hausaufgaben
  Zusatzkurse = sample(0:5, 170, replace = TRUE),  # Anzahl der besuchten Zusatzkurse oder Workshops
  Abschlussnote = NA  # Platz für Abschlussnote
)

# Die Abschlussnote wird durch Quiznoten und Aktivitätspunkte stark beeinflusst
datensatz_lms$Abschlussnote <- 1.5 * datensatz_lms$Quiznoten + 0.05 * datensatz_lms$Aktivitaetspunkte + 
  rnorm(170, mean = 0, sd = 0.5)  # Normalverteiltes Rauschen hinzugefügt

# Zufällig fehlende Werte erzeugen
datensatz_lms[sample(1:170, 25), "Abschlussnote"] <- NA  # 25 fehlende Werte in Abschlussnote
datensatz_lms[sample(1:170, 20), "Quiznoten"] <- NA  # 20 fehlende Werte in Quiznoten
datensatz_lms[sample(1:170, 15), "Aktivitaetspunkte"] <- NA  # 15 fehlende Werte in Aktivitaetspunkte

# Überprüfe die ersten Zeilen des Datensatzes
head(datensatz_lms)
##   Student_ID Alter Studiengang Quiznoten Aktivitaetspunkte Hausaufgaben_Stunden
## 1          1    20 Psychologie      1.64                67                    7
## 2          2    20  Informatik        NA                79                    5
## 3          3    27 Psychologie      4.81                81                   11
## 4          4    19  Mathematik      3.25                99                    9
## 5          5    23  Informatik      2.32                28                   17
## 6          6    28  Informatik      4.99                30                   11
##   Zusatzkurse Abschlussnote
## 1           5      5.278251
## 2           5      9.930975
## 3           1     12.308359
## 4           2      9.485748
## 5           0      3.952214
## 6           0      9.251630

Hypothese: Quiznoten und Aktivitätspunkte sind signifikante Prädiktoren für die Abschlussnote (multiple Regression)

Schritt 1: Daten bereinigen
# 1. Entferne Zeilen mit fehlenden Werten
datensatz_lms_bereinigt <- na.omit(datensatz_lms)

# 2. Unnötige Spalten entfernen 
datensatz_lms_bereinigt <- datensatz_lms_bereinigt[, !names(datensatz_lms_bereinigt) %in% c("Student_ID")]

# Überprüfe den bereinigten Datensatz
head(datensatz_lms_bereinigt)
##   Alter Studiengang Quiznoten Aktivitaetspunkte Hausaufgaben_Stunden
## 1    20 Psychologie      1.64                67                    7
## 3    27 Psychologie      4.81                81                   11
## 4    19  Mathematik      3.25                99                    9
## 5    23  Informatik      2.32                28                   17
## 6    28  Informatik      4.99                30                   11
## 7    22  Mathematik      1.94                62                   13
##   Zusatzkurse Abschlussnote
## 1           5      5.278251
## 3           1     12.308359
## 4           2      9.485748
## 5           0      3.952214
## 6           0      9.251630
## 7           1      6.165115
Schritt 2: Multiple lineare Regression
# Multiple lineare Regression: Abschlussnote als Funktion von Quiznoten und Aktivitätspunkten
model_lms <- lm(Abschlussnote ~ Quiznoten + Aktivitaetspunkte, data = datensatz_lms_bereinigt)
summary(model_lms)
## 
## Call:
## lm(formula = Abschlussnote ~ Quiznoten + Aktivitaetspunkte, data = datensatz_lms_bereinigt)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.11642 -0.33491  0.06066  0.31955  1.31769 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       -0.043227   0.196044   -0.22    0.826    
## Quiznoten          1.514869   0.042129   35.96   <2e-16 ***
## Aktivitaetspunkte  0.050062   0.001995   25.09   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.5341 on 119 degrees of freedom
## Multiple R-squared:  0.9344, Adjusted R-squared:  0.9333 
## F-statistic: 846.9 on 2 and 119 DF,  p-value: < 2.2e-16

Ergebnis: Quiznoten und Aktivitätspunkte sind beide signifikante Prädiktoren für den Notendurchschnitt. Quiznoten haben einen starken Einfluss auf den Notendurchschnitt, mit einem Koeffizienten von 1.514869 und einem sehr kleinen p-Wert (< 2e-16). Aktivitätspunkte haben ebenfalls einen signifikanten Einfluss auf den Notendurchschnitt, mit einem Koeffizienten von 0.050062 und einem ebenfalls sehr kleinen p-Wert (< 2e-16). Das R² von 0.9344 zeigt, dass das Modell 93.44% der Variation im Notendurchschnitt erklärt, was auf ein sehr gutes Modell hinweist. Das Modell insgesamt ist signifikant (F-Statistik p-Wert < 2.2e-16), was zeigt, dass Quiznoten und Aktivitätspunkte gemeinsam den Notendurchschnitt stark vorhersagen können.

Schritt 3: Visualisierungen
# Streudiagramm für Quiznoten vs. Abschlussnote
library(ggplot2)
## Warning: Paket 'ggplot2' wurde unter R Version 4.4.2 erstellt
ggplot(datensatz_lms_bereinigt, aes(x = Quiznoten, y = Abschlussnote)) +
  geom_point(aes(color = Studiengang), size = 3) +  # Punkte im Streudiagramm
  geom_smooth(method = "lm", se = FALSE, color = "red") +  # Regressionslinie hinzufügen
  labs(title = "Zusammenhang zwischen Quiznoten und Abschlussnote", 
       x = "Quiznoten", 
       y = "Abschlussnote") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

# Streudiagramm für Aktivitätspunkte vs. Abschlussnote
ggplot(datensatz_lms_bereinigt, aes(x = Aktivitaetspunkte, y = Abschlussnote)) +
  geom_point(aes(color = Studiengang), size = 3) +  # Punkte im Streudiagramm
  geom_smooth(method = "lm", se = FALSE, color = "red") +  # Regressionslinie hinzufügen
  labs(title = "Zusammenhang zwischen Aktivitätspunkten und Abschlussnote", 
       x = "Aktivitätspunkte", 
       y = "Abschlussnote") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'