Visualisierung Linearer Regression
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(sDurLog ~ typeOfS + baseDurLog + pauseBin + bsex, data = data_s) lm
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