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", "Biologie"), 170, replace = TRUE),
Notendurchschnitt = round(runif(170, 1.0, 4.0), 2), # Zufällige Notendurchschnittswerte zwischen 1.0 und 4.0
Vorlesungsbesuch = sample(5:20, 170, replace = TRUE), # Anzahl der besuchten Vorlesungen pro Woche
Lernzeit = round(sample(5:20, 170, replace = TRUE) + 0.5 * sample(5:20, 170, replace = TRUE)), # Lernzeit als Funktion des Vorlesungsbesuchs (positiver Zusammenhang)
Geschlecht = sample(c("Männlich", "Weiblich"), 170, replace = TRUE) # Geschlecht
)
# Zufällig fehlende Werte erzeugen
datensatz[sample(1:170, 25), "Notendurchschnitt"] <- NA # 25 fehlende Werte im Notendurchschnitt
datensatz[sample(1:170, 20), "Vorlesungsbesuch"] <- NA # 20 fehlende Werte in Vorlesungsbesuch
datensatz[sample(1:170, 15), "Lernzeit"] <- NA # 15 fehlende Werte in Lernzeit
# Überprüfe die ersten Zeilen des Datensatzes
head(datensatz)
## Student_ID Alter Studiengang Notendurchschnitt Vorlesungsbesuch Lernzeit
## 1 1 20 Biologie 1.48 8 19
## 2 2 20 Informatik NA 20 14
## 3 3 27 Biologie 3.86 NA 23
## 4 4 19 Mathematik 2.69 18 23
## 5 5 23 Informatik 1.99 20 14
## 6 6 28 Informatik 3.99 13 18
## Geschlecht
## 1 Männlich
## 2 Männlich
## 3 Weiblich
## 4 Männlich
## 5 Weiblich
## 6 Weiblich
# 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")]
summary(datensatz_bereinigt)
## Alter Studiengang Notendurchschnitt Vorlesungsbesuch
## Min. :18.0 Length:119 Min. :1.000 Min. : 5.00
## 1st Qu.:21.0 Class :character 1st Qu.:1.850 1st Qu.: 8.00
## Median :24.0 Mode :character Median :2.560 Median :12.00
## Mean :24.1 Mean :2.563 Mean :12.13
## 3rd Qu.:27.0 3rd Qu.:3.380 3rd Qu.:16.00
## Max. :30.0 Max. :3.990 Max. :20.00
## Lernzeit Geschlecht
## Min. : 9.00 Length:119
## 1st Qu.:14.00 Class :character
## Median :18.00 Mode :character
## Mean :18.61
## 3rd Qu.:23.00
## Max. :30.00
str(datensatz_bereinigt)
## 'data.frame': 119 obs. of 6 variables:
## $ Alter : int 20 19 23 28 22 21 23 26 28 22 ...
## $ Studiengang : chr "Biologie" "Mathematik" "Informatik" "Informatik" ...
## $ Notendurchschnitt: num 1.48 2.69 1.99 3.99 1.7 2.84 1.32 2.46 1.48 1.85 ...
## $ Vorlesungsbesuch : int 8 18 20 13 15 15 7 18 14 11 ...
## $ Lernzeit : num 19 23 14 18 20 16 12 10 12 14 ...
## $ Geschlecht : chr "Männlich" "Männlich" "Weiblich" "Weiblich" ...
cor_test <- cor.test(datensatz_bereinigt$Vorlesungsbesuch, datensatz_bereinigt$Lernzeit)
print(cor_test)
##
## Pearson's product-moment correlation
##
## data: datensatz_bereinigt$Vorlesungsbesuch and datensatz_bereinigt$Lernzeit
## t = 0.24258, df = 117, p-value = 0.8088
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.1582129 0.2016030
## sample estimates:
## cor
## 0.02242111
Ergebnis: t-Wert (0.24258) und Korrelationskoeffizient (0.0224) zeigen, dass der Zusammenhang zwischen Vorlesungsbesuch und Lernzeit äußerst schwach ist. Der p-Wert (0.8088) ist viel größer als 0.05, was darauf hinweist, dass die Korrelation nicht signifikant ist.
model <- lm(Notendurchschnitt ~ Vorlesungsbesuch + Lernzeit, data = datensatz_bereinigt)
summary(model)
##
## Call:
## lm(formula = Notendurchschnitt ~ Vorlesungsbesuch + Lernzeit,
## data = datensatz_bereinigt)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.62632 -0.71227 0.02008 0.79166 1.54462
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.314891 0.370949 6.240 7.36e-09 ***
## Vorlesungsbesuch 0.016053 0.017374 0.924 0.357
## Lernzeit 0.002873 0.016089 0.179 0.859
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.8704 on 116 degrees of freedom
## Multiple R-squared: 0.007643, Adjusted R-squared: -0.009466
## F-statistic: 0.4467 on 2 and 116 DF, p-value: 0.6408
Ergebnis: Die multiple lineare Regression zeigt, dass weder Vorlesungsbesuch noch Lernzeit signifikante Prädiktoren für den Notendurchschnitt sind. R² ist sehr klein (0.0076), was bedeutet, dass das Modell kaum in der Lage ist, den Notendurchschnitt zu erklären.
library(ggplot2)
## Warning: Paket 'ggplot2' wurde unter R Version 4.4.2 erstellt
# Streudiagramm für Vorlesungsbesuch vs. Notendurchschnitt mit Regressionslinie
ggplot(datensatz_bereinigt, aes(x = Vorlesungsbesuch, 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 Vorlesungsbesuch und Notendurchschnitt",
x = "Vorlesungsbesuch (Anzahl der besuchten Vorlesungen)",
y = "Notendurchschnitt") +
theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'