3 Deskriptive Statistik
3.1 Einführung
In diesem Teil des Skripts wollen wir einfache deskriptive Analysen mit R durchführen, also Kennwerte berechnen, die uns ein besseres Verständnis der Daten ermöglichen. Wir nutzen dazu die Ergebnisse einer Erstsemesterbefragung. Diese finden Sie im Downloadbereich im Datensatz WPStudis.RData.
Laden Sie den Datensatz WPStudis.RData.
load("WPStudis.Rdata")
Variablennamen anzeigen:
names(WPStudis)
## [1] "F1_Nummer" "F2_Alter"
## [3] "F3_Geschlecht" "F4_Koerpergroesse"
## [5] "F5_Schuhgroesse" "F6_Sternzeichen"
## [7] "F7_Brille" "F13_WhatsApp"
## [9] "F17_Freunde_Facebook" "F19_Partnerschaft"
## [11] "F20_Einkommen_Glueck" "F21_01_Zufriedenheit_Leben"
## [13] "F21_02_Zufriedenheit_Studium" "F21_03_Zufriedenheit_Partnerschaft"
3.2 Maße der zentralen Tendenz
Mittelwert
mean(WPStudis$F4_Koerpergroesse)
## [1] 169.9462
Median
median(WPStudis$F4_Koerpergroesse)
## [1] 169
Modalwert: Geht in R nur mit einem Trick - die erste Zahl ist der Modus:
which.max(table(WPStudis$F4_Koerpergroesse))
## 160
## 4
3.3 Streuungsmaße
Range
range(WPStudis$F4_Koerpergroesse)
## [1] 155 187
Standardabweichung
sd(WPStudis$F4_Koerpergroesse)
## [1] 7.756296
Varianz
var(WPStudis$F4_Koerpergroesse)
## [1] 60.16012
Quantile
quantile(WPStudis$F4_Koerpergroesse)
## 0% 25% 50% 75% 100%
## 155 164 169 175 187
3.4 Zusammenfassung von Kennwerten
Variablenzusammenfassungen fuer die Variable Körpergröße mit der Funktion summary()
summary(WPStudis$F4_Koerpergroesse)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 155.0 164.0 169.0 169.9 175.0 187.0
Versuchen Sie das gleiche für Alter:
summary(WPStudis$F2_Alter)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 17.00 19.00 20.00 21.67 22.25 45.00 1
Deskr. Statistiken für alle Variablen aus dem Psych Paket
library(psych)
describe(WPStudis)
## vars n mean sd median trimmed mad min max
## F1_Nummer 1 93 47.70 27.36 48 47.75 35.58 1 94
## F2_Alter 2 92 21.67 4.28 20 20.93 1.48 17 45
## F3_Geschlecht* 3 93 1.83 0.38 2 1.91 0.00 1 2
## F4_Koerpergroesse 4 93 169.95 7.76 169 169.55 8.90 155 187
## F5_Schuhgroesse 5 93 39.53 2.90 39 39.12 2.97 36 50
## F6_Sternzeichen* 6 93 6.87 3.72 8 6.95 4.45 1 12
## F7_Brille* 7 92 1.42 0.50 1 1.41 0.00 1 2
## F13_WhatsApp 8 90 526.22 1176.28 250 326.89 222.39 20 9999
## F17_Freunde_Facebook 9 83 327.64 173.12 300 315.03 148.26 0 900
## F19_Partnerschaft* 10 91 1.57 0.50 2 1.59 0.00 1 2
## F20_Einkommen_Glueck 11 76 1978.29 1031.45 2000 1966.94 1260.21 200 5000
## F21_01_Zufriedenheit_Leben 12 90 3.92 0.77 4 3.99 0.00 1 5
## F21_02_Zufriedenheit_Studium 13 89 3.74 0.79 4 3.74 1.48 1 5
## F21_03_Zufriedenheit_Partnerschaft 14 90 3.80 0.97 4 3.88 1.48 1 5
## range skew kurtosis se
## F1_Nummer 93 -0.02 -1.24 2.84
## F2_Alter 28 2.41 8.30 0.45
## F3_Geschlecht* 1 -1.71 0.93 0.04
## F4_Koerpergroesse 32 0.39 -0.65 0.80
## F5_Schuhgroesse 14 1.29 1.42 0.30
## F6_Sternzeichen* 11 -0.16 -1.41 0.39
## F7_Brille* 1 0.30 -1.93 0.05
## F13_WhatsApp 9979 6.43 46.11 123.99
## F17_Freunde_Facebook 900 0.73 0.60 19.00
## F19_Partnerschaft* 1 -0.28 -1.94 0.05
## F20_Einkommen_Glueck 4800 0.35 0.22 118.32
## F21_01_Zufriedenheit_Leben 4 -1.34 3.46 0.08
## F21_02_Zufriedenheit_Studium 4 -0.34 0.42 0.08
## F21_03_Zufriedenheit_Partnerschaft 4 -0.39 -0.56 0.10
3.5 Übung
- Lassen Sie sich die Variablenzusammenfassung für das Alter mit der Index-Notation ausgeben
- Was ist die gößte Schuhgröße in WP?
In diesem Video zeige ich wie das in R funktioniert:
3.6 Deskriptiver Vergleich von Kennwerten
Um nun zum Beispiel die durchschnittliche Körpergröße von Männern und Frauen zu ermitteln nutzen wir den tapply Funktion. tapply steht für table apply. D.h. die Funktion (hier mean) wird auf eine Menge von Variablen angewandt und als Tabelle ausgegeben.
tapply(WPStudis$F4_Koerpergroesse, WPStudis$F3_Geschlecht, mean, na.rm = TRUE)
## Maennlich Weiblich
## 181.0625 167.6364
Dies können wir auch auf die Funktion “summary” anwenden.
tapply(WPStudis$F4_Koerpergroesse, WPStudis$F3_Geschlecht, summary, na.rm = TRUE)
## $Maennlich
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 170.0 179.5 182.5 181.1 183.5 187.0
##
## $Weiblich
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 155.0 163.0 168.0 167.6 171.0 186.0
Noch ausführlicher geht es mit der Funktion “describeBy” aus dem Psych Paket
library(psych)
describeBy(WPStudis$F4_Koerpergroesse, WPStudis$F3_Geschlecht, mat=TRUE)
## item group1 vars n mean sd median trimmed mad min max range skew
## X11 1 Maennlich 1 16 181.0625 4.711245 182.5 181.4286 3.7065 170 187 17 -0.8400052
## X12 2 Weiblich 1 77 167.6364 6.084729 168.0 167.4286 5.9304 155 186 31 0.3363957
## kurtosis se
## X11 -0.1343342 1.1778114
## X12 -0.1289078 0.6934192
3.7 Übung
Nutzen Sie den WPStudisDatensatz und Berechnen Sie: - Median und Standardabweichung der Schuhgrösse der Studierenden - Vergleichen Sie den Mittwelwert der Schuhgrösse von männlichen und weiblichen Studierenden - Legen Sie im WPStudis Datensatz eine neue Variable an die die Körpergröße in Metern angibt
In diesem Video zeige ich wie das in R funktioniert:
3.8 Häufigkeitstabellen
Um sich die Werte als Häufigkeitsabellen ausgeben zu lassen nutzen wir den table() Befehl
table(WPStudis$F6_Sternzeichen)
##
## Fische Jungfrau Krebs Loewe Schuetze Skorpion Steinbock Stier
## 8 10 5 8 5 8 1 9
## Waage Wassermann Widder Zwilling
## 10 8 10 11
Für relative Häufigkeiten:
prop.table(table(WPStudis$F6_Sternzeichen))
##
## Fische Jungfrau Krebs Loewe Schuetze Skorpion Steinbock Stier
## 0.08602151 0.10752688 0.05376344 0.08602151 0.05376344 0.08602151 0.01075269 0.09677419
## Waage Wassermann Widder Zwilling
## 0.10752688 0.08602151 0.10752688 0.11827957
Etwas schöner als Prozentwerte und gerundet auf zwei Nachkommastellen
round(100*prop.table(table(WPStudis$F6_Sternzeichen)),2)
##
## Fische Jungfrau Krebs Loewe Schuetze Skorpion Steinbock Stier
## 8.60 10.75 5.38 8.60 5.38 8.60 1.08 9.68
## Waage Wassermann Widder Zwilling
## 10.75 8.60 10.75 11.83
In diesem Video zeige ich wie das in R funktioniert:
3.9 Kreuztabellen
Bevor wir mit Korrelationen starten, kann es sinnvoll sein Kreuztabellen zu erzeugen:
table (WPStudis$F7_Brille, WPStudis$F3_Geschlecht)
##
## Maennlich Weiblich
## Nein 14 39
## JA 2 37
Nun wollen wir wieder die relativen Prozente berechnen. Hier gibt es nun aber drei Möglichkeiten:
round(100*prop.table(table(WPStudis$F7_Brille, WPStudis$F3_Geschlecht)))
##
## Maennlich Weiblich
## Nein 15 42
## JA 2 40
Dies gibt uns die Prozentwerte der jeweiligen 4 Gruppen (bezogen auf alle Studierenden). Zum Beispiel wissen wir nun, dass 15% der Studierenden Männlich sind und keine Brille tragen.
Mit der erweiterung ,1 beziehungsweise ,2 können nun die relativen Zeilenprozente bzw. Spaltenprozente berechnet werden:
round(100*prop.table(table(WPStudis$F7_Brille, WPStudis$F3_Geschlecht),1))
##
## Maennlich Weiblich
## Nein 26 74
## JA 5 95
Hier wird pro Zeile gerechnet, d.h. jede Zeile ergibt 100%. Wir können nun also zum Beispiel sagen, dass von allen Brillenträgern (Zeile “JA”) nur rund 5% männlich sind.
Alternativ können wir die Prozente pro Spalte berechnen:
round(100*prop.table(table(WPStudis$F7_Brille, WPStudis$F3_Geschlecht),2))
##
## Maennlich Weiblich
## Nein 88 51
## JA 12 49
Dies sagt uns nun, dass von den Männlichen Studierenden nur 12 % eine Brille tragen.
In diesem Video zeige ich wie das in R funktioniert:
3.10 Korrelation
Grundsätzlich gibt es in R mehrere Möglichkeiten (wie immer) Korrelationen zu berechnen. Die cor() sowie cor.test() Funktionen sind ein Grundbestandteil von R. Weitere Korrelations-Funktionen sind in vielen Packages enthalten, z.B.rcorr() im Hmisc package.
Wir starten einfach :
cor(WPStudis$F4_Koerpergroesse, WPStudis$F5_Schuhgroesse, method="pearson")
## [1] 0.7253853
Bei Ordinal-skalierten Variablen sollten wir Kendall’s Tau oder Spearmans Rho verwenden.
Wichtiger Hinweis:
Wir müssen R sagen was mit den fehlenden Werten passieren soll Das Argument use=“complete.obs” sorgt dafür, dass nur Datensätze die “complete” also ohne fehlende Werte sind verwendet werden. Auch für die Nutzung von Kendall’s Tau müssen beide Variablen als numeric formatiert sein.
cor(WPStudis$F21_02_Zufriedenheit_Studium ,WPStudis$F21_01_Zufriedenheit_Leben,use="complete.obs", method="kendall")
## [1] 0.3073518
Was bedeutet das Ergebnis nun? Ein p-Wert könnte uns hier weiterhelfen - daher nutzen wir nun cor.test().
cor.test(WPStudis$F21_02_Zufriedenheit_Studium ,WPStudis$F21_01_Zufriedenheit_Leben, method ="kendall")
##
## Kendall's rank correlation tau
##
## data: WPStudis$F21_02_Zufriedenheit_Studium and WPStudis$F21_01_Zufriedenheit_Leben
## z = 3.2087, p-value = 0.001333
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## 0.3073518
Die Korrelation (von 0.3) ist auf dem 1%-Niveau signifikant.