install.packages("ggpubr")
Zur Überprüfung, ob eine Variable normalverteilt ist, werden häufig Quantil-Quantil-Diagramme (QQ-Plots) erzeugt. In R
plotte ich diese mit ggplot
und der Funktion stat_qq()
.
# Lade Testdaten "epa"
load(url("https://www.produnis.de/R/data/epa.RData"))
# aktiviere ggplot
library(ggplot2)
library(qqplotr)
# erstelle QQ-Plot für Variable "age"
# gruppiert nach "sex"
ggplot(epa, aes(sample=age)) +
stat_qq(aes(color=sex))
Ich hab lange versucht, mit den “Hausmitteln” das Konfidenzintervall hinzuzufügen. Diese Arbeit kann man sich sparen, wenn z.B. das Zusatzpaket ggpubr
installiert ist.
Es enthält die Funktion ggqqplot()
, die automatisch das Konfidenzintervall hinzufügt. Der Aufruf ist etwas anders als bei ggplot()
:
::ggqqplot(epa, x="age", color="sex") ggpubr
Weitere Möglichkeiten bietet das Zusatzpaket qqplotr
.
install.packages("qqplotr")
Es fügt weitere Geome und Funktionen für ggplot
hinzu. In unserem Beispiel sind die Plots aber nicht ganz so “schön” wie das vorangegangene:
# aktiviere die zusatzfunktionen
library(qqplotr)
ggplot(epa, aes(sample=age)) +
# zeichne Punkte wie im "Original"
stat_qq_point(aes(color=sex)) +
# füge Linie hinzu
stat_qq_line(aes(color=sex)) +
# füge Konfidenzgrenzen hinzu
stat_qq_band(aes(fill=sex))
Es wird besser, wenn wir die Layerreihenfolge vertauschen und den Alpha-Wert der Farbe herbasetzen:
ggplot(epa, aes(sample=age)) +
# fange mit Konfidenzgrenzen an
# setzte Alpha-Wert für Farbe
stat_qq_band(aes(fill=sex), alpha=2/10) +
# füge Linie hinzu
stat_qq_line(aes(color=sex)) +
# zeichne Punkte wie im "Original"
stat_qq_point(aes(color=sex))
Natürlich geht das alles auch mit den “alten” R-Hausmitteln und den Funktionen qqnorm()
und qqline()
:
qqnorm(epa$age)
qqline(epa$age, col = "steelblue", lwd = 2)
Auch gibt es die abgewandelte Funktion qqPlot()
aus dem car
-Paket:
::qqPlot(epa$age) car
[1] 182 371