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", "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

Hypothese 1: Der Vorlesungsbesuch korreliert positiv mit der Lernzeit (Korrelation)

Hypothese 2: Vorlesungsbesuch und Lernzeit sagen den Notendurchschnitt vorraus (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")]
Zusammenfassung der Daten und Struktur prüfen
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" ...
Schritt 2: Korrelation zwischen Vorlesungsbesuch und Lernzeit
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.

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

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