Korrelationen berechnen

Wenn du nicht nur die Stärke des Zusammenhangs interpretieren möchtest, sondern auch die Richtung des Zusammenhangs, kannst du die Korrelation berechnen.

In diesem Lernblock werden zwei Korrelationsmaße vorgestellt:

  • Pearson’s r

  • Spearman’s \(\rho\)

Für die Berechnung von Pearson’s r müssen folgende Bedingungen erfüllt sein:

  • (pseudo-)metrische Variablen

  • lineare (monotone) Beziehung

  • Varianzgleichheit

  • (bivariate Normalverteilung)

Für die Berechnung von Spearman’s \(\rho\) müssen dagegen nur folgende Bedingungen erfüllt sein:

  • (mind.) ordinale Variablen

  • monotone Beziehung

Lineare und nicht lineare Beziehungen

In der Abbildung sind vier Beispiele vorgestellt, die alle nahezu gleiche statistische Maßzahlen ausgeben würden (Ascombe-Quartett).

Linearität und Nicht-Linearität
Linearität und Nicht-Linearität

Feld A zeigt eine lineare und monotone Beziehung zwischen zwei Variablen. Hier wäre die Anwendung der Berechnung von Pearson’s r korrekt. Feld B zeigt zwar eine monotone Beziehung, diese ist aber nicht linear. In diesem Fall kann Spearman’s \(\rho\) berechnet werden. Feld C zeigt, wie ein Ausreißer die Beziehungsstruktur verändern kann und hier würden beide Korrelationsmaße einen verzerrten Wert ausgeben. Feld D zeigt eine nicht lineare wie nicht-monotone Beziehung.

Deutlich wird hier, dass vor der Berechnung von Maßzahlen die grafische Analyse hilfreich bzw. erforderlich ist!

Beispiel Korrelation

Nun sollst du die Korrelation zwischen Trust in Parliament (trstprl) und Trust in Politicians (trstplt) aus dem PSS berechnen.

Beide Variablen sind pseudo-metrische Variablen, daher solltest du Pearson’s r berechnen.

Dafür musst du die Annahmen von Pearson’s r testen:

  • Stichprobe von verbundenen Werten \(\checkmark\)

  • beide Variablen metrisch \(\checkmark\)

  • Beziehung zwischen Variablen ist linear

Prüfen der Annahme

Du kannst dies einfach prüfen, in dem du einen Scatterplot erstellst. Dazu kannst du die base-Funktion plot() nutzen. Das leistungsstärkere Grafik-library ggplot2 lernen wir im letzten Lernblock kennen.

plot(
  pss$trstprl, 
  pss$trstplt
)

Da die Daten nur pseudometrisch sind und sich viele Datenpunkte (ganzzahlig) überlappen, kannst du aus dem Plot wenig erkennen.

Lösung: Nutze die Funktion jitter() um die Punkte stärker zu streuen:

plot(
  jitter(
    pss$trstprl, 
    3
  ) ~ 
    jitter(
      pss$trstplt, 
      3
    )
)

Diese grafische Analyse bedarf etwas Gewöhnung: Sofern du keine klaren anderen Muster wie im Ascombe-Quartett siehst, kannst du von einer linearen Beziehung ausgehen.

Abschließend können wir also festhalten, dass die Bedingungen erfüllt sind:

  • Stichprobe von verbundenen Werten \(\checkmark\)

  • beide Variablen metrisch \(\checkmark\)

  • Beziehung zwischen Variablen ist linear \(\checkmark\)

\(\Rightarrow\) Du kannst nun Pearson’s r berechnen!

Berechnen des Koeffizienten

Um den Korrelationskoeffizienten zu berechnen, nutzt du die Funktion cor() (sowohl für Pearson’s r als auch für Spearman’s \(\rho\)). Zuerst musst du die zwei Variablen in der Funktion benennen. Anschliessend solltest du den Korrelationskoeffizient wählen und abschliessend noch auswählen wie mit NA's in den Variablen umgegangen wird. Hier löschst du jede Zeile, die auf eine der zwei Variablen einen NA-Wert hat.

