set.seed(123) # Zufallszahl für Reproduzierbarkeit
# Erstellen des Beispiel-Datensatzes mit 170 Studierenden und fehlenden Werten
datensatz <- 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),
Notendurchschnitt = round(runif(170, 1.0, 4.0), 2), # Zufällige Notendurchschnittswerte zwischen 1.0 und 4.0
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
Geschlecht = sample(c("Männlich", "Weiblich"), 170, replace = TRUE) # Geschlecht
)
# Die Zusatzkurse sollen einen positiven Einfluss auf den Notendurchschnitt haben
datensatz$Notendurchschnitt <- datensatz$Notendurchschnitt + 0.2 * datensatz$Zusatzkurse
# Zufällig fehlende Werte erzeugen
datensatz[sample(1:170, 30), "Notendurchschnitt"] <- NA # 30 fehlende Werte im Notendurchschnitt
datensatz[sample(1:170, 25), "Hausaufgaben_Stunden"] <- NA # 25 fehlende Werte in Hausaufgaben_Stunden
datensatz[sample(1:170, 20), "Zusatzkurse"] <- NA # 20 fehlende Werte in Zusatzkurse
# Überprüfe die ersten Zeilen des Datensatzes
head(datensatz)
## Student_ID Alter Studiengang Notendurchschnitt Hausaufgaben_Stunden
## 1 1 20 Psychologie 1.68 8
## 2 2 20 Informatik 3.59 20
## 3 3 27 Psychologie 3.86 16
## 4 4 19 Mathematik 2.69 18
## 5 5 23 Informatik NA 20
## 6 6 28 Informatik 3.99 13
## Zusatzkurse Geschlecht
## 1 1 Weiblich
## 2 NA Weiblich
## 3 0 Männlich
## 4 0 Weiblich
## 5 3 Männlich
## 6 0 Männlich
# 1. Zeilen mit fehlenden Werten entfernen
datensatz_bereinigt <- na.omit(datensatz)
# 2. Unnötige Spalten entfernen
datensatz_bereinigt <- datensatz_bereinigt[, !names(datensatz) %in% c("Student_ID")]
cor_test <- cor.test(datensatz_bereinigt$Zusatzkurse, datensatz_bereinigt$Notendurchschnitt)
print(cor_test)
##
## Pearson's product-moment correlation
##
## data: datensatz_bereinigt$Zusatzkurse and datensatz_bereinigt$Notendurchschnitt
## t = 2.2098, df = 102, p-value = 0.02935
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.02206578 0.39026853
## sample estimates:
## cor
## 0.2137457
Ergebnis: Es gibt einen schwachen positiven Zusammenhang zwischen der Teilnahme an Zusatzkursen und dem Notendurchschnitt. Dieser Zusammenhang ist statistisch signifikant (p-Wert < 0.05), aber die Korrelation ist relativ schwach (Korrelationskoeffizient von 0.2137).
model <- lm(Notendurchschnitt ~ Hausaufgaben_Stunden + Zusatzkurse, data = datensatz_bereinigt)
summary(model)
##
## Call:
## lm(formula = Notendurchschnitt ~ Hausaufgaben_Stunden + Zusatzkurse,
## data = datensatz_bereinigt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.55238 -0.84495 0.00367 0.76752 1.62763
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.559139 0.279836 9.145 6.84e-15 ***
## Hausaufgaben_Stunden 0.005324 0.018536 0.287 0.7745
## Zusatzkurse 0.116166 0.052706 2.204 0.0298 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.8974 on 101 degrees of freedom
## Multiple R-squared: 0.04647, Adjusted R-squared: 0.02758
## F-statistic: 2.461 on 2 and 101 DF, p-value: 0.09046
Ergebnis: Die multiple lineare Regression zeigt, dass Zusatzkurse einen signifikanten positiven Einfluss auf den Notendurchschnitt haben, während Hausaufgaben_Stunden keinen signifikanten Einfluss hat. Das Modell erklärt nur 4.65% der Variation im Notendurchschnitt (R² = 0.04647), was darauf hinweist, dass das Modell kaum in der Lage ist, den Notendurchschnitt zu erklären. Das Gesamtmodell ist nicht signifikant (p-Wert der F-Statistik = 0.09046), was darauf hinweist, dass es noch andere Faktoren gibt, die den Notendurchschnitt beeinflussen, die im Modell nicht berücksichtigt wurden.
library(ggplot2)
## Warning: Paket 'ggplot2' wurde unter R Version 4.4.2 erstellt
# Streudiagramm für Zusatzkurse vs. Notendurchschnitt mit Regressionslinie
ggplot(datensatz_bereinigt, aes(x = Zusatzkurse, y = Notendurchschnitt)) +
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 Zusatzkursen und Notendurchschnitt",
x = "Anzahl der Zusatzkurse",
y = "Notendurchschnitt") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'
# Streudiagramm für Hausaufgaben_Stunden vs. Notendurchschnitt mit Regressionslinie
ggplot(datensatz_bereinigt, aes(x = Hausaufgaben_Stunden, y = Notendurchschnitt)) +
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 Hausaufgaben_Stunden und Notendurchschnitt",
x = "Hausaufgaben_Stunden",
y = "Notendurchschnitt") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'