Partielle Korrelation in R rechnen

von | 9 Dec, 2022 | Korrelation, R

1 Ziel der partiellen Korrelation

Eine partielle Korrelation untersucht zwei Variablen auf eine (lineare) Beziehung bzw. einen Zusammenhang unter Kontrolle einer oder mehrerer dritter Variablen. Es ist demnach eine einfache bivariate Korrelation in R, die einen oder auch mehrere weitere Einflussvariablen auf beide zu korrelierenden Variablen herausrechnet. Man bekommt, wenn man so will, eine “bereinigte” Korrelation.

Wie bei jedweder Korrelation soll die Frage beantwortet werden, ob zwischen zwei Variablen ein a) positiver, b) negativer oder c) kein Zusammenhang besteht. Der jeweils ermittelte Korrelationskoeffizient ist stets zwischen den Maximalwerten -1 und +1 definiert. -1 ist ein perfekt negativer (linearer) Zusammenhang und +1 ein perfekt positiver (linearer) Zusammenhang.

Interpretation der Fälle a)-c)

a) Wenn der Wert einer Variable größer wird, wird der Wert der anderen Variable ebenfalls größer. Das ist positive Korrelation. Zum Beispiel: Je größer ein Mensch, desto schwerer ist er. Hierbei kann man zusätzlich für das Alter kontrollieren. Meist werden Menschen im Alter etwas schwerer.

b) Wenn der Wert einer Variable größer wird, wird der Wert der anderen Variable kleiner. Das ist negative Korrelation. Zum Beispiel: Je größer der Zuckergehalt der Nahrung, desto weniger gesunde Zähne hat der Mensch. Auch hier kann eine Kontrolle für das Alter einen zusätzlichen Nutzen haben, da auch im Alter die Zähne schlechter werden.

c) Die Werte der Variablen ändern sich scheinbar vollkommen beliebig und es gibt kein Muster wie bei a) oder b). Zum Beispiel: Anzahl Haare und Schuhgröße.

Wichtiger Hinweis: Ein Korrelation kann bestenfalls ein Indiz für einen kausalen Zusammenhang sein. Nur weil eine Korrelation existiert, bedeutet das nicht, dass die eine Variable die andere beeinflusst. Dies würde man theoretisch begründen müssen und die Hypothese entsprechend mit einer einfachen linearen Regression oder besser noch multiplen linearen Regression untersuchen.

Letztere kontrolliert ebenfalls für den Einfluss von Drittvariablen.

Beispiel: Das Alter der Königin von England und die Anzahl der Menschen auf der Erde korrelierten sehr stark – das eine hat mit dem anderen was zu tun. Dies nennt sich Scheinkausalität, da eine Ursache-Wirkungs-Beziehung zwischen den Variablen nicht existiert und sie nur zufällig korrelieren. Von einer Korrelation sollte also auf keinen Fall auf eine Kausalität geschlossen werden!

 

Am einfachsten kann eine Korrelation mit einem Streudiagramm bzw. Punktdiagramm veranschaulicht werden. Eine Kontrolle für eine weitere Variable ist dabei allerdings NICHT möglich, weswegen dies hier nicht dargestellt werden kann.

 


 

2 Partielle Korrelation – Analytisches Vorgehen in R

Dargestelltes Beispiel:

  • Korrelation von Einkommen und Bildungsjahren.
  • Kontrolle für Motivation und IQ

Ziel ist es demnach festzustellen, wie Einkommen und Bildungsjahre zusammenhängen, wenn man die potenziell verzerrende Wirkung von Motivation und IQ auf beide kontrolliert, also herausrechnet.

 

2.1 Berechnung der partiellen Korrelation in R

2.1.1 Bivariate Korrelation zum Vergleich

Zunächst ist es empfehlenswert, die zu korrelierenden Variablen (Einkommen und Bildungsjahre) mitsamt den zu kontrollierenden Variablen (Motivation und IQ) in einen separaten Data Frame zu verschieben. Das dient der Vergleichbarkeit, wie sich die Korrelation von Einkommen und Bildungsjahren verändert, wenn für Motivation und IQ kontrolliert wird.


data2 <- subset(df, select=c(Einkommen, Bildungsjahre, Motivation, IQ))

Für den Data Frame "data2" wird nun lediglich eine Korrelationsmatrix mit cor() angefordert:


cor(data2)

# oder auf 3 Dezimalstellen gerundet
format(round(cor(data2),3))

Das Ergebnis ist folgendes:


              Einkommen Bildungsjahre Motivation IQ     
Einkommen     "1.000"   "0.831"       "0.447"    "0.703"
Bildungsjahre "0.831"   "1.000"       "0.345"    "0.607"
Motivation    "0.447"   "0.345"       "1.000"    "0.748"
IQ            "0.703"   "0.607"       "0.748"    "1.000"

