Statistische Maßzahlen für die Streuung
Spannweite
Interquartilabstand
Berechnung des Interquartilabstands
In diesem Abschnitt wird die Formel zur Berechnung des Interquartilabstands erläutert.
Varianz und Standardabweichung
Berechnung der Varianz/Standardabweichung
In diesem Abschnitt wird die Formel zur Berechnung der Varianz und der Standardabweichung erläutert.
Variationskoeffizient
In diesem Abschnitt wird erklärt, warum Standardabweichung und Varianz nicht immer optimal sind, um das Ausmaß der Streuung einer Variable einzuschätzen. Daran anschließend wird erläutert, warum der Variationskoeffizient in manchen Fällen die bessere Maßzahl sein kann.
Zusammenfassung
Praktische Umsetzung mit Statistiksoftware
Beispieldaten herunterladen: dat.csv
Datenbeispiel
Unser Beispieldatensatz (hypothetisches Datenbeispiel) liegt als .csv-Datei vor. Die Daten können mit der read.csv-Funktion in ein Objekt vom Typ data.frame eingelesen werden (der korrekte Pfad zum Speicherort muss angegeben werden):
dat <- read.csv("C:/... Pfad .../dat.csv")
Der Datensatz enthält u.a. die Variablen punkte (erzielte Punktzahl in einem Test), schlafdauer (Schlafdauer in der Nacht vor dem Test in Std.), lernzeit (insgesamt für den Test aufgewendete Lernzeit in Std.) und lsport (Lieblingssportart).
Für einen ersten Überblick über die Struktur des Datensatzes und die im Datensatz enthaltenen Variablen kann die Funktion str(dat) verwendet werden:
str(dat)
liefert das folgende Ergebnis:
'data.frame': 120 obs. of 25 variables:
$ X : int 94 66 78 28 3 113 16 11 96 99 ...
$ punkte : num 93 76.5 79.5 85 66.5 71 56.5 77 59 63.5 ...
$ schlafdauer : num 6.2 5.3 5.5 7 6.5 6.4 5.7 6.8 5.4 6.8 ...
$ lernzeit : num 8.2 7 6.8 7.3 7.3 3.9 4.9 7.6 2.5 9.2 ...
$ nachhilfe : int 1 1 1 1 1 0 0 1 0 0 ...
$ zeugnis_mathe_roh : num 101.3 89.7 86.2 83.6 86.8 ...
$ zeugnis_mathe_punkte : int 13 11 10 10 10 11 9 10 9 10 ...
$ zeugnis_mathe_note : Factor w/ 4 levels "ausreichend",..: 1 2 2 2 2 2 3 2 3 2 ...
$ zeugnis_deutsch_punkte: int 8 9 10 6 10 10 9 12 5 13 ...
$ zeugnis_deutsch_note : Factor w/ 4 levels "ausreichend",..: 3 3 2 4 2 2 3 2 4 1 ...
$ lsport : Factor w/ 6 levels "Andere Sportart",..: 4 5 1 3 3 4 3 3 4 4 ...
$ sport_fb : int 0 1 0 1 1 1 1 1 1 1 ...
$ sport_bb : int 0 0 1 0 0 0 0 1 1 0 ...
$ sport_sw : int 1 1 1 1 0 0 1 1 1 1 ...
$ sport_tn : int 0 0 0 0 0 0 0 0 1 0 ...
$ sport_an : int 1 0 1 1 0 0 1 1 1 1 ...
$ sport_no : int 0 0 0 0 0 0 0 0 0 0 ...
$ sport_test : int 0 1 1 0 1 1 0 1 1 1 ...
$ kantine_zufr : int 4 4 3 5 3 2 2 1 3 2 ...
$ taschengeld : int 33 30 29 35 28 32 41 36 34 34 ...
$ lauf100 : num 14.3 13.2 13.9 14 15 14.2 14.1 14.8 15.2 13.8 ...
$ lauf1000 : num 234 229 210 222 227 ...
$ lauf5000 : num 489 465 484 486 461 ...
$ kugel : num 8.15 9.26 8.47 8.37 7.56 ...
$ lfach : Factor w/ 7 levels "anderes Fach",..: 2 2 2 2 2 2 2 2 2 2 ...
Zu den einzelnen Variablen zeigt die Ausgabe deren Speicherformat (int für "integer", num für "numeric" - beides Zahlenwerte, Factor für nicht-numerische Variablen) und die jeweils ersten Werte im Datensatz.
Bei Verwendung von R-Studio liefert der Data Viewer zudem einen Einblick in den Datensatz als Datentabelle. Aufgerufen wird er mit der Funktion
View(dat)
So sieht ein Ausschnitt aus dem Data Viewer aus:
Spannweite
Zur Bestimmung der Spannweite lassen wir uns Minimum und Maximum der Verteilung mit der Funktion range() anzeigen. Um das Merkmal schlafdauer auszuwählen, benutzen wir dat$schlafdauer und setzen dies in die Funktion range() ein:
range(dat$schlafdauer)
Wir erhalten das Ergebnis
[1] 4.2 7.8
Die Differenz aus Maximum und Minimum ergibt die Spannweite.
> 7.8-4.2
[1] 3.6
Mit range(dat$schlafdauer)[1] wählen wir direkt das erste Element aus range(dat$schlafdauer) aus, also das Minimum. Analog wählen wir mit range(dat$schlafdauer)[2] das zweite Element aus, also das Maximum. Damit können wir uns direkt die Spannweite berechnen lassen, ohne zuvor Maximum und Minimum abzulesen:
range(dat$schlafdauer)[2] - range(dat$schlafdauer)[1]
Die Spannweite des Merkmals Schlafdauer beträgt 3,6 Stunden.
Interquartilabstand
Mit dem Befehl IQR() lässt sich der Interquartilabstand eines Merkmals berechnen. Für das Merkmal lernzeit verwenden wir:
IQR(dat$lernzeit)
Alternativ können wir selbst die Differenz zwischen dem dritten und dem ersten Quartil bilden. Dafür bestimmen wir das dritte Quartil mit quantile(dat$lernzeit, 0.75) und das erste Quartil mit quantile(dat$lernzeit, 0.25):
quantile(dat$lernzeit, 0.75) - quantile(dat$lernzeit, 0.25)
Beide Varianten erzeugen das Ergebnis 2,875. Der Interquartilabstand des Merkmals Lernzeit beträgt knapp 3 Stunden.
Varianz und Standardabweichung
Wir benutzen die Formel var() für die Berechnung der Varianz. Für die Varianz des Merkmals punkte schreiben wir
var(dat$punkte)
Die Varianz der Punktezahl beträgt 265,5.
Die Standardabweichung lassen wir uns mit der Formel sd() berechnen:
sd(dat$punkte)
Als Ergebnis erhalten wir 16,29455. Die Standardabweichung des Merkmals Punktezahl beträgt 16,3 Punkte.
Den Variationskoeffizienten berechnen wir anhand der Formel als Quotienten (Für den Operator Geteilt schreiben wir in R "/") aus der Standardabweichung (sd()) und dem arithmetische Mittel (mean()):
sd(dat$lauf100)/mean(dat$lauf100)
sd(dat$lauf1000)/mean(dat$lauf1000)
sd(dat$lauf5000)/mean(dat$lauf5000)
Wir erhalten die folgenden Ergebnisse:
> sd(dat$lauf100)/mean(dat$lauf100)
[1] 0.05912472
> sd(dat$lauf1000)/mean(dat$lauf1000)
[1] 0.05791901
> sd(dat$lauf5000)/mean(dat$lauf5000)
[1] 0.03337572
Wichtige Befehlsoptionen
na.rm = TRUE bei fehlenden Werten
Liegen bei einer Variable im Datensatz nicht für alle Beobachtungsfälle Daten vor, können diese fehlenden Werte (als NA bezeichnet) bei der Berechnung des Interquartilabstands, der Varianz oder der Standardabweichung zu dem Ergebnis
[1] NA
führen. Um die fehlenden Werte bei der Berechnung auszuschließen, verwenden wir die Befehlsoption na.rm = TRUE:
IQR(dat$lernzeit, na.rm = TRUE)
var(dat$punkte, na.rm = TRUE)
sd(dat$punkte, na.rm = TRUE)
Beispieldaten herunterladen: daten_stata.dta
Datenbeispiel
<!-- Das Datenbeispiel befindet sich in dem heruntergeladenden ZIP-Ordner. Dieser enthält neben dem Beispieldatensatz *daten_stata.dta* ein do-File, in dem die hier verwendeten Funktionen dokumentiert worden sind. -->Der Beispieldatensatz kann mit der Funktion use geladen werden. Dafür muss zusätzlich der korrekte Pfad zum Speicherort der Datei daten_stata.dta angegeben werden:
use "C:\...Pfad...\daten_stata.dta"
Spannweite, Interquartilsabstand, Varianz und Standardabweichung
Mit der Funktion summarize und der Option detail können u.a. die Spannweite und der Interquartilsabstand berechnet, sowie die Varianz und die Standardabweichung ausgegeben werden:
summarize schlafdauer, detail
schlafdauer
-------------------------------------------------------------
Percentiles Smallest
1% 4.5 4.2
5% 5 4.5
10% 5.15 4.8 Obs 120
25% 5.65 4.8 Sum of Wgt. 120
50% 6.2 Mean 6.185833
Largest Std. Dev. .7184596
75% 6.8 7.5
90% 7 7.5 Variance .5161842
95% 7.4 7.6 Skewness -.1875421
99% 7.6 7.8 Kurtosis 2.701023
Die Funktion speichert ihre Ergebnisse im Hintergrund. Um die Spannweite der Variable schlafdauer zu berechnen, wird von der größten Ausprägung (gesichert als r(max)) die kleinste Ausprägung (r(min)) subtrahiert. Das Ergebnis der Subtraktion kann mit display ausgegeben werden:
display r(max)-r(min)
>3.6
Die Differenz aus Maximum und Minimum ergibt 3,6 Stunden.
Der Interquartilsabstand berechnet sich aus der Differenz des 3. Quartils (r(p75)) und des 1. Quartils (r(p25)). Mit display kann auch hier das Ergebnis berechnet werden:
display r(p75)-r(p25)
>1.15
Der Interquartilsabstand der Variable schlafdauer beträgt 1,15 Stunden.
Die Varianz (Variance) und die Standardabweichung (Std. Dev.) können direkt aus der Ausgabe der summarize Funktion ausgelesen werden. Die Varianz des Merkmals schlafdauer ist demnach ca. 0,52 Stunden und die Standardabweichung in etwa 0,72 Stunden.
Die Kennzahlen können auch separat in Stata berechnet werden.
Interquartilabstand
<!--AN, 19.06.2020 Es wäre ja auch möglich, die Kennzahlen über summarize und r() aufzurufen. Ich finde es aber sinnvoller diese Möglichkeit hier nicht zu zeigen. Wenn es nur um die Kennzahl geht, ohne damit nachher weitere Berechnungen anzustellen, ist tabstat die bessere Wahl.-->Mit der Funktion tabstat und der Erweiterung stat(iqr) lässt sich der Interquartilsabstand berechnen, z.B. für die Variable lernzeit:
tabstat lernzeit, stat(iqr)
> variable | iqr
-------------+----------
lernzeit | 2.95
------------------------
Der Interquartilsabstand der Lernzeit vor der letzten Matheklausur beträgt knapp 3 Stunden.
Varianz und Standardabweichung
Auch die Varianz und die Standardabweichung lassen sich mit tabstat berechnen. Um die Varianz zu ermitteln, wird die Option stat(variance) genutzt. Für die Standardabweichung verwenden wir stat(sd):
tabstat punkte, stat(variance)
> variable | variance
-------------+----------
punkte | 265.5123
------------------------
tabstat punkte, stat(sd)
> variable | sd
-------------+----------
punkte | 16.29455
------------------------
Die Varianz der Punktzahl in der letzten Matheklausur beträgt ca. 265,5 Punkte und die Standardabweichung in etwa 16,3 Punkte.
Variationskoeffizient
Den Variationskoeffizienten berechnen wir mit tabstat und der Option stat(cv):
tabstat lauf100 lauf1000 lauf5000, stat(cv)
> stats | lauf100 lauf1000 lauf5000
---------+------------------------------
cv | .0591247 .057919 .0333757
----------------------------------------
]
Beispieldaten herunterladen: dat.sav
Datenbeispiel
Spannweite, Interquartilabstand, Varianz und Standardabweichung
Statt durch Klicken durch das Menü können wir uns die Streuungsmaße über die Syntax ausgeben lassen. Dazu verwenden wir den folgenden Code:
FREQUENCIES VARIABLES=punkte schlafdauer
/NTILES=4
/STATISTICS=STDDEV VARIANCE RANGE MINIMUM MAXIMUM.
Wir verwenden den Befehl FREQUENCIES und geben nach VARIABLES= nacheinander alle gewünschten Variablen mit Leerzeichen getrennt an. Das Ergebnis wäre je eine Häufigkeitstabelle pro Variable. Um zusätzlich Streuungsmaße zu erhalten, geben wir den Unterbefehl /STATISTICS= ein mit den Optionen STDDEV VARIANCE RANGE MINIMUM MAXIMUM. Dabei steht STDDEV für die Standardabweichung, VARIANCE für die Varianz, RANGE für die Spannweite sowie MINIMUM und MAXIMUM für den kleinsten und den größten Wert. Mit NTILES=4 fordern wir Quartile an, d.h. die Verteilung wird in vier gleichgroße Gruppen geteilt. Mit NTILES=10 würden wir dementsprechend Perzentile erhalten. Mit dem Punkt schließen wir den Befehl ab.
Statt mit FREQUENCIES (im Menü: Analysieren -> Deskriptive Statistiken -> Häufigkeiten) können wir uns Maßzahlen alternativ mit DESCRIPTIVES berechnen. Dies kann bei metrischen Variablen mit großem Merkmalsraum von Vorteil sein, da keine Häufigkeitstabellen ausgegeben werden und über die Syntax schnell die gewünschten Maßzahlen angegeben werden können. Wir verwenden entweder den Code
DESCRIPTIVES VARIABLES=punkte
/STATISTICS=STDDEV VARIANCE RANGE.
oder Klicken durch das Menü: Analysieren -> Deskriptive Statistiken -> Deskriptive Statistik -> Variablen auswählen -> Optionen -> Std. abweichung, Varianz, Bereich -> weiter -> OK.