Markus Burkhardt - EDA in R: 3 Deskriptive Statistik in R 3 Deskriptive Statistik in R (univariat) Markus Burkhardt ([email protected]) Inhalt 3.1 Ziel ................................................................................................................................................. 1 3.2 Häufigkeiten .................................................................................................................................. 1 3.3 Deskriptive Kennziffern I – Lagemaße ........................................................................................... 2 3.4 Streuungsmaße ............................................................................................................................. 5 3.5 Standardisierung: z-Werte ............................................................................................................ 7 3.6 Weiterführende Deskriptive Statistik ............................................................................................ 8 3.8 Literatur ......................................................................................................................................... 9 3.1 Ziel In diesem Kapitel zeigen wir Ihnen die Grundtechniken der deskriptiven Datenanalyse in R. Ziel einer deskriptiven Analyse ist es, Variablen bzw. Datenreihen so zu beschreiben, dass möglichst viele Information in einer möglichst kleinen Menge an Zahlen ausgedrückt wird. Letztlich geht es also darum nicht die gesamte Zahlenreihe zu berichten, sondern einzelne Kennziffern die etwas über die Beschaffenheit der Zahlenreihe aussagen. Allerdings ist die Aussagekraft stets an bestimmte Bedingungen geknüpft – wie das Skalenniveau oder die Verteilung der Daten. Genau diese Bedingungen können Gegenstand der explorativen Datenanalyse. Die deskriptiven Kennziffern bieten des Weiteren die Grundlage für grafische Explorationsverfahren, die wir im nächsten Kapitel vorstellen 3.2 Häufigkeiten Das Auszählen von Häufigkeiten ist wohl die einfachste Form der deskriptiven Statistik. Ob diese Art der Analyse sinnvoll ist, hängt natürlich von der Struktur Ihrer Daten ab. Insbesondere für nominal- und ordinalskalierte Daten bieten sich Häufigkeitsanalysen an. Aber auch für intervallskalierte Daten kann eine Häufigkeitsanalyse sinnvoll sein. Wir führen zunächst eine Häufigkeitsanalyse für das Geschlecht in der Datei bsp01 durch, um herauszufinden, wie viele Männer und Frauen in unserem Beispieldatensatz vorhanden sind. Die Grundlage für Häufigkeitsanalysen bietet die Funktion table().Das Ergebnis wird in der R-Console ausgegeben (Abb. 1). Die table() Funktion schließt standardmäßig NA-Werte aus. > table(bsp01$sex) female male 58 42 Abbildung 1. Häufigkeitstabelle in R. 1 Markus Burkhardt - EDA in R: 3 Deskriptive Statistik in R Durch die Eingabe mehrere Objekte, erhalten Sie mehrdimensionale Tabellen. Eine solche Darstellung, kann die Häufigkeit des Geschlechts in Abhängigkeit der Körpergröße sein. Dazu sollte die Körpergröße für eine bessere Übersichtlichkeit kategorisiert werden. Beispielsweise wollen wir die Körpergröße in zwei Kategorien einteilen, Menschen die kleiner als zwei Meter sind und Menschen die größer als zwei Meter sind. Die Funktion cut() bildet neue Kategorien. Wenn Sie sich die Hilfe zu dieser Funktion ansehen help(cut), sehen Sie, dass die Argumente x und breaks definiert werden müssen. (Die anderen Argumente sind vordefiniert. Sie können aber natürlich auch diese Werte spezifisch einstellen.) Dem Argument x weisen Sie Ihr Objekt zu, welches in kategorisiert werden soll und dem Argument breaks die Grenzwerte in Form einer Variable (Abb. 2). Wenn Sie eine Tabelle als Objekt speichern, sehen Sie, dass auch Tabellen eine eigene Objekt-Klasse in R sind. Für diese Klasse gibt es einige weitere sehr nützliche Funktionen. Wenn Sie lediglich an dem häufigsten Wert (dem Modalwert), nicht aber an der gesamten Häufigkeitstabelle interessiert sind, können Sie die Funktion which.max() anwenden. Diese gibt den Index des größten Wertes eines R-Objektes zurück. Im Falle eines Objektes der Klasse table, die entsprechende Kategorie. Allerdings wird bei mehreren Maxima nur das jeweils Erste Maximum ausgegeben. Mit Hilfe von barplot() können Sie sehr schnell eine Häufigkeitsverteilung grafisch darstellen (wir gehen auf diese Funktion ausführlicher im nächsten Kapitel ein). Die Funktion prop.table() ermöglicht es Ihnen, relative Anteile darzustellen. Natürlich können Sie auch arithmetische Operationen oder Indizierungen in Tabellen vornehmen (Beispiele in Abbildung 2). Einen guten Überblick über den Umgang mit Tabellen gibt auch die Internetseite: http://www.statmethods.net/stats/frequencies.html # Häufigkeitsanalyse mit der Funktion table() # Häufigkeitstabelle für das Geschlecht table(bsp01$sex) # Kategorisierung der Variable height in 2 Gruppen, # von 0 bis einschließlich 200 und größer 200 bis 250 # mit entsprechenden lables height_kategorien <- cut(x=bsp01$height, breaks=c(0,200,250), labels=c("kleiner/gleich 200 cm", "groesser 200 cm") ) # Mehrdimensionale Tabelle aus Geschlecht und der kategoriserten Körpergröße table(bsp01$sex, height_kategorien) # Grafische Darstellung von Häufigkeiten barplot(table(bsp01$sex)) # relative Häufigketien prop.table(table(sex)) # in Prozent prop.table(table(sex))*100 # Aufsteigende Sortierung mit sort() sort(table(bsp01$sex), decreasing=FALSE) # Modalwert which.max(table(bsp01$sex)) Abbildung 2. Häufigkeitsanalysen mit der Funktion table(). 3.3 Deskriptive Kennziffern I – Lagemaße Deskriptive Kennziffern lassen sich in Lagemaße (wo liegt die Verteilung bzw. wo konzentriert sie sich) und Streuungsmaße (wie breit ist die Verteilung bzw. wie stark konzentriert sich) unterscheiden. 2 Markus Burkhardt - EDA in R: 3 Deskriptive Statistik in R Sie kennen bereits die Funktion des arithmetischen Mittelwertes1 mean(). Der Mittelwert ist vermutlich das am häufigsten berichtete Lagemaß der deskriptiven Datenanalyse (Formel 1). (1) Allerdings verlangt die sinnvolle Verwendung des Mittelwerts zwei Voraussetzungen: Zum einen müssen die Daten mindestens Intervallskalenniveau besitzen, zum anderen sollte der Mittelwert aus einer weitgehend symmetrischen Verteilung stammen. Ein Beispiel für eine asymmetrische Verteilung geben Sedlmeier und Renkewitz (2013) aus der Arbeit von Pedersen, Miller, PutchaBhagavatula und Yang (2002). Auf die Frage: „Was wäre Ihre ideale Anzahl an Sexualpartnern in den nächsten 30 Jahren?“ gaben Männer im Mittel 7,7 Partner und Frauen 2,8 Partner an. Diese Unterschiede scheinen zunächst einmal zu gängigen Geschlechterstereotypen zu passen. Allerdings zeigen Pedersen et al. (2002), dass diese Mittelwertsunterschiede weniger durch geschlechtsspezifische Sexualstrategien, sondern vielmehr durch die Asymmetrie der Antwortverteilung zustande kommen. Wir haben die Daten einmal nachgestellt2 (Abb. 3). Sie können erkennen, dass der Mittelwert der Männer vor allem durch die 3 Männer beeinflusst wird, die 99 als Antwort gaben. In diesem Fall, ist der Mittelwert also nicht gut geeignet, um die Datenreihe der idealen Anzahl an Sexualpartnern für Männer zu beschreiben. Zwei gute Alternativen sind im vorliegenden Fall der getrimmte Mittelwert und der Median. Abbildung 3. Asymmetrische Verteilung adaptiert nach Pedersen et al. (2002) mit Mittelwert. Beachten Sie, dass die Skalierung der x-Achse nur bis zum Wert 20 sinnvoll gewählt ist. 1 Wir bezeichnen den arithmetischen Mittelwert im Folgenden kurz als Mittelwert. Da wir nicht die Originalwerte vorliegen haben gibt es leichte Abweichungen zwischen unseren Daten und den Originaldaten. Unsere Daten können heruntergeladen werden: http://www.tu-chemnitz.de/hsw/psychologie/professuren/method/homepages/mb/pedersen_2002.txt. 2 3 Markus Burkhardt - EDA in R: 3 Deskriptive Statistik in R Der getrimmte Mittelwert ist ein Mittelwert aus einem Anteil um die Daten in der Mitte. In der Funktion mean() können sie dem Argument trim einen Wert zwischen null und eins zuweisen, um den Anteil an Daten zu bestimmen, der von jedem Ende der Verteilung abgeschnitten werden soll (Abb. 4). Eine Alternative zum Mittelwert stellt die Berechnung des Medians – dem Wert in der Mitte aller (aufsteigend oder absteigend sortierten) Werte dar. Der Vorteil dieser Kennziffer ist, dass sie relativ robust gegenüber einzelnen extremen Werten ist. Bei einer Zahlenreihe von: {1; 2; 5; 8; 12; 15; 20; 27; 30; 100} beträgt der Median 13,5 (da dieser Wert in der Mitte liegt)3. Der Mittelwert hingegen liegt bei 22, also deutlich oberhalb des Medians. Zur Berechnung des Medians in R wird die Funktion median() genutzt. Die Mitte aller Werte lässt sich auch als den Punkt beschreiben, der eine Datenreihe in zwei Teile teilt, sodass unterhalb des Medians 50% der Daten, und oberhalb des Medians 50% der Daten liegen (Abbildung 4). Ausgehend von dieser Überlegung, können wir auch die Mitte der Daten unterhalb des Medians berechnen. Dieser Wert wird 25% Quantil4 genannt, da 25% der Daten unterhalb dieses Wertes und 75% oberhalb dieses Wertes liegen. Entsprechend können beliebige Quantile berechnet werden, am geläufigsten sind das 25% Quantil, Median und 75% Quantil. Diese werden durch die summary() oder etwas variabler mit quantile()und dem Argument probs bestimmt. Beachten Sie bei der Quantilberechnung, dass mehrere Algorithmen in R implementiert sind (siehe dazu help(quartile)) und mit dem Argument type definiert werden. Die Auswirkungen der verschiedenen Quantilalgorithmen nehmen mit zunehmender Stichprobengröße ab und sind im Bezug auf sozialwissenschaftlicher Datenanalyse als eher unbedeutend zu bewerten. Abbildung 4. Mittelwerte, getrimmte Mittelwerte, Median und Quartile einer Zahlenreihe. 3 Bei einer geraden Anzahl an Elemente innerhalb einer Variablen wird in der Regel der Mittelwert zwischen den beiden in der Mitte liegenden Elementen genutzt. 4 Zum Teil wird das 25% Quantil auch als unteres Quartil, das 75% Quantil als oberes Quartil bezeichnet. 4 Markus Burkhardt - EDA in R: 3 Deskriptive Statistik in R In Abbildung 5 haben wir exemplarisch die Berechnung der deskriptiven Kennziffern für die Daten von Pedersen et al. (2002) vorgenommen. In Abbildung 6 veranschaulichen wir nochmal die verschiedenen Lageparameter bei der unsymmetrischen Verteilung der erwünschten Sexualpartner für die untersuchten Männer. # Herunterladen der Daten (Kapitel 1) von http://www.tu-chemnitz.de/hsw/psychologie/professuren/method/homepages/mb/pedersen_2002.txt attach(pederseon_2002) # Deskriptive Statistik nur für die Gruppe der Männer (des_m) des_m <- subset(desired, sex=="male") # Mittelwert mean(des_m) # getrimmter Mittelwert # hier der Mittelwert ohne die oberen und unteren 10% der Daten mean(des_m, trim=.1) # hier der Mittelwert ohne die oberen und unteren 25% der Daten mean(des_m, trim=.25) # Median median(des_m) # 25% und 75% Quantil quantile(des_m, probs=.25) quantile(des_m, probs=.75) # Zusammenfassung der deskriptiven Statistik mit summary() summary(des_m) Abbildung 5. Quellcode für Lagemaße der Daten von Pedersen 2002. Abbildung 6. Veranschaulichung der Lageparameter bei unsymmetrischer Verteilung. 3.4 Streuungsmaße Streuungsmaße geben an, wie breit die Verteilung der Daten ist bzw. wie stark sich diese Verteilung konzentriert. Für intervallskalierte Variablen wird häufig auf die Varianz bzw. die Standardabweichung zurück gegriffen. Diese werden durch die Funktionen var() bzw. sd() berechnet. Auch hier ist die Angabe v. a. dann sinnvoll, wenn normalverteilte Werte vorliegen. Varianz ist ein Mittelwert, der ausdrückt, wie weit die einzelnen Werte im Durchschnitt vom Mittelwert entfernt sind. Die „Entfernung“ wir dabei durch die Summe der quadrierten Abweichungen gemessen (Formel 2 und 3). 5 Markus Burkhardt - EDA in R: 3 Deskriptive Statistik in R Varianz (2) Standardabweichung (3) Der Nachteil der Varianz ist, dass im Ergebnis quadrierte Einheiten vorliegen, die inhaltlich kaum interpretierbar sind. Die Standardabweichung als Quadratwurzel der Varianz (Formel 3) löst dieses Problem. Wenn Sie die Funktionen var() bzw. sd() in einem Script selbst programmieren, werden Sie feststellen, dass R und Sie nicht zum selben Ergebnis kommen. Das liegt daran, dass die R Funktionen auf der korrigierten Stichprobenvarianz beruhen. Die korrigierte Stichprobenvarianz spielt im Bereich der Inferenzstatistik eine entscheidende Rolle, weshalb R diese ausgibt (Formel 4 und 5). Es ist ersichtlich, dass die Unterschiede in der Varianz vor allem bei sehr kleinen Stichproben (geringes n) auftreten. korrigierte Stichprobenvarianz (4) korrigierte Standardabweichung (5) Alternative Streuungsangaben für nicht intervallskalierte Variablen sind der Interquartilsabstand oder die Spannweite. Die Berechnung des Interquartilsabstand, der Differenz des 75% Quantils und des 25% Quantils, erfolgt mit der Funktion IQR(). Die Spannweite (die Differenz zwischen größten und kleinsten Wert der Datenreihe) wird Ihnen nicht direkt angegeben. Sie können sich aber mit der Funktion range() das Minimum und das Maximum der Variable ausgeben lassen. In Abbildung 7 stellen wir die Verwendung einiger Streuungsmaße am IQ unserer Beispieldatei bsp01 vor. In Abbildung 8 zeigen wir Ihnen verschiedene Verteilungen mit zugehöriger Standardabweichung. # Berechnung von Streuungsmaßen der Variable IQ des Dataframe attach(bsp01) # Varianz und Standardabweichung des IQ var(IQ) sd(IQ) # Interquartilsabstand und Range IQR(IQ) range(IQ) # Spannweite max(IQ)-min(IQ) bsp01 # Vergleich empirische Varianz vs. korrigierte Stichprobenvarianz # empirische Varianz sum((IQ-mean(IQ))^2/length(IQ)) # korrigierte stichprobenvarianz var(IQ) detach(bsp01) Abbildung 7. Berechnung von Streuungsmaßen mit R. 6 Markus Burkhardt - EDA in R: 3 Deskriptive Statistik in R Abbildung 8. Verschiedene Verteilungen mit gleichem Mittelwert und unterschiedlichen Standardabweichungen (SD). 3.5 Standardisierung: z-Werte Die Lage und Streuungsmaße die Sie bisher kennengelernt, haben sind in ihrer Größe abhängig von der jeweiligen Einheit der zugrundeliegenden Daten. Es kann natürlich vorkommen, dass Sie Werte gleicher Gegenstandsbereich miteinander vergleichen wollen, die unterschiedlich skaliert sind oder aber Sie wollen die relativen Abstände bzgl. einer gegebenen Verteilung bewerten. Zur Veranschaulichung betrachten wir das folgende Beispiel (der dazugehörige Quellcode findet sich in Abbildung 9). Die mittlere Körpergröße von Männern sollte in einer repräsentativen Stichprobe größer sein als die Körpergröße von Frauen. Betrachten wir die Mittelwerte der Männer (x = 182 cm) und der Frauen (x = 164) in unserem Beispieldatensatz, sehen wir diese Unterschiede im Mittelwert. Was wir aber nicht wissen ist, ob eine Frau mit 182 cm Körpergröße relativ zu den anderen Frauen größer ist als ein Mann mit der Größe von 200 cm relativ zu den anderen Männern. Um diese Frage zu beantworten helfen sogenannte Standardisierungsverfahren. Standardisierungen bieten die Möglichkeit Daten zu vergleichen, die ursprünglich unterschiedliche Skalierungen haben oder, wie in unserem Beispiel, aus unterschiedlichen Populationen stammen. Es gibt mehrere standardisierte Skalen (z.B. IQ –Werte oder Abiturnoten) die geläufigste und grundlegendste ist jedoch die z-Standardisierung. Diese wird in R über die Funktion scale() ausgeführt. Die z- Standardisierung erfolgt, indem jeder einzelne Messwert durch die Standardabweichung geteilt wird (Formel 6). Die neuen Daten haben dabei die Eigenschaft, dass der Mittelwert gleich null und die Standardabweichung gleich 1 ist. Jeder einzelne Messwert kann nun auch relativ zu jedem anderen Messwert mit ursprünglich anderer Skalierung verglichen werden. 7 Markus Burkhardt - EDA in R: 3 Deskriptive Statistik in R (6) # Mittelwerte der Körpergröße von Männer und Frauen height_male <- subset(height, sex=="male") height_female <- subset(height, sex=="female") mean(height_male) mean(height_female) # z-Standaradisierung z_height_male <- scale(height_male) z_height_female <- scale(height_female) # Mittelwert z_Standardisierter Werte ist 0 (gerundet auf 4 Kommastellen) round(mean(z_height_male),4) round(mean(z_height_female),4) # Standardabweichung von 1 round(sd(z_height_male),4) round(sd(z_height_female),4) # Wie groß ist eine Frau von 182 cm relativ zu den anderen Frauen? (182-mean(height_female))/sd(height_female) # Wie groß ist ein Mann von 200 cm relativ zu den anderen Männern? (200-mean(height_male))/sd(height_male) ## relativ zur jeweiligen Bezugsgruppe ist eine Frau von 182 cm ## größer als ein Mann von 200 cm Körpergröße Abbildung 9. Quellcode für die z-Standardisierung. 3.6 Weiterführende Deskriptive Statistik Es gibt eine ganze Reihe weitere Funktionen der deskriptiven Statistik. Wir haben einige in Tabelle 1 ohne Anspruch auf Vollständigkeit zusammengestellt. Sie werden im Laufe Ihrer Nutzung von R merken, dass Sie mit den gängigen Lage und Streuungsmaßen ziemlich viel erreichen können, wenn Sie diese in eigenen Funktionen (Kapitel 5) nutzen. In verschiedenen Paketen finden Sie weitere Funktionen. Auch hier lohnt sich die Such im Internet. Tabelle 1. Wichtige Funktionen der deskriptiven Statistik. Statistische Funktionen in R mean median var sd quantile min max which.min which.max table IQR range summary length Beschreibung Mittelwert Median korrigierte Stichprobenvarianz Standardabweichung Quantil Minimum Maximum Welcher Wert bildet das Minimum Welcher Wert bildet das Maximum Häufigkeitstabelle Interquartilabstand Spannweite Zusammenfassung deskriptiver Kennziffern Anzahl der Elemente 8 Markus Burkhardt - EDA in R: 3 Deskriptive Statistik in R 3.7 Literatur Pedersen, W. C., Miller, L., Putcha-Bhagavatula, A. D., & Yang, Y. (2002). Evolved Sex Differences in the Number of Partners Desired? The Long and the Short of It. Psychological Science (Wiley Blackwell), 13(2), 157. Sedlmeier, P. & Renkewitz, F. (2013). Forschungsmethoden und Statistik: Ein Lehrbuch für Psychologen und Sozialwissenschaftler (2. überarbeitete und erweiterte Auflage). München, Pearson. 9