# Notwendige Bibliothek laden
library(readr)
## Warning: Paket 'readr' wurde unter R Version 4.4.2 erstellt
# Datensatz einlesen (die CSV-Datei muss im Arbeitsverzeichnis gespeichert sein)
df <- read_csv("df.csv", show_col_types = FALSE)
# Erste Zeilen des Datensatzes anzeigen
head(df)
## # A tibble: 6 × 9
## Studienmotivation Semesterleistung IQ_Wert Gedächtnisspanne Anwesenheit
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 7.7 8.8 114 5.3 70.7
## 2 6.8 9.3 116 5.5 63.7
## 3 8 11.3 121 6.4 52.8
## 4 9.3 12.3 121 6.3 93.2
## 5 6.6 9.7 96 4.8 90.6
## 6 6.6 10.8 101 5.1 100
## # ℹ 4 more variables: Prüfungsnote <dbl>, Tutorium <chr>,
## # Sozialer_Hintergrund <chr>, Studiengang <chr>
Da beide Variablen metrisch sind, ist die Pearson-Korrelation geeignet.
# Notwendige Bibliothek laden
library(readr)
# Datensatz einlesen (die CSV-Datei muss im Arbeitsverzeichnis gespeichert sein)
df <- read_csv("df.csv", show_col_types = FALSE)
# Scatterplot mit Regressionsgerade erstellen
plot(df$Studienmotivation, df$Semesterleistung, col="blue", pch=16,
main="Scatterplot: Studienmotivation vs. Semesterleistung",
xlab="Studienmotivation (1-10 Skala)", ylab="Semesterleistung (ECTS)")
# Lineare Regressionsgerade hinzufügen
abline(lm(df$Semesterleistung ~ df$Studienmotivation), col="red", lwd=2)
➡ Punkte weisen eine lineare Struktur auf, daher können wir mit Pearson fortfahren.
# QQ-Plots zur grafischen Überprüfung der Normalverteilung
qqnorm(df$Studienmotivation, main="QQ-Plot: Studienmotivation")
qqline(df$Studienmotivation, col="red")
qqnorm(df$Semesterleistung, main="QQ-Plot: Semesterleistung")
qqline(df$Semesterleistung, col="red")
# Shapiro-Wilk-Test für Normalverteilung
shapiro.test(df$Studienmotivation)
##
## Shapiro-Wilk normality test
##
## data: df$Studienmotivation
## W = 0.99003, p-value = 0.6669
shapiro.test(df$Semesterleistung)
##
## Shapiro-Wilk normality test
##
## data: df$Semesterleistung
## W = 0.99115, p-value = 0.7565
➡ Bei beiden Variablen ist eine Normalverteilung gegeben, also bleibt Pearson geeignet.
# Boxplots zur Identifikation von Ausreißern
boxplot(df$Studienmotivation, main="Boxplot: Studienmotivation", col="lightblue")
boxplot(df$Semesterleistung, main="Boxplot: Semesterleistung", col="lightblue")
# Identifikation von Ausreißerwerten
boxplot.stats(df$Studienmotivation)$out
## [1] 3.1
boxplot.stats(df$Semesterleistung)$out
## [1] 17.8 16.6
➡ Hier sind die gefundenen Ausreißer nicht extrem genug, um Pearson auszuschließen.
# Pearson-Korrelation mit Signifikanztest berechnen
cor.test(df$Studienmotivation, df$Semesterleistung, method="pearson")
##
## Pearson's product-moment correlation
##
## data: df$Studienmotivation and df$Semesterleistung
## t = 9.3409, df = 98, p-value = 3.262e-15
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.5661948 0.7778536
## sample estimates:
## cor
## 0.68629
Korrelationskoeffizient (r = 0.686)
- Moderate bis starke positive Korrelation
- Höhere Studienmotivation ist mit einer höheren Semesterleistung (mehr
ECTS) verbunden.
p-Wert = 3.262e-15 (p < 0.05)
- Die Korrelation ist hochsignifikant
Da beide Variablen metrisch sind, ist die Pearson-Korrelation geeignet.
# Notwendige Bibliothek laden
library(readr)
# Datensatz einlesen (die CSV-Datei muss im Arbeitsverzeichnis gespeichert sein)
df <- read_csv("df.csv", show_col_types = FALSE)
plot(df$Anwesenheit, df$Prüfungsnote, col="blue", pch=16,
main="Scatterplot: Anwesenheit vs. Prüfungsnote",
xlab="Anwesenheit (%)", ylab="Prüfungsnote (1.0 - 5.0)")
abline(lm(df$Prüfungsnote ~ df$Anwesenheit), col="red", lwd=2)
➡ Punkte weisen eine lineare Struktur auf, daher können wir mit Pearson fortfahren.
# QQ-Plots zur grafischen Überprüfung der Normalverteilung
qqnorm(df$Anwesenheit, main="QQ-Plot: Anwesenheit")
qqline(df$Anwesenheit, col="red")
qqnorm(df$Prüfungsnote, main="QQ-Plot: Prüfungsnote")
qqline(df$Prüfungsnote, col="red")
# Shapiro-Wilk-Test für Normalverteilung
shapiro.test(df$Anwesenheit)
##
## Shapiro-Wilk normality test
##
## data: df$Anwesenheit
## W = 0.94603, p-value = 0.0004587
shapiro.test(df$Prüfungsnote)
##
## Shapiro-Wilk normality test
##
## data: df$Prüfungsnote
## W = 0.98766, p-value = 0.4836
➡ Bei der Varialbe “Anwesenheit” liegt keine Normalverteilung vor (p<0,05), daher ist die Spearman-Korrelation vorzuziehen.
# Pearson-Korrelation mit Signifikanztest berechnen
spearman_result <- cor.test(df$Anwesenheit, df$Prüfungsnote, method = "spearman")
## Warning in cor.test.default(df$Anwesenheit, df$Prüfungsnote, method =
## "spearman"): Kann exakten p-Wert bei Bindungen nicht berechnen
print(spearman_result)
##
## Spearman's rank correlation rho
##
## data: df$Anwesenheit and df$Prüfungsnote
## S = 306508, p-value < 2.2e-16
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
## rho
## -0.8392315
Korrelationskoeffizient (r = -0.839)
- Sehr starke negative Korrelation. Je höher die Anwesenheit, desto
besser die Prüfungsnote (geringere Werte).
p-Wert < 2.2e-16 (p < 0.05)
- Extrem signifikant. Die Wahrscheinlichkeit, dass dieser Zusammenhang
zufällig ist, ist praktisch null.
Der Tutoriumsbesuch ist nominal (Ja/Nein = 2 Kategorien), die Prüfungsnote ist metrisch. ➡ Punktbiseriale Korrelation
# Notwendige Bibliothek laden
library(readr)
# Datensatz einlesen (die CSV-Datei muss im Arbeitsverzeichnis gespeichert sein)
df <- read_csv("df.csv", show_col_types = FALSE)
Da Tutorium eine nominale dichotome Variable (Ja/Nein) ist, muss sichergestellt werden, dass sie als binäre numerische Variable interpretiert wird.
# Umwandlung von Tutorium in binär (0 = Nein, 1 = Ja)
df$Tutorium <- ifelse(df$Tutorium == "Ja", 1, 0)
# Punktbiseriale Korrelation berechnen
cor.test(df$Tutorium, df$Prüfungsnote, method="pearson")
##
## Pearson's product-moment correlation
##
## data: df$Tutorium and df$Prüfungsnote
## t = -0.23651, df = 98, p-value = 0.8135
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.2192740 0.1733467
## sample estimates:
## cor
## -0.02388463
Korrelationskoeffizient (r = -0.024)
- Sehr schwache negative Korrelation bedeutet kaum Zusammenhang zwischen
Tutoriumsbesuch und Prüfungsnote. Der Effekt ist praktisch nicht
vorhanden
p-Wert = 0.8135 (p > 0.05)
- Kein statistischer Zusammenhang zwischen Tutoriumsbesuch und
Prüfungsnote.
Da eine ordinale (Sozialer Hintergrund) und eine binäre nominale Variable (Tutoriumsbesuch) vorliegt, ist die Rang-Punktbiseriale Korrelation geeignet.
# Notwendige Bibliothek laden
library(readr)
# Datensatz einlesen (die CSV-Datei muss im Arbeitsverzeichnis gespeichert sein)
df <- read_csv("df.csv", show_col_types = FALSE)
Da Sozialer_Hintergrund ordinal ist, muss sichergestellt werden, dass die Werte als numerische Ränge interpretiert werden.
# Umwandlung von Sozialer Hintergrund in numerische Werte
df$Sozialer_Hintergrund <- as.numeric(factor(df$Sozialer_Hintergrund,
levels = c("Kein Abschluss", "Realschule", "Abitur", "Studium"),
ordered = TRUE))
# Umwandlung von Tutorium in binär (0 = Nein, 1 = Ja)
df$Tutorium <- ifelse(df$Tutorium == "Ja", 1, 0)
# Wilcoxon-Rangsummentest (Rang-Punktbiseriale Korrelation)
wilcox.test(Sozialer_Hintergrund ~ Tutorium, data = df, exact = FALSE)
##
## Wilcoxon rank sum test with continuity correction
##
## data: Sozialer_Hintergrund by Tutorium
## W = 1214.5, p-value = 0.8051
## alternative hypothesis: true location shift is not equal to 0
p-Wert = 0.8051 (p > 0.05)
- Kein signifikanter Unterschied. Sozialer Hintergrund beeinflusst
nicht, ob Studierende ein Tutorium besuchen. Die Gruppen unterscheiden
sich nicht systematisch.
Da zwei nominale Variablen verglichen werden, ist Cramérs V geeignet.
# Notwendige Bibliothek laden
library(readr)
# Datensatz einlesen (die CSV-Datei muss im Arbeitsverzeichnis gespeichert sein)
df <- read_csv("df.csv", show_col_types = FALSE)
str(df$Studiengang)
## chr [1:100] "Sozialwissenschaften" "Sozialwissenschaften" ...
str(df$Sozialer_Hintergrund)
## chr [1:100] "Studium" "Abitur" "Realschule" "Kein Abschluss" "Realschule" ...
Da Sozialer_Hintergrund ordinal ist, muss sichergestellt werden, dass die Werte als numerische Ränge interpretiert werden.
df$Studiengang <- as.factor(df$Studiengang)
df$Sozialer_Hintergrund <- as.factor(df$Sozialer_Hintergrund)
# Kreuztabelle erstellen
contingency_table <- table(df$Studiengang, df$Sozialer_Hintergrund)
# Chi-Quadrat-Test durchführen
chi2_test <- chisq.test(contingency_table)
# Cramérs V berechnen (Formel aus dem Chi-Quadrat-Test)
cramers_v <- sqrt(chi2_test$statistic / (sum(contingency_table) * (min(dim(contingency_table)) - 1)))
# Ergebnisse ausgeben
print(chi2_test) # Zeigt den p-Wert und die Teststatistik
##
## Pearson's Chi-squared test
##
## data: contingency_table
## X-squared = 7.1697, df = 6, p-value = 0.3054
print(cramers_v) # Zeigt Cramérs V Wert
## X-squared
## 0.1893366
Cramérs V = 0.189
- Wert ist unter 0.2. Sehr schwacher Zusammenhang.
p-Wert = 0.3054 (p > 0.05)
- Kein signifikanter Zusammenhang. Das bedeutet, dass die Verteilung der
Studierenden auf die Studiengänge nicht signifikant vom sozialen
Hintergrund abhängt.