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
# 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
# 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.
# 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'