Verdeckte Korrelationen sichtbar machen in R mit linearen Modellen

Nach meinem Eindruck erhalten verdeckte Korrelationen weniger Aufmerksamkeit als ihre bekannteren Kollegen, die Scheinkorrelationen. Dabei stellen beide Phänomene ähnliche Herausforderungen für die Datenanalyse dar.

Eine verdeckte Korrelation liegt vor, wenn ein Zusammenhang zwischen zwei Variablen besteht, aber nicht direkt sichtbar wird, weil er von (mindestens) einer anderen Variable verdeckt oder überlagert wird.

Verdeckte Korrelationen sichtbar machen in R: Video mit R-Code und Erläuterung

Kein Zusammenhang zwischen Lernzeit und Prüfungserfolg?

Die Daten, die wir heute verwenden, sind fiktiv und auf meinem github-Profil zu finden, gemeinsam mit den wenigen R-Code-Zeilen (detecting-hidden-corr.R sowie studies.rds).

Es geht um die Frage: Wie wirkt sich die Anzahl der Lernstunden auf den Prüfungserfolg aus? Ein erstes simples lineares Modell sieht so aus:

# Daten laden
studies <- readRDS("studies.rds")

# Modell: Punktzahl erklärt über Anzahl der Lernstunden
mod1 <- lm(score ~ study_hours, data = studies)
summary(mod1)

Das Ergebnis ist nicht unbedingt intuitiv:

Regressionsmodell: Kein Effekt der Lernstunden auf den Prüfungserfolg

Laut diesem Modell gibt es keinen Effekt der Anzahl der Lernstunden auf den Prüfungserfolg (p = 0,711 – deutlich nicht signifikant).

Das wäre fatal: Wie soll man Studenten motivieren zu lernen, wenn sich das gar nicht lohnt? Gibt es eine Erklärung für diesen Befund?

Alkohol und Punktzahl in einer Prüfung

In dieser Studie wurde auch der Alkoholkonsum der Studenten während der Lernzeit erhoben. Welchen Einfluss hat er?

mod2 <- lm(score ~ alc, data = studies)
summary(mod2)

Hier fällt das Ergebnis weniger überraschend aus:

Regressionsmodell: Einfluss des Alkoholkonsums auf den Prüfungserfolg

Der Effekt ist deutlich signifikant (p < 0,001). Das „e-09“ ist wissenschaftliche Notation, der Wert liegt sehr nahe an 0: die 9,31 sehen wir erst nach neun Nullen. In R kann man schreiben:

format(9.31e-09, scientific = FALSE)
[1] "0.00000000931"

Wichtig ist natürlich auch das Vorzeichen des alc-Koeffizienten: negativ. Da es sich um fiktive Daten handelt, verzichten wir auf eine exakte Interpretation der Einheiten. Jedenfalls gilt: Je höher der Alkoholkonsum während der Vorbereitungszeit auf eine Prüfung, desto geringer die Punktzahl.

Drittvariablenkontrolle: Lernstunden und Alkoholkonsum in einem gemeinsamen Modell

Wie sieht es aus, wenn wir die Lernstunden und den Alkoholkonsum in einem gemeinsamen Regressionsmodell untersuchen?

mod3 <- lm(score ~ study_hours + alc, data = studies)
summary(mod3)

Nun wird es interessant:

Regressionsmodell: Effekte der Lernzeit und des Alkoholkonsums auf den Prüfungserfolg

Der Effekt des Alkohols bleibt wie oben gesehen signifikant negativ. Spannender ist jedoch der Effekt der Lernstunden: Er ist nun (wenn auch knapp) signifikant positiv (p = 0,048). Das heißt: Erst wenn wir den Alkoholkonsum berücksichtigen, zeigt sich der erwartete Zusammenhang, wonach der Prüfungserfolg mit zunehmender Anzahl Lernstunden steigt.

Verdeckte Korrelationen: Abschließende Überlegungen

Das Vorgehen beim Sichtbarmachen von verdeckten Korrelationen ist analog zum Vorgehen beim Aufdecken von Scheinkorrelationen – siehe den Beitrag Scheinkorrelationen aufdecken in R mit linearen Regressionsmodellen. Auch hier besteht die „Lösung“ nicht im einen „richtigen“ Modell, sondern wir verstehen die Zusammenhänge zwischen Variablen im Datensatz dadurch, dass wir mehrere Modelle vergleichen: Effekte einzeln betrachtet sowie ein gemeinsames Modell. Die zentrale Frage lautet: Wie verändern sich Effekte, wenn zusätzliche Variablen ins Modell aufgenommen werden bzw. Variablen aus dem Modell ausgeschlossen werden? Gäbe es keinerlei Zusammenhänge (statistisch gesprochen: Korrelation = 0) zwischen den unabhängigen Variablen, dann dürften sich Effekte nicht verändern, wenn Variablen dazu kommen oder weggelassen werden. Da solche Zusammenhänge jedoch bestehen, verändern sich Effekte. Im Extremfall von sehr starken Korrelationen spricht man von Multikollinearität, was problematisch für die Modellschätzungen ist und zu extrem hohen, instabilen Koeffizienten führen kann.

Bei diesem Vorgehen der Modellvergleiche mit zusätzlichen Variablen spricht man von Drittvariablenkontrolle. Der Alkoholkonsum kann in unserem Beispiel als Kontrollvariable bezeichnet werden.

Inhaltlich könnte das Ergebnis bedeuten: Einige Studenten haben während des Lernens Alkohol konsumiert (oder standen zumindest noch unter Alkoholeinfluss) und waren dadurch nicht effizient im Vergleich zu Studenten, die etwas kürzer, aber nüchtern lernten. So sieht es so aus, als ob längere Lernzeiten sich nicht lohnten. Den Alkoholkonsum als Kontrollvariable aufzunehmen, ist eine Methode, nachträglich für gleiche Bedingungen zu sorgen: „Berechne den Effekt der Lernstunden so, als hätten alle gleich viel (oder wenig) Alkohol konsumiert“. Andere Formulierung: Unter Konstanthaltung des Alkoholkonsums wirken sich mehr Lernstunden positiv auf den Prüfungserfolg aus.

Das Beispiel wurde bewusst einfach gehalten. Vernachlässigt wurde z. B. Regressionsdiagnostik. Oft wird es hilfreich sein, Zusammenhänge grafisch darzustellen – vergleiche den Beitrag Regressionsmodelle visualisieren in R: Mit Interaktionseffekten, 3D (ggplot2, plotly).

Literaturtipps: Das Buch von Andy Field (links) besticht durch schrägen Humor und ist dadurch recht kurzweilig zu lesen. Er berichtet mit Teenager-Fotos von seiner eigenen Karriere als Rockmusiker und findet immer wieder absurde Beispiele, wie etwa Hygienebedingungen bei mehrtägiger Teilnahme an einem Rockfestival.

Viel Erfolg bei Euren Datenanalysen!

Freue mich über Kommentare!