In vielen Forschungsprojekten willst Du herausfinden, ob und wie stark zwei Merkmale zusammenhängen – etwa Körpergröße ↔ Gewicht, Lernzeit ↔ Prüfungsnote oder CO₂-Ausstoß ↔ Einkommen. Dafür liefern Korrelationsanalysen einfache, aber wichtige Werkzeuge.
Korrelation (Pearsons r)
Die Pearson’sche Produkt-Moment-Korrelation r misst die Stärke und Richtung eines linearen Zusammenhangs zweier metrischer Variablen. Werte liegen zwischen -1 (perfekt negativ), 0 (kein linearer Zusammenhang) und +1 (perfekt positiv).
Die Voraussetzungen für die Durchführung der Pearson-Korrelation ist:
- Metrische Skala (Intervall/Ratio).
- Lineare Beziehung – checke immer per Streudiagramm!
- Keine groben Ausreißer; sie können r massiv verzerren.
- Homoskedastizität und annähernd Normalverteilung sind hilfreich, aber nicht zwingend für die reine Schätzung von r; für Signifikanztests dagegen schon.
Das wäre die Formel (aber die musst du dir nicht unbedinkt merken):

In R lässt sich das so umsetzen:
# Beispiel: Körpergröße vs. Gewicht
data <- data.frame(
groesse = c(168,172,181,176,169,185,160,178,190,174),
gewicht = c(62, 70, 88, 75, 65, 92, 55, 80, 95, 72)
)
# Visualisierung
plot(data$groesse, data$gewicht,
xlab = "Größe (cm)", ylab = "Gewicht (kg)",
main = "Scatterplot Größe vs. Gewicht")
abline(lm(gewicht ~ groesse, data), lty = 2)
# Pearson-Korrelation + Test
cor(data$groesse, data$gewicht, method = "pearson")
cor.test(data$groesse, data$gewicht, method = "pearson")
Die Funktion cor.test() gibt Dir neben rr einen t-Wert, das 95 %-Konfidenzintervall und den p-Wert aus.
Für die Interpretation achtest du vor allem auf diese drei Werte:
- Betrag von r zeigt Stärke:
- 0 – 0.3: schwach
- 0.3 – 0.6: moderat
- 0.6 – 1.0: stark
- Vorzeichen zeigt Richtung.
- Signifikanz (p-Wert) sagt, ob der beobachtete Zusammenhang zufällig sein könnte. Doch: Signifikant ≠ praktisch relevant (Stichwort Effektgröße).
Achtung Causality-Trap: “Correlation does not imply causation” (siehe Kausalität)
Rangkorrelation (Spearmans rho)
Spearmans rho misst die monotone Beziehung zweier Variablen, indem es die Daten in Ränge transformiert und anschließend Pearson-r auf diese Ränge anwendet. Robuster gegenüber Ausreißern & Nicht-Normalität; geeignet für Ordinaldaten.
Du verwendest die Rangkorrelation (gegenüber der Pearson-Korrelation) also wenn…
- Die Daten ordinal skaliert sind oder Ausreißer / Schiefe aufweisen.
- Die Beziehung ist monoton, aber nicht zwingend linear (z. B. saturierender Effekt).
In R setzt du das so um:
# Beispiel: Stress-Rang vs. Prüfungsrang
set.seed(1)
stress <- sample(1:100, 15) # 1 = wenig Stress
note <- sample(1:100, 15) # 1 = beste Note
cor.test(stress, note, method = "spearman",
exact = FALSE) # exact=FALSE für größere n
Ergebnis enthält rho und p-Wert .
Für die Interpretation könnte man sagen (Angenommen rho=-0.72 (p < 0.01)): Höherer Stress-Rang (mehr Stress) geht monoton mit schlechteren Rängen in der Prüfung einher.
Kendall-Tau
Kendall’s Tau basiert auf Paar-Weise-Vergleichen (concordant vs. discordant Paare). Es ist besonders robust bei kleinen Stichproben und vielen Bindungen. Werte: [-1,1].
cor.test(stress, note, method = "kendall")
Wann ist Kendall-Tau besser als Spearman?
- Viele Bindungen (gleiche Werte) in den Rängen.
- Sehr kleines n (< 20).
Visualisierung
- Basis-Plot
plot(x, y); abline(lm(y ~ x)) ggplot2mit glatter Linielibrary(ggplot2) ggplot(data, aes(groesse, gewicht)) + geom_point() + geom_smooth(method = "lm", se = FALSE)- Korrelationsmatrix als Heatmap
library(reshape2); library(ggplot2) m <- cor(data, method = "spearman") m2 <- melt(m) ggplot(m2, aes(Var1, Var2, fill = value)) + geom_tile() + scale_fill_gradient2(limits = c(-1,1)) + theme_minimal()
Vergleich & Entscheidungshilfe
| Kriterium | Pearson $r$ | Spearman $\rho$ | Kendall $\tau$ |
|---|---|---|---|
| Datenniveau | Metrisch | Ordinal+ | Ordinal+ |
| Beziehung | Linear | Monoton | Monoton |
| Robust gegen Ausreißer | Nein | Mittel | Hoch |
| Kleines n + Bindungen | Mittel | Mittel | Gut |
| Test-Statistik | t-Verteilung | t-Approx. | z-Approx. |
Beispielstudie
Du sammelst Daten von 60 Studis: mg Koffein pro Tag vs. Reaktionszeit (ms).
set.seed(42)
koffein <- rpois(60, lambda = 200)
reaktion <- 300 - 0.15*koffein + rnorm(60, 0, 20)
df <- data.frame(koffein, reaktion)
Dann schauen wir uns das ganze mal visuell und analytisch an:
plot(df$koffein, df$reaktion) # Streuplot
cor.test(df$koffein, df$reaktion)
Ergebnis : $r\approx -0.65, p < 0.001$ → höherer Koffein-Konsum geht (linear) mit kürzerer Reaktionszeit einher.
Weil Ausreißer (> 450 mg) auftauchen, vergleichst Du am besten auch mit Spearman:
cor.test(df$koffein, df$reaktion, method="spearman")
Oft ist $\rho$ etwas kleiner (z. B. −0.60), bestätigt aber die monotone Tendenz.
