Datensatz erstellen

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

Hypothese 1: Der Besuch von Zusatzkursen korreliert positiv mit dem Notenschnitt (Korrelation)

Hypothese 2: Hausaufgaben_Stunden und Zusatzkurse sagen den Notenschnitt voraus (multiple Regression)

Schritt 1: Daten bereinigen
# 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")]
Schritt 2: Korrelation zwischen Zusatzkursen und Notenschnitt
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).

Schritt 3: Multiple lineare Regression: Notendurchschnitt als Funktion von Hausaufgaben_Stunden und Zusatzkursen
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.

Schritt 4: Visualisierung
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'