cor(
  pss$trstprl, 
  pss$trstplt, 
  method = "pearson",  # alternativ hier "spearman"  
  use = "complete.obs"
)      
## [1] 0.2318401

Die Ausgabe zeigt einen Korrelationskoeffizienten von \(r \approx 0.232\) an. In dieser Ausgabe ist kein p-Wert inkludiert und du kannst keine Aussage über die Signifikanz treffen.

Berechnen des Koeffizienten mit library psych

Mit der library psych kannst du die Funktion corr.test() nutzen, die auch den Signifikanztest liefert:

install.packages("psych")
library("psych")
corr.test(
  pss$trstprl, 
  pss$trstplt,
  method = "pearson",      
  use = "complete.obs"
)     
## Call:corr.test(x = pss$trstprl, y = pss$trstplt, use = "complete.obs", 
##     method = "pearson")
## Correlation matrix 
## [1] 0.23
## Sample Size 
## [1] 4954
## These are the unadjusted probability values.
##   The probability values  adjusted for multiple tests are in the p.adj object. 
## [1] 0
## 
##  To see confidence intervals of the correlations, print with the short=FALSE option

Dieser Test generiert drei Matrizen (Korrelationsmatrix, Matrix der Stichprobengröße, Matrix der p-Werte), die du später für die Visualisierung nutzen kannst.

Die benötigte weitere Information des p-Werts findet sich an der letzten Stelle. Hier liegt ein p-Wert von \(0\) vor.

Was bedeutet der p-Wert an dieser Stelle?

Berechnen mehrerer Korrelationen

Mit beiden Funktionen kannst du nicht nur die Korrelation zwischen zwei Variablen berechnen, sondern direkt mehr als zwei Variablen angeben. Es wird dann jeweils paarweise zwischen allen Variablen die Korrelation berechnet. Hierfür nutzt du die Funktion c(), um anzugeben zwischen welchen Variablen du paarweise Korrelationswerte bekommen möchtest:

cor(
  pss[
    ,
    c(
      "trstprl", 
      "trstplt",
      "trstprt",
      "trstlgl"
    )
  ],
  method = "pearson",
  use = "complete.obs"
)  
##           trstprl    trstplt   trstprt    trstlgl
## trstprl 1.0000000 0.22712300 0.3824902 0.22536686
## trstplt 0.2271230 1.00000000 0.3992831 0.05203906
## trstprt 0.3824902 0.39928307 1.0000000 0.24868786
## trstlgl 0.2253669 0.05203906 0.2486879 1.00000000
corr.test(
  pss[
    ,
    c(
      "trstprl",
      "trstplt",
      "trstprt",
      "trstlgl"
    )
  ],
  method = "pearson",
  use = "complete.obs"
)  
## Call:corr.test(x = pss[, c("trstprl", "trstplt", "trstprt", "trstlgl")], 
##     use = "complete.obs", method = "pearson")
## Correlation matrix 
##         trstprl trstplt trstprt trstlgl
## trstprl    1.00    0.23    0.38    0.23
## trstplt    0.23    1.00    0.40    0.05
## trstprt    0.38    0.40    1.00    0.25
## trstlgl    0.23    0.05    0.25    1.00
## Sample Size 
##         trstprl trstplt trstprt trstlgl
## trstprl    4965    4954    4948    4953
## trstplt    4954    4989    4972    4977
## trstprt    4948    4972    4983    4971
## trstlgl    4953    4977    4971    4988
## Probability values (Entries above the diagonal are adjusted for multiple tests.) 
##         trstprl trstplt trstprt trstlgl
## trstprl       0       0       0       0
## trstplt       0       0       0       0
## trstprt       0       0       0       0
## trstlgl       0       0       0       0
## 
##  To see confidence intervals of the correlations, print with the short=FALSE option

In beiden Ausgaben erscheint eine Korrelationmatrix. Die Variablennamen sind jeweils in der Spalte angegeben und in den Zeilen. Die Diagonale ist stets \(1\), denn der Zusammenhang zwischen der Variable und sich selbst ist \(1\) (also perfekt!).

Leseprobe! Wie hoch ist der Korrelationskoeffizient für den Zusammenhang zwischen trstplt und trstprt?

Wie stellen wir nun Korrelationen grafisch dar?