Kapitel 5 Streuungsmasse

Verteilungen und Streuung

5.1 Varianz und Standardabweichung

Wenn wir wissen wollen, wie die Daten um den Mittelwert gestreut sind, genügt es nicht, nur die Spannweite (d.h. kleinster und grösster Wert) anzugeben. Wir möchten die Abstände der einzelnen Daten zum Mittelwert zusammenfassen (zumindest bei intervallskalierten Daten, die einigermassen normalverteilt sind). Nichts einfacher als das. Schauen wir uns einmal folgendes Beispiel in Abbildung 4.1 an. Wir sehen 10 Zahlen. Die vertikale Ausrichtung hat hier keine Bedeutung, und ist nur für die besser visuelle Darstellung so gewählt. Die horizontale Position entspricht dem Wert jeder Zahl. Wir haben den Mittelwert eingezeichtet. Wenn wir nun von jedem Wert den Mittelwert abziehen, und davon den Mittelwert berechnen (obere Formel in Abbildung 4.1) würde dies Null ergeben. Dies ist nicht Zufall, sondern immer so: Der Mittelwert ist ja gerade so definiert, dass die Summe aller Abstände Null ergibt. Anders ausgedrückt: die Summe der negativen Zahlen ist gleich gross wie die Summe der positiven Zahlen. Wir könnten nun einfach den absoluten Wert der Differenz nehmen. Die Statistiker haben jedoch einen anderen Weg gewählt: Sie quadrieren die Differenzen (untere Formel) und berechnen davon den Durchschnitt. Diese Kennzahl nennt man die Varianz. Um das Streuungsmass wieder in der gleichen Einheit wie die Originalskala zu haben, zieht man nun die Quadratwurzel und erhält so die Standardabweichung. Bemerkung: Die hier gezeigt Formel wäre die Varianz einer Population. Da wir jedoch meistens eine Stichprobe haben, sollten wir eigentlich durch n-1 teilen. Warum? Das erfahren Sie im Masterstudium oder für die ganz interessierten hier.

Beispiel der Berechnung der Streuungsmasse. Hinweis: Normalerweise würden wir durch n-1 teilen anstatt durch n. Die hier gezeigt Formel würde der Populationsvarianz entsprechen. Für eine Stichprobenvarianz müssten wir durch n-1 teilen.

Abbildung 5.1: Beispiel der Berechnung der Streuungsmasse. Hinweis: Normalerweise würden wir durch n-1 teilen anstatt durch n. Die hier gezeigt Formel würde der Populationsvarianz entsprechen. Für eine Stichprobenvarianz müssten wir durch n-1 teilen.

Die Standardabweichung kann benutzt werden, wenn wir mindestens intervallskalierte Daten haben, die annähernd normalverteilt sind. Für ordinale Daten oder intervallskalierte Daten die schief verteilt sind oder extreme Werte aufweisen, eignet sich die Interquartilzone besser. Dazu müssen wir aber den Begriff der Percentilen, Quantile und Quartile kennen lernen.

5.2 Interquartilsbereich

  • Die Perzentile, oder auch Prozentränge genannt, teilt eine Datenmenge in 1-% Bereiche auf. Die 5. Perzentile sagt, dass 5% der Daten (Personen) unterhalb diesem Wert liegen. die 95%. Perzentile sagt, dass 95% unterhalb diesem Wert liegen.
  • Das Quantil ist ein Schwellenwert, das besagt, welcher Anteil der Personen unter einem bestimmten Wert liegen. Das 0.5 oder 50%-Quantil sagt, dass 50% der Werte (Daten) unterhalb und 50% der Daten oberhalb des 50%-Quantil liegen. Die 50. Perzentile entspricht dem 50%-Quantil. Beim 90%-Quantil (90. Perzentile) liegen 90% der Werte unterhalb und 10% der Werte oberhalb.
  • Es gibt drei Quartile, das 1. Quartile entspricht dem 0.25 (oder 25%) Quantil (25. Perzentile), das 2. Quartil entspricht dem 0.5 oder 50% Quantile (50. Perzentile, Median). Das 3. Quartil entspricht dem 0.75 (75%) Quantil (75. Perzentile).
  • Die Interquartilszone oder der Interquartilsbereich (engl.: Interquartile Range, IQR) entspricht der Intervall zwischen dem 1. und 3. Quartil. Man gibt jedoch am besten immer das 1. und 3. Quartil an, da dieser Bereich nicht symmetrisch um die 50. Perzentile verteilt sein muss. Es kann sogar sein, dass das 1. Quartil mit dem 50. Perzentil zusammenfällt (wenn die Prozentränge 25 bis 50 alle denselben Wert aufweisen)

Die klassische Abbildung um die Quartile darzustellen, ist der Boxplot.

set.seed(1234)
a<-rnorm(100000, 100, 25)
summary(a)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  -12.71   83.24  100.11  100.07  116.85  197.66
boxplot(a, col="#C307F5")
Boxplot einer normalverteilten Datenmenge von 1000 Werten mit einem Median von 100, und einem 1.Quartil von 83 und einem 3. Quartil von 117. Der dicke Strich in der Mitte der Box entspricht dem Median (50. Perzentile). Die Grenzen der Box sind also die 25. Perzentile (1. Quartil) und die 75. Perzentile (2. Quartil). Die dünnen Linien gehen bis zum Wert der noch innerhalb 1.5 mal des Interquartilsabstand sind (d.h. nicht mehr als 1.5 mal die Länge der Box von der Box entfernt). Man nennt diese dünnen Linien auch die Whiskers

