Mehrebenenanalyse mit R (HLM mit R)
– Visualisierung zum Explorieren der Daten

Arndt Regorz, Dipl. Kfm. & MSc. Psychologie, 13.12.2023

Zu Beginn einer Mehrebenenanalyse ist es meistens hilfreich, wenn man sich die Daten zunächst einmal mit Streudiagrammen pro Level 2 Einheit ansieht. Dies macht es insbesondere leichter, später zu entscheiden, für welche Prädiktoren Random Slopes sinnvoll sind.

Dieses Tutorial zeigt, wie man mit dem Package ggplot2 entsprechende Scatterplots aufrufen kann.

library(ggplot2)

Für dieses Beispiel verwende ich den gleichen Datensatz wie für meine anderen Grundlagentutorials, aus dem Buch von Hox et al., Kapitel 2.

popular2neu <- popular2

Wenn man mit ggplot2 Streudiagramme getrennt je Level 2 Einheit aufrufen möchte, dann ist zunächst sicherzustellen, dass die Gruppenvariable (hier: class) als Faktorvariable angelegt ist.

popular2neu$class <- factor(popular2neu$class)

Wir werden für zwei Level 1 Prädiktoren Streudiagramme mit der abhängigen Variable (Popularität) betrachten, für die Extraversion der Schülerinnen und Schüler und für deren Geschlecht.

# Prädiktor 1: Extraversion

Es gibt im Prinzip zwei mögliche Darstellungsformen: Alle Slopes farbig in einer Grafik oder eine gesonderte (kleine) Grafik für jede Level 2 Einheit.

Die Grundeinstellung für ein Streudiagramm mit ggplot2 ist jeweils gleich:

  • Es wird der Dataframe angegeben, in dem sich die Variablen befinden.
  • Es wird im Rahmen der aes() Funktion angegeben, welche Variable auf die x-Achse und welche auf die y-Achse geschrieben werden soll.
  • Es wird das geom_smooth() hinzugefügt, mit der Methode lm (Regressionsgerade), abgeschaltenten Standardfehlern und abgeschalteten Legenden.
  • Wichtig ist noch bei der Eingabe, dass das Pluszeichen jeweils am Ende der Zeile steht, damit das Programm weiß, dass der Befehl noch auf der nächsten Zeile weitergeht.

    Hier kommt noch hinzu in der aes() Funktion die Angabe, welche Variable (Level 2 Einheiten) die Farbe steuert.

    # 1a farbig nach Gruppe
    ggplot(data=popular2neu,
    aes(x=extrav, y=popular, color=class)) +
    geom_smooth(method=lm, se = F, show.legend = F)

    Grafik HLM 9 1


    Wir sehen hier, dass es doch ziemliche Unterschiede im Zusammenhang zwischen Extraversion und Popularität zwischen den Level 2 Einheiten (hier: Schulklassen) gibt.

    Bei einem gesonderten Streudiagramm pro Gruppe / Level 2 Einheit entfällt die Angabe der Farbe in der aes() Funktion. Stattdessen kommt hinzu facet_wrap(), wobei in der innersten Klammer der Name der Level 2 Einheit stehen muss.

    # 1b gesondert je Gruppe
    ggplot(data=popular2neu,
    aes(x=extrav, y=popular)) +
    geom_smooth(method=lm, se = F) +
    facet_wrap(vars(class))

    Grafik HLM 9 2


    Auch hier sehen wir deutlich, dass es einige Gruppen mit sehr deutlichem Anstieg, andere Gruppen hingegen mit fast völlig flachem Verlauf gibt. Das ist ein starkes Indiz dafür, dass hier eine Random Slope sinnvoll sein kann, die ja Unterschiede im Anstieg der Regressionsgeraden zwischen den Level 2 Einheiten abbilden soll.

    # Prädiktor 2: Geschlecht

    # 2a farbig nach Gruppe
    ggplot(data=popular2neu,
    aes(x=sex, y=popular, color=class)) +
    geom_smooth(method=lm, se = F, show.legend = F)

    Grafik HLM 9 3


    Hier sieht der Verlauf der Regressionsgeraden deutlich homogener aus (was es weniger wahrscheinlich macht, dass eine Random Slope vorliegt).

    # 2b gesondert je Gruppe
    ggplot(data=popular2neu,
    aes(x=sex, y=popular)) +
    geom_smooth(method=lm, se = F) +
    facet_wrap(vars(class))

    Grafik HLM 9 4


    Auch in dieser Darstellung sieht man, dass im Vergleich zur Extraversion für das Geschlecht die Effekte relativ homogen sind. (Dass es für einige Klassen gar keine Gerade gibt, liegt daran, dass es dann Klassen nur mit Jungen oder nur mit Mädchen sind.)