R: Deskriptive Statistik
R hat eine breite Bandbreite an Werkzeugen, mit denen deskriptive Statistiken berechnet werden können.Die einfachste Art eine ist die Verwendung der Funktion sapply()
, die eine Funktion (beispielsweise zur Berechnung des Mittelwerts) auf den Datensatz ausführt:
sapply(Daten, mean, na.rm=TRUE)
Neben mean für den arithmetische Mittelwert gibt es noch eine Reihe weitere Funktionen zur Berechnung anderer deskriptiver Statitsiken:
median()
: Der Medianquantile()
: Quantile (die Art des Quantils kann selbst angegeben werden)sd()
: Standardabweichungvar()
: Varianzmin()
undmax()
: Das Minimum bzw. Maximum der Datenrange()
: Die Spannweite (max(x) - min(x)
)IQR()
: Der Interquartilsabstand
Mehrere Statistiken
Anstatt nur jeweils eine Statistik anzugeben, will man oft erst einmal schauen, wie sich die Daten verhalten. Die Anzahl der fehlenden Werte, den Mittelwert, Median, Minimum und Maximum, sowie das 25. und 75. Quantil berechnet summary()
in einem Rutsch:
summary(Daten)
# Sepal.Length Sepal.Width Petal.Length Petal.Width
# Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
# 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
# Median :5.800 Median :3.000 Median :4.400 Median :1.300
# Mean :5.839 Mean :3.035 Mean :3.813 Mean :1.206
# 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
# Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
# NA's :15 NA's :15 NA's :15 NA's :15
Empfehlenswert ist auch die Funktion describe()
aus den Paket psych
. Sie berechnet noch zusätzlich die Standardabweichung und den Standardfehler des Mittelwerts (se
), die Mittlere absolute Abweichung vom Median (mad
), die Schiefe und Kurtosis, sowie den getrimmten Mittelwert (trimmed
).
describe(Daten, na.rm=TRUE)
# vars n mean sd median trimmed mad min max range skew kurtosis se
# Sepal.Length 1 150 5.84 0.83 5.80 5.81 1.04 4.3 7.9 3.6 0.31 -0.61 0.07
# Sepal.Width 2 150 3.06 0.44 3.00 3.04 0.44 2.0 4.4 2.4 0.31 0.14 0.04
# Petal.Length 3 150 3.76 1.77 4.35 3.76 1.85 1.0 6.9 5.9 -0.27 -1.42 0.14
# Petal.Width 4 150 1.20 0.76 1.30 1.18 1.04 0.1 2.5 2.4 -0.10 -1.36 0.06
Nach Gruppen aufteilen
Oft hat man ein Studiendesign, bei dem verschiedene Gruppen separat betrachtet werden sollen. Hierzu kann man eine andere Funktion aus dem psych
Paket nehmen, describeBy()
, welche die deskriptiven Statistiken separat für jede Gruppe berechnet:
describeBy(Daten, group = Daten$Species)
# Descriptive statistics by group
# group: setosa
# vars n mean sd median trimmed mad min max range skew kurtosis se
# Sepal.Length 1 50 5.01 0.35 5.0 5.00 0.30 4.3 5.8 1.5 0.11 -0.45 0.05
# Sepal.Width 2 50 3.43 0.38 3.4 3.42 0.37 2.3 4.4 2.1 0.04 0.60 0.05
# Petal.Length 3 50 1.46 0.17 1.5 1.46 0.15 1.0 1.9 0.9 0.10 0.65 0.02
# Petal.Width 4 50 0.25 0.11 0.2 0.24 0.00 0.1 0.6 0.5 1.18 1.26 0.01
# Species* 5 50 1.00 0.00 1.0 1.00 0.00 1.0 1.0 0.0 NaN NaN 0.00
# ---------------------------------------------------------------------------------------------------------
# group: versicolor
# vars n mean sd median trimmed mad min max range skew kurtosis se
# Sepal.Length 1 50 5.94 0.52 5.90 5.94 0.52 4.9 7.0 2.1 0.10 -0.69 0.07
# Sepal.Width 2 50 2.77 0.31 2.80 2.78 0.30 2.0 3.4 1.4 -0.34 -0.55 0.04
# ...
describeBy()
kann auch nach mehreren Gruppen und sogar Formeln deskriptive Statistiken berechnen:
# Mehrere Gruppen
describeBy(Daten, group = list(Daten$Gruppe1, Daten$Gruppe2, Daten$Gruppe3))
# Mit einer Formel
describeBy(y ~ A + B, data=Daten)