Die bivariate Korrelation von Einkommen und Bildungsjahre beträgt 0,831.

 

2.1.2 Partialkorrelation berechnen

Für die Partialkorrelation wird das psych-Paket benötigt und hieraus die partial.r()-Funktion.

  • Zuerst wird die Datenquelle angegeben. Dies kann der ursprüngliche oder der neue Data Frame sein.
  • Danach kommt mit cs(Einkommen, Bildungsjahre) die zu korrelierenden Variablen.
  • Daran schließen sich cs(Motivation, IQ) die Kontrollvariablen an.
  • Mit method="pearson" wird der Pearson-Korrelationskoeffizient verwendet. Außerdem möglich sind "spearman" und "kendall".
    
    library(psych)
    partial.r(df, cs(Einkommen, Bildungsjahre), cs(Motivation, IQ), method="pearson")
    

    Das Ergebnis ist eine 2x2-Matrix:

    
    partial correlations 
                  Einkommen Bildungsjahre
    Einkommen           1.0           0.7
    Bildungsjahre       0.7           1.0
    

     

    2.2 Interpretation der Ergebnisse der partiellen Korrelation

    • In der Tabelle ist erkennbar, dass die bivariate Korrelation des Pearson-Korrelationskoeffizient zwischen Einkommen und Bildungsjahren positiv (r = 0.831) ist. Mit steigenden Bildungsjahren steigt das Einkommen und umgekehrt.
    • Es ist aber auch erkennbar, dass Einkommen und IQ positiv korrelieren (r = 0.703).
    • Zusätzlich hat Bildungsjahre mit dem Intelligenzquotienten eine positive Korrelation (r = 0.601).
    • Wird für IQ und Motivation kontrolliert, ergibt sich eine Korrelation von Bildungsjahren und Einkommen von 0.7. Die Korrelation ist nun schwächer, wenn für IQ und Motivation kontrolliert wird
    • Demnach war es also sinnvoll für IQ und Motivation zu kontrollieren. Die Korrelation zwischen Einkommen und Bildungsjahren ist immer noch positiv, allerdings schwächer als vorher

     

    2.3. Ermittlung von p-Werten

    Sollten es notwendig sein, lassen sich mit dem ppcor-Paket und der pcor()-Funktion die p-Werte berechnen. Hier ist es zwingend notwendig, dass der einzugebende Data Frame nur die zu korrelierenden und die Kontrollvariablen enthält. Dies haben wir oben mit data2 bereits erledigt.
    Der Output ist umfangreicher, weswegen ich alles in ein separates Objekt (pkor) speichere und mit dann gezielt nur die p-Werte für die jeweiligen Partialkorrelation ausgeben lassen (pkor$p.value)

    
    install.packages("ppcor")
    library(ppcor)
    pkor <- pcor(data2, method="pearson")
    pkor$p.value
    

    Hier ist erkennbar, dass der p-Wert für die Korrelation zwischen Einkommen und Bildungsjahre 1.587E-08 (=0,00000001587) beträgt und somit unter allen typischen Alphaniveaus liegt. Somit ist die Partialkorrelation signifikant.

    
                     Einkommen Bildungsjahre   Motivation           IQ
    Einkommen     0.000000e+00  1.587185e-08 8.436886e-01 1.507833e-02
    Bildungsjahre 1.587185e-08  0.000000e+00 3.874534e-01 3.750285e-01
    Motivation    8.436886e-01  3.874534e-01 0.000000e+00 4.823678e-08
    IQ            1.507833e-02  3.750285e-01 4.823678e-08 0.000000e+00
    

    Hinweis: Sämtliche angezeigte p-Werte sind für die jeweiligen Partialkorrelationen zu verstehen. Das heißt, die Partialkorrelation zwischen Einkommen und IQ hat einen p-Wert von 0.015, wenn gleichzeitig für die Einflüsse von Bildungsjahren und Motivation kontrolliert wird. Mit pkor$estimate lassen sich bei Bedarf die Korrelationswerte ausgeben.

     

    3 Videotutorial

     

    Weitere nützliche Tutorials findest du auf meinem YouTube-Kanal.

     

     

Hat dir der Beitrag geholfen?

Dann würde ich mich über eine kleine Spende freuen, die es mir erlaubt, weiterhin kostenfreie Inhalte zu veröffentlichen.
Alternativ kannst du über meinen Amazon Affiliate-Link einkaufen – ohne Zusatzkosten.

Vielen Dank und viel Erfolg!

Über mich

Björn Walther

Ein 💚 für Statistik & Datenanalyse

Excel Online-Kurs

YouTube-Kanal

Inhalt