Auf dieser Seite findest du eine Einführung in die Visualisierung Linearer Regression.

Der gesamte Code, den du hier findest, kann von dir 1:1 in R umgesetzt werden. Die größte Lernwirkung hat diese Einführung, wenn du möglichst alles einmal selbst in R durchführst.


01 Vorbereitungen

Bevor wir loslegen können, müssen wir die Packages laden, die wir für unser Vorhaben benötigen. Falls du dieses noch nicht geladen hast, hole dies nun nach:

library(SfL)
library(ggplot2)

Neu hinzu kommt das folgende Package:

library(visreg)

Installiere das Package entweder mit untenstehendem Code oder über die Funktionen von RStudio.

install.packages("visreg")

Nun laden wir die Datensätze, die wir nutzen werden:

data(data_a)
data(data_c)
data(data_s)
data(data_t)
data(data_v)

Für die folgenden Demonstrationen erstellen wir zunächst ein Multiples Lineares Modell:

lm <- lm(sDurLog ~ typeOfS + baseDurLog + pauseBin + bsex, data = data_s)

02 visreg

Wie wir bereits gelernt haben, gibt es in R eine Vielzahl an Möglichkeiten, Daten zu visualisieren. Ein praktisches Package zur Visualisierung von linearen Modellen ist das visreg Package.

Schauen wir uns die Hauptfunktion des Packages an. Wir nennen das Modell, das genutzt werden soll, sowie die Prediktorvariable, deren Effekt dargestellt werden soll.

visreg(lm, "typeOfS")

Abgebildet sehen wir also den Effekt von typeOfS mit den drei Levels auf der X-Achse und den vorhergesagten Werten von sDurLog auf der Y-Achse.


03 Transformation

Beim obigen Plot sticht ein Problem ins Auge: Kein Mensch kann log-transformierte Werte - wie hier auf der Y-Achse - sinnvoll interpretieren. Praktischerweise können wir diese direkt im Befehl zurück transformieren:

visreg(lm, "typeOfS", trans = exp)

Hier werden auf der Y-Achse nun wieder interpretierbare Werte dargestellt.


04 Kontinuierliche Variablen

Bisher haben wir nur Plots für eine kategorische Variable gesehen. Schauen wir uns daher nun die Darstellung von baseDurLog an:

visreg(lm, "baseDurLog", trans = exp)

Aber was ist das? Eine Kurve? Obwohl wir über lineare Regression sprechen? Ja! Da wir die Y-Achse zurücktransformiert haben, ist der zuvor als linear berechnete Verlauf der Regressionsgeraden nun eine Kurve. Das ändert an der Aussagekraft des Modells nichts.


05 Modifikationen

Die Ästhetik von visreg genügt sicherlich nicht jedem Anspruch. visreg selbst stellt einige (umständliche) Möglichkeiten zur Verfügung, um optische Änderungen vorzunehmen.

rug

visreg(lm, "baseDurLog", trans = exp, rug = F)


points

visreg(lm, "baseDurLog", points=list(size=1.5, alpha=0.25, col="dodgerblue3"))


line

visreg(lm, "baseDurLog", trans = exp, line=list(col="black", size=1))


band

visreg(lm, "baseDurLog", trans = exp, band=F)


06 visreg meets ggplot2

Dank der großen Beliebtheit von ggplot2 gibt es zum Glück auch die Möglichkeit, visreg mit ggplot2 zu verbinden. Hierzu muss das gg Argument als TRUE bestätigt werden:

visreg(lm, "baseDurLog", trans = exp, gg=T)

Nun können wir all die Möglichkeiten nutzen, die uns ggplot2 zur Verfügung stellt, z.B.:

visreg(lm, "baseDurLog", trans = exp, gg=T) +
  theme_bw() +
  theme(axis.text = element_text(size = 12),
        axis.title = element_text(size = 14)
        ) +
  ylab("S duration in seconds") +
  xlab("base duration, log-transformed") +
  scale_y_continuous(limits=c(0.05, 0.23))


07 Aufgaben

Erstelle die Modelle aus der Sitzung zu Multipler Linearer Regression (siehe unten), um diese dann mit visreg (und ggplot2) darzustellen. Lasse deiner Fantasie dabei freien Lauf!

Aus data_s:

  • sDurLog ~ bsex + age + location
  • sDurLog ~ typeOfS + pauseBin
  • sDurLog ~ baseDurLog + speakingRate
  • sDurLog ~ biphoneProbSumBin + folType + preC
  • sDurLog ~ bsex + age + location + typeOfS + pauseBin + baseDurLog + speakingRate + biphoneProbSumBin + folType + preC


Aus data_a:

  • height ~ bsex + hair
  • height ~ hair + eyes
  • height ~ bsex + hair + hair + eyes


Aus data_v:

duration ~ vowel + structure + rate