Abbildung 5.2: Boxplot einer normalverteilten Datenmenge von 1000 Werten mit einem Median von 100, und einem 1.Quartil von 83 und einem 3. Quartil von 117. Der dicke Strich in der Mitte der Box entspricht dem Median (50. Perzentile). Die Grenzen der Box sind also die 25. Perzentile (1. Quartil) und die 75. Perzentile (2. Quartil). Die dünnen Linien gehen bis zum Wert der noch innerhalb 1.5 mal des Interquartilsabstand sind (d.h. nicht mehr als 1.5 mal die Länge der Box von der Box entfernt). Man nennt diese dünnen Linien auch die Whiskers

Wir können auch noch die einzelnen Datenpunkte hinzufügen (dazu benutzen wir ggplot2):

df_leadership<-data.frame(Leadership=rnorm(100,40,15), Tier=(sample(c("Hunde", "Katzen"), 100, replace=TRUE, prob=c(0.49, 0.51))))
df_leadership$Leadership=ifelse(df_leadership$Tier=="Katzen", df_leadership$Leadership*1.3+(0.02*df_leadership$Leadership)^2, df_leadership$Leadership)
df_leadership$Leadership=ifelse(df_leadership$Leadership<0,0,df_leadership$Leadership)
df_leadership$Leadership=ifelse(df_leadership$Leadership>100,100,df_leadership$Leadership)
library(ggplot2)
ggplot(data=df_leadership, aes(y=Leadership, x=Tier, fill=Tier))+
  stat_boxplot(geom = "errorbar", width = 0.09) + 
  geom_boxplot(alpha=0.7)+
geom_jitter(position=position_jitter(w=0.01, h=0),aes(color=Tier))+
  theme_classic()+
  theme(axis.title.x = element_blank())+
  scale_fill_manual(values=c("#DE6DEB", "#AE54B8"))+
  scale_color_manual(values=c("#DE6DEB", "#AE54B8"))
Boxplot der Leadership-Qualitäten von Hunden und Katzen. Jeder Punkt entsprich dem Humor eines Tieres. Die seitliche Verschiebung hat keine inhaltliche Bedeutung und dient nur der graphischen Darstellung, so dass Punkte mit gleichen Werten zufällig leicht verschoben dargestellt werden.

Abbildung 5.3: Boxplot der Leadership-Qualitäten von Hunden und Katzen. Jeder Punkt entsprich dem Humor eines Tieres. Die seitliche Verschiebung hat keine inhaltliche Bedeutung und dient nur der graphischen Darstellung, so dass Punkte mit gleichen Werten zufällig leicht verschoben dargestellt werden.

Wir können die Werte zum Boxplot auf verschiedene Wege erstellen. Hier der dplyr/tidyverse Weg:

library(dplyr)
df_leadership %>% 
  group_by(Tier) %>%
  summarize(Minimum = min(Leadership),
         P25=quantile(Leadership, 0.25), 
         P50_Median=quantile(Leadership, 0.5), 
         P75=quantile(Leadership, 0.75), 
         Maximum = max(Leadership)) ->table_leadership
knitr::kable(table_leadership, digits=1)
Tier Minimum P25 P50_Median P75 Maximum
Hunde 0.0 27.9 41.8 50.8 84.4
Katzen 21.7 47.9 58.1 70.1 100.0

Die Verteilung können wir auch in einem Histogramm anschauen.

Zuerst die Variable a die wir oben erstellt haben.

hist(a, col=alpha("#C307F5",0.5), breaks=30)
Histogramm der gleichen Daten wie in Abbildung 4.2

Abbildung 4.1: Histogramm der gleichen Daten wie in Abbildung 4.2

Nun die Variable Leadership, zuerst über Katzen und Hunde zusammen:

ggplot(data=df_leadership, aes(x=Leadership))+
  geom_histogram(aes(y=..density..),alpha=0.5,fill="#DA5CFA", colour="grey")+
  geom_density()+
  theme_classic()
## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Danach geschichtet nach Tierart: Vergleichen Sie bitte die Density-Kurven, die über das Histogramm gelegt wurden. Was fällt Ihnen auf? Sehen Sie, dass die Kurve oben nur einen Gipfel hat, obschon wir zwei unterschiedliche Verteilungen (Hunde und Katzen haben) und bei der getrennten Darstellung unten zwei Gipfel sehen?

ggplot(data=df_leadership, aes(x=Leadership, fill=Tier, color=Tier))+
  geom_histogram(aes(y = ..density..), alpha=0.5)+
  geom_density(alpha=.2)+
  theme_classic()+
  scale_fill_manual(values=c("#DE6DEB", "#AE54B8"))+
  scale_color_manual(values=c("#DE6DEB", "#AE54B8"))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   15.55   25.00   25.00   41.02   65.98  106.47
Beispiel eines Boxplotes bei dem die 25% der Daten den Wert 25 haben. 50% der Werte liegen unter 25, 25% der Werte liegen über 71.

Abbildung 5.4: Beispiel eines Boxplotes bei dem die 25% der Daten den Wert 25 haben. 50% der Werte liegen unter 25, 25% der Werte liegen über 71.

Histogramm der gleichen Daten wie in Abbildung 4.4

Abbildung 3.2: Histogramm der gleichen Daten wie in Abbildung 4.4

5.3 Quiz Streuungsmasse

Abbildung 5.5: Quiz zu den Streuungsmassen

Have a look at these whiskers. Ende des Kapitels