17 min read

Univariate descriptive statistics

Table of Content

  • 1 Introduction
  • 2 Frequency Tables
  • 2.1 Absolute Frequency
  • 2.2 Relative Frequency
  • 2.3 Cumulate Frequency
  • 2.4 Integration of frequencies within a single table
  • 3 Description of nominal data
  • 3.1 Mode
  • 3.2 Relative information content
  • 4 Description of ordinal data
  • 4.1 Percentile ranks
  • 4.2 Median
  • 4.3 Range
  • 4.4 Quantile
  • 5 Description of interval data
  • 5.1 Arithmetical mean
  • 5.2 Standard deviation
  • 5.3 Skewness and Kurtosis
  • 5.4 describe function
  • 5.5 summary function
  • 5.6 Group comparisons
  • 5.6.1 describeBy function
  • 5.6.2 tapply function
  • 6 Conclusion

1 Introduction

Die univariate deskriptive Statistik ist die Beschreibung einzelner Variablen. Abhängig von der jeweiligen Skalierung, können unterschiedliche Lage- und Streumaße verwendet werden. Aufbauend auf dem vorangegangenen Post “Measures of Dispersion”, in dem hauptsächlich die mathematische Betrachtung der verschiedenen Streumaße behandelt wurde, ist hier die praktische Anwendung zentral.
Für diesen Post wurde der Datensatz countries of the world von der Statsistik Plattform Kaggle https://www.kaggle.com verwendet. Eine Kopie des Datensatzes ist unter https://drive.google.com/open?id=1QO_t4hySiqVsSDsVOsKZEOHOkLlWO006 abrufbar.

library("psych")
library("CTT")
library("QuantPsyc")
library("tidyverse")
world <- read_csv("countries of the world.csv")
glimpse(world)
## Observations: 227
## Variables: 20
## $ Country                              <chr> "Afghanistan", "Albania",...
## $ Region                               <chr> "ASIA (EX. NEAR EAST)", "...
## $ Population                           <int> 31056997, 3581655, 329300...
## $ `Area (sq. mi.)`                     <int> 647500, 28748, 2381740, 1...
## $ `Pop. Density (per sq. mi.)`         <chr> "48,0", "124,6", "13,8", ...
## $ `Coastline (coast/area ratio)`       <chr> "0,00", "1,26", "0,04", "...
## $ `Net migration`                      <chr> "23,06", "-4,93", "-0,39"...
## $ `Infant mortality (per 1000 births)` <dbl> 16307, 2152, 31, 927, 405...
## $ `GDP ($ per capita)`                 <int> 700, 4500, 6000, 8000, 19...
## $ `Literacy (%)`                       <dbl> 360, 865, 700, 970, 1000,...
## $ `Phones (per 1000)`                  <chr> "3,2", "71,2", "78,1", "2...
## $ `Arable (%)`                         <chr> "12,13", "21,09", "3,22",...
## $ `Crops (%)`                          <chr> "0,22", "4,42", "0,25", "...
## $ `Other (%)`                          <dbl> 8765, 7449, 9653, 75, 977...
## $ Climate                              <dbl> 1, 3, 1, 2, 3, NA, 2, 2, ...
## $ Birthrate                            <dbl> 466, 1511, 1714, 2246, 87...
## $ Deathrate                            <dbl> 2034, 522, 461, 327, 625,...
## $ Agriculture                          <chr> "0,38", "0,232", "0,101",...
## $ Industry                             <chr> "0,24", "0,188", "0,6", N...
## $ Service                              <chr> "0,38", "0,579", "0,298",...

2 Frequency Tables

Häufigkeitstabellen sind eine gute Darstellungsform, um einen ersten Eindruck von der Verteilung der zu beschreibenden Variablen zu bekommen. Man unterscheidet zwischen absoluten und relativen Häufigkeiten. Die absolute Häufigkeit bezeichnet die Anzahl der Ausprägung, beispielsweise 4 Männer und 6 Frauen. Die relative Häufigkeit dagegen beschreibt den Anteil der jeweiligen Ausprägung an der gesamten Stichprobe, zum Beispiel 40% Männer und 60% Frauen.

2.1 Absolute Frequency

Wir möchten uns die absoluten Häufigkeiten der Variable Region ausgeben lassen. Wie wir mittels des Befehles glimpse sehen können, beinhaltet der Datensatz countries of the world verschiedene Informationen über diverse Länder. Unter der Variable Region sind mehrere Länder nach “Region” zusammengefasst.

Eine Tabelle mit den absoluten Häufigkeiten kann mit der table Funktion angefordert werden:

table(world$Region)
## 
## ASIA (EX. NEAR EAST)              BALTICS  C.W. OF IND. STATES 
##                   28                    3                   12 
##       EASTERN EUROPE  LATIN AMER. & CARIB            NEAR EAST 
##                   12                   45                   16 
##      NORTHERN AFRICA     NORTHERN AMERICA              OCEANIA 
##                    6                    5                   21 
##   SUB-SAHARAN AFRICA       WESTERN EUROPE 
##                   51                   28

Wir sehen, dass die Länder in 11 unterschiedliche Regionen aufgeteilt sind. Die Ergebnisse kann man sich auch sortiert nach aufsteigend oder absteigend ausgeben lassen:

sort(table(world$Region))
## 
##              BALTICS     NORTHERN AMERICA      NORTHERN AFRICA 
##                    3                    5                    6 
##  C.W. OF IND. STATES       EASTERN EUROPE            NEAR EAST 
##                   12                   12                   16 
##              OCEANIA ASIA (EX. NEAR EAST)       WESTERN EUROPE 
##                   21                   28                   28 
##  LATIN AMER. & CARIB   SUB-SAHARAN AFRICA 
##                   45                   51
sort(table(world$Region), decreasing=TRUE)
## 
##   SUB-SAHARAN AFRICA  LATIN AMER. & CARIB ASIA (EX. NEAR EAST) 
##                   51                   45                   28 
##       WESTERN EUROPE              OCEANIA            NEAR EAST 
##                   28                   21                   16 
##  C.W. OF IND. STATES       EASTERN EUROPE      NORTHERN AFRICA 
##                   12                   12                    6 
##     NORTHERN AMERICA              BALTICS 
##                    5                    3

2.2 Relative Frequency

Die relativen Häufigkeiten können mit der prop.table Funktion angefordert werden:

prop.table(table(world$Region))
## 
## ASIA (EX. NEAR EAST)              BALTICS  C.W. OF IND. STATES 
##           0.12334802           0.01321586           0.05286344 
##       EASTERN EUROPE  LATIN AMER. & CARIB            NEAR EAST 
##           0.05286344           0.19823789           0.07048458 
##      NORTHERN AFRICA     NORTHERN AMERICA              OCEANIA 
##           0.02643172           0.02202643           0.09251101 
##   SUB-SAHARAN AFRICA       WESTERN EUROPE 
##           0.22466960           0.12334802

Möchten wir dieses Ergebnis in Prozent ausgegeben haben, müssen wir den Befehl mit 100 multiplizieren:

100*prop.table(table(world$Region))
## 
## ASIA (EX. NEAR EAST)              BALTICS  C.W. OF IND. STATES 
##            12.334802             1.321586             5.286344 
##       EASTERN EUROPE  LATIN AMER. & CARIB            NEAR EAST 
##             5.286344            19.823789             7.048458 
##      NORTHERN AFRICA     NORTHERN AMERICA              OCEANIA 
##             2.643172             2.202643             9.251101 
##   SUB-SAHARAN AFRICA       WESTERN EUROPE 
##            22.466960            12.334802

Zur besseren Übersicht, kann man sich das Ergebnis auch gerundet ausgeben lassen. Dies geht mit dem Befehl round, wobei die Ziffer am Ende der Syntax die Anzahl der Nachkommastellen angibt.

round(100*prop.table(table(world$Region)), 2)
## 
## ASIA (EX. NEAR EAST)              BALTICS  C.W. OF IND. STATES 
##                12.33                 1.32                 5.29 
##       EASTERN EUROPE  LATIN AMER. & CARIB            NEAR EAST 
##                 5.29                19.82                 7.05 
##      NORTHERN AFRICA     NORTHERN AMERICA              OCEANIA 
##                 2.64                 2.20                 9.25 
##   SUB-SAHARAN AFRICA       WESTERN EUROPE 
##                22.47                12.33

2.3 Cumulate Frequency

Zusätzlich zu den absoluten und relativen Häufigkeiten, kann man sich auch noch die kumulierten Häufigkeiten ausgeben lassen. Dabei wird die relative Häufigkeit zu den vorangegangenen relativen Häufigkeiten hinzuaddiert.

Zur besseren Veranschaulichung werden die relativen Häufigkeiten der Regionen aufsteigend sortiert und auf zwei Nachkommastellen gerundet:

sort(round(100*prop.table(table(world$Region)), 2))
## 
##              BALTICS     NORTHERN AMERICA      NORTHERN AFRICA 
##                 1.32                 2.20                 2.64 
##  C.W. OF IND. STATES       EASTERN EUROPE            NEAR EAST 
##                 5.29                 5.29                 7.05 
##              OCEANIA ASIA (EX. NEAR EAST)       WESTERN EUROPE 
##                 9.25                12.33                12.33 
##  LATIN AMER. & CARIB   SUB-SAHARAN AFRICA 
##                19.82                22.47

Mit dem Befehl cumsum können wir nun die kumulierten Häufigkeiten anfordern:

cumsum(sort(round(100*prop.table(table(world$Region)), 2)))
##              BALTICS     NORTHERN AMERICA      NORTHERN AFRICA 
##                 1.32                 3.52                 6.16 
##  C.W. OF IND. STATES       EASTERN EUROPE            NEAR EAST 
##                11.45                16.74                23.79 
##              OCEANIA ASIA (EX. NEAR EAST)       WESTERN EUROPE 
##                33.04                45.37                57.70 
##  LATIN AMER. & CARIB   SUB-SAHARAN AFRICA 
##                77.52                99.99

Wir sehen, dass die “Baltics” Region mit 1,32% bei der kumulierten Ausgabe zu den 2,20% der “Northern America” Region hinzuaddiert wurde. Das Ergebnis von 3,52% unter “Northern America” sagt nun aus, dass “Baltics” und “Northern America” zusammen einen Anteil von 3,52% an der Stichprobe ausmachen.

2.4 Integration of frequencies within a single table

Die vier verschiedenen Arten von Häufigkeiten (absolute, relative, prozentuale und kumulierte) können auch gemeinsam in einer Tabelle ausgegeben werden. Allerdings muss man hierfür mehrere Befehle ausführen:

absolut <- table(world$Region)
relativ <- prop.table(absolut)
prozent <- 100*relativ
kumuliert <- cumsum(prozent)
haeufigkeiten <- cbind(absolut, relativ, prozent, kumuliert)

round(haeufigkeiten, 2)
##                      absolut relativ prozent kumuliert
## ASIA (EX. NEAR EAST)      28    0.12   12.33     12.33
## BALTICS                    3    0.01    1.32     13.66
## C.W. OF IND. STATES       12    0.05    5.29     18.94
## EASTERN EUROPE            12    0.05    5.29     24.23
## LATIN AMER. & CARIB       45    0.20   19.82     44.05
## NEAR EAST                 16    0.07    7.05     51.10
## NORTHERN AFRICA            6    0.03    2.64     53.74
## NORTHERN AMERICA           5    0.02    2.20     55.95
## OCEANIA                   21    0.09    9.25     65.20
## SUB-SAHARAN AFRICA        51    0.22   22.47     87.67
## WESTERN EUROPE            28    0.12   12.33    100.00

3 Description of nominal data

Von Nominaldaten wird gesprochen, wenn mögliche Ausprägungen zwar unterschieden werden können, aber diese keine natürliche Rangfolge aufweisen.

3.1 Mode

Der Modalwert, auch Modus genannt, ist definiert als der häufigste Wert, der in der Stichprobe vorkommt. Dieser kann entweder einer absoluten Häufigkeitstabelle entnommen, oder mit der which.max Funktion angefordert werden:

table(world$Region)
## 
## ASIA (EX. NEAR EAST)              BALTICS  C.W. OF IND. STATES 
##                   28                    3                   12 
##       EASTERN EUROPE  LATIN AMER. & CARIB            NEAR EAST 
##                   12                   45                   16 
##      NORTHERN AFRICA     NORTHERN AMERICA              OCEANIA 
##                    6                    5                   21 
##   SUB-SAHARAN AFRICA       WESTERN EUROPE 
##                   51                   28
which.max(table(world$Region))
## SUB-SAHARAN AFRICA 
##                 10

Ergänzend zu der which.max Funktion, kann man sich mit der max Funktion die absolute Häufigkeit ausgeben lassen:

max(table(world$Region))
## [1] 51

3.2 Relative information content

Ein gutes Streuungsmaß für Nominaldaten ist der relative Informationsgehalt. Dieser sagt aus, wie sehr sich die Personen auf eine der möglichen Kategorien konzentrieren. Der Wertebereich des relativen Informationsgehalts reicht von Null bis Eins. Null bedeutet, dass alle Personen nur eine mögliche Antwortkategorie gewählt haben. Die Stichprobe ist daher sehr homogen. Eins bedeutet, dass alle Antwortkategorien gleich häufig gewählt wurden und die Stichprobe daher sehr heterogen ist. Für die Berechnung des relativen Informationsgehalts sind mehrere Schritte notwendig:

Als erstes wird eine relative Häufigkeitstabelle der zu untersuchenden Variablen in ein separates Objekt gespeichert (hier: “relhaeufig”).

relhaeufig <- prop.table(table(world$Region))

Anschließend wird jeder Wert aus der Tabelle mit seinem logarithmierten Wert multipliziert.

logarithm <- relhaeufig*log(relhaeufig)

Nun werden die 11 Werte (wg 11 Regionen/Antwortmöglichkeiten) zusammen addiert.

Summe <- sum(logarithm)

Als verletzen Schritt müssen die Anzahl der Antwortkategorien (hier unsere 11 Regionen) logarithmiert werden und von diesem Wert muss der negative Kehrwert gebildet werden.

Kehrwert <- -1/log(11)

Um den relativen Informationsgehalt zu bekommen muss im letzten Schritt die gebildete Summe mit dem Kehrwert multipliziert werden.

Summe*Kehrwert
## [1] 0.8873596

Diese fünf Schritte können auch in einem Befehl zusammengefasst werden:

(-1/log(11)) * sum(prop.table(table(world$Region)) * log(prop.table(table(world$Region))))
## [1] 0.8873596

Der Wert von .89 zeigt uns, dass die Variable Region sehr heterogen gewählt wurde. Dies ist in unserem Beispiel nicht verwunderlich, da die Regionen zwar unterschiedlich viele Länder beinhalten aber die Länder dennoch über alle Regionen verteilt liegen.

4 Description of ordinal data

Ordinal skalierte Daten können entgegen Nominaldaten in eine natürliche Reihenfolge gebracht werden. Allerdings sind die Abstände zwischen den einzelnen Werten nicht quantifizierbar. Natürlich könnten wir wieder den Modalwert und den relativen Informationsgehalt ausrechnen, allerdings steigen mit dem Informationsgehalt des Skalenniveaus auch die statistischen Möglichkeiten, welche für Nominaldaten nicht zugelassen sind.

4.1 Percentile ranks

Prozentränge (z.B. von Personen) drücken aus, wie viel Prozent der Stichprobe diesen oder einen geringeren Wert auf der Variablen haben. Mit der score.transform Funktion (Paket “CTT”) wird die zu untersuchende Variable in zwei neue Variablen transformiert. In der neuen Variable $new.scores sind die standardisierten Werte enthalten und in $p.scores die berechneten Prozentränge.

birthrate.transf <- score.transform(world$Birthrate)
head(birthrate.transf$p.scores)
## [1] 0.08810573 0.39647577 0.47577093 0.62995595 0.10572687 0.95594714

Im nächsten Schritt fügen wir die neue Variable $p.scores dem zugrunde liegenden Datensatz hinzu.

world$birthrate.transf <- birthrate.transf$p.scores

Nun können wir uns beispielsweise die Prozentränge für die Länder der Region “Northern Africa” ausgeben lassen:

percentile.ranks.africa <- world %>% filter(Region == "NORTHERN AFRICA")
subset(percentile.ranks.africa, select = c("Country", "Birthrate", "birthrate.transf"))
## # A tibble: 6 x 3
##   Country        Birthrate birthrate.transf
##   <chr>              <dbl>            <dbl>
## 1 Algeria             1714            0.476
## 2 Egypt               2294            0.648
## 3 Libya               2649            0.700
## 4 Morocco             2198            0.608
## 5 Tunisia             1552            0.419
## 6 Western Sahara        NA            1

Wir sehen, Algerien hat eine Geburtenrate von 1.714 und einen Prozentrang von 0,48% was bedeutet, dass 0,48% der Länder eine gleich hohe oder niedrigere Geburtenrate hat als Algerien.

4.2 Median

Der Median, auch Zentralwert genannt, ist bei einer Auflistung von Zahlenwerten der Wert, der an der zentralen Stelle steht, wenn man die Werte der Größe nach sortiert. Anfordern kann man ihn über die Funktion median.

median(world$Deathrate, na.rm = TRUE)
## [1] 713

4.3 Range

Der Wertebereich berechnet sich aus der Differenz zwischen dem kleinsten Wert und dem größten Wert einer Variablen. Mit dem Befehl range kann man den min-Wert und max-Wert anfordern und mit diff den Wertebereich.

range(world$Deathrate, na.rm = TRUE)
## [1]   22 2974
diff(range(world$Deathrate, na.rm = TRUE))
## [1] 2952

4.4 Quantile

Neben dem Wertebereich kann auch das Dispersionsmaß Quantile für ordinalskalierte Daten verwendet werden. Quantile unterteilt die Stichprobe in kleinere Gruppen. Möchte man seine Stichprobe in vier (Quartile) gleich große Gruppen aufteilen, verwendet man die Funktion quantile.

quantile(world$Deathrate, na.rm = TRUE)
##     0%    25%    50%    75%   100% 
##   22.0  517.5  713.0 1025.5 2974.0

Mit dem Zusatzargument probs = seq, kann die Anzahl der Aufteilungen beliebig geändert werden. Da die Zahlensequenz nur von 0 bis 1 gehen darf, sind die ersten beiden Argumente (0 & 1) fest vorgegeben. Das dritte Argument (hier 0.1) gibt die gewünschte relative Häufigkeit der einzelnen Teile an.

quantile(world$Deathrate, na.rm = TRUE, probs = seq(0, 1, 0.1))
##     0%    10%    20%    30%    40%    50%    60%    70%    80%    90% 
##   22.0  241.2  470.2  556.8  640.2  713.0  826.2  955.8 1152.2 1480.2 
##   100% 
## 2974.0

5 Description of interval data

Intervalldaten zählen in der Statistik zu den metrischen Daten. Entgegen ordinalskalierten Merkmalen, lassen sich die Abstände zwischen den Merkmalsausprägungen exakt bestimmen. Alle bisher verwendeten Lage- und Streumaße lassen sich auch für intervallskalierte Daten verwenden. Darüber hinaus kann man für Intervalldaten den Mittelwert als Lagemaß und die Standardabweichung als Streumaß berechnen.

5.1 Arithmetical mean

Im Nachfolgenden wollen wir den Mittelwert mit der mean Funktion für das Bruttoinlandsprodukt (in tausend) berechnen.

mean(world$`GDP ($ per capita)`, na.rm = TRUE)/ 1000
## [1] 9.689823

5.2 Standard deviation

Zusätzlich zum Mittelwert sollte man immer auch die Standardabweichung angeben. Diese wird mit der sd Funktion angefordert.

sd(world$`GDP ($ per capita)`, na.rm = TRUE)/ 1000
## [1] 10.04914
round(sd(world$`GDP ($ per capita)`, na.rm = TRUE)/ 1000, 2)
## [1] 10.05

5.3 Skewness and Kurtosis

Normalverteilte Variablen sind Voraussetzung für viele statistische Tests. Sie können auf zwei Arten von der Normalverteilung abweichen. Zum einen können sie asymmetrisch (rechtsschief oder linksschief) sein und zum anderen können Verteilungen zu flach oder zu spitz verlaufen. Die Schiefe (skewness) und der Exzess (kurtosis) kann mit dem Befehl norm aus dem “QuantPsyc” Paket berechnet werden.

norm(world$Birthrate)
##           Statistic        SE     t-val           p
## Skewness  0.4931583 0.1636634  3.013247 0.001292343
## Kurtosis -0.6078551 0.3273268 -1.857028 0.031653577

Interpretation:

  • Ein Schiefe-Wert größer Null deutet auf eine rechtsschiefe bzw. linkssteile Verteilung hin.
  • Ein Schiefe-Wert kleiner Null deutet auf eine linksschiefe bzw. rechtssteile Verteilung hin.
  • Ein Schiefe-Wert von Null bedeutet, dass die Verteilung symmetrisch ist.

  • Ein Kurtosis-Wert größer Null deutet auf eine spitze Verteilung (leptokurtisch) hin.
  • Ein Kurtosis-Wert kleiner Null deutet auf eine flache Verteilung (platykurtisch) hin.
  • Ein Kurtosis-Wert von Null deutet auf eine Normalverteilung hin.

5.4 describe function

Mit den bisherigen Funktionen wurden jeweils nur einzelne Kennwerte ausgegeben. Mit der describe Funktion kann man sich eine ganze Reihe an nützlichen Kennwerten ausgeben lassen (hier für die Variablen Geburtenrate und Mortalitätenrate).

describe(data.frame(world$Birthrate, world$Deathrate))
##                 vars   n    mean      sd median trimmed     mad min  max
## world.Birthrate    1 224 2042.80 1228.92 1799.5 1982.48 1177.93  10 5073
## world.Deathrate    2 223  818.96  506.71  713.0  772.21  361.75  22 2974
##                 range skew kurtosis    se
## world.Birthrate  5063 0.49    -0.64 82.11
## world.Deathrate  2952 1.18     2.19 33.93
  • vars = die Variablen werden durchnummeriert
  • n = Anzahl gültiger Fälle
  • mean = Mittelwert
  • sd = Standardabweichung
  • median = Median
  • trimmed = getrimmter Mittelwert
  • mad = Median Absolut Deviation
  • min = Minimum
  • max = Maximum
  • range = Wertebereich
  • skew = Schiefe
  • kurtosis = Exzess
  • se = Standardfehler des Mittelwerts

5.5 summary function

Einen schnellen Überblick über die Verteilung von Variablen kann man mit der summary Funktion bekommen.

summary(world$Birthrate)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##      10    1077    1800    2043    2934    5073       3

5.6 Group comparisons

Bisher haben wir nur Kennzahlen für die gesamte Stichprobe angeschaut. Man kann aber auch Kennzahlen für Untergruppen anfordern.

5.6.1 describeBy function

Mit der describeBy Funktion werden die gleichen Kennwerte wie mit der describe Funktion ausgegeben, nur getrennt für Untergruppen (hier die Kennwerte für die Geburtenrate aufgeteilt nach Regionen).

describeBy(world$Birthrate, world$Region)
## 
##  Descriptive statistics by group 
## group: ASIA (EX. NEAR EAST)
##    vars  n    mean      sd median trimmed     mad min  max range skew
## X1    1 28 1688.29 1055.07   1620 1675.62 1080.82  10 3549  3539 0.14
##    kurtosis     se
## X1    -1.09 199.39
## -------------------------------------------------------- 
## group: BALTICS
##    vars n   mean    sd median trimmed   mad min  max range skew kurtosis
## X1    1 3 934.33 65.12    924  934.33 72.65 875 1004   129 0.15    -2.33
##      se
## X1 37.6
## -------------------------------------------------------- 
## group: C.W. OF IND. STATES
##    vars  n    mean      sd median trimmed     mad min  max range skew
## X1    1 12 1364.83 1079.18 1078.5  1309.7 1313.58  16 3265  3249  0.4
##    kurtosis     se
## X1    -1.35 311.53
## -------------------------------------------------------- 
## group: EASTERN EUROPE
##    vars  n   mean     sd median trimmed   mad min  max range  skew
## X1    1 11 949.55 333.84    965  980.78 99.33 107 1511  1404 -0.99
##    kurtosis     se
## X1     1.45 100.66
## -------------------------------------------------------- 
## group: LATIN AMER. & CARIB
##    vars  n    mean     sd median trimmed    mad min  max range  skew
## X1    1 45 1777.51 671.75   1759 1780.86 507.05 129 3644  3515 -0.02
##    kurtosis     se
## X1        1 100.14
## -------------------------------------------------------- 
## group: NEAR EAST
##    vars  n    mean      sd median trimmed     mad min  max range  skew
## X1    1 16 2403.06 1084.56 2159.5 2427.29 1031.15 178 4289  4111 -0.04
##    kurtosis     se
## X1     -0.8 271.14
## -------------------------------------------------------- 
## group: NORTHERN AFRICA
##    vars n   mean     sd median trimmed    mad  min  max range  skew
## X1    1 5 2081.4 446.15   2198  2081.4 668.65 1552 2649  1097 -0.01
##    kurtosis     se
## X1    -1.98 199.53
## -------------------------------------------------------- 
## group: NORTHERN AMERICA
##    vars n   mean     sd median trimmed    mad min  max range  skew
## X1    1 5 1110.2 586.79   1352  1110.2 357.31 114 1593  1479 -0.83
##    kurtosis     se
## X1    -1.23 262.42
## -------------------------------------------------------- 
## group: OCEANIA
##    vars  n    mean    sd median trimmed    mad min  max range  skew
## X1    1 20 2106.85 751.2   2232 2158.25 630.11  21 3305  3284 -0.75
##    kurtosis     se
## X1     0.77 167.97
## -------------------------------------------------------- 
## group: SUB-SAHARAN AFRICA
##    vars  n    mean      sd median trimmed    mad min  max range  skew
## X1    1 51 3459.33 1192.93   3771 3641.93 720.54  41 5073  5032 -1.36
##    kurtosis     se
## X1     1.34 167.04
## -------------------------------------------------------- 
## group: WESTERN EUROPE
##    vars  n   mean     sd median trimmed    mad min  max range  skew
## X1    1 28 990.43 295.26 1024.5 1028.33 143.81  93 1445  1352 -1.63
##    kurtosis   se
## X1     3.34 55.8

Um die Ergebnisse in Tabellenform ausgegeben zu bekommen, muss der Befehl um das Zusatzargument mat = TRUE ergänzt werden.

describeBy(world$Birthrate, world$Region, mat = TRUE)
##      item               group1 vars  n      mean         sd median
## X11     1 ASIA (EX. NEAR EAST)    1 28 1688.2857 1055.07461 1620.0
## X12     2              BALTICS    1  3  934.3333   65.11784  924.0
## X13     3  C.W. OF IND. STATES    1 12 1364.8333 1079.17905 1078.5
## X14     4       EASTERN EUROPE    1 11  949.5455  333.83959  965.0
## X15     5  LATIN AMER. & CARIB    1 45 1777.5111  671.74791 1759.0
## X16     6            NEAR EAST    1 16 2403.0625 1084.55788 2159.5
## X17     7      NORTHERN AFRICA    1  5 2081.4000  446.15334 2198.0
## X18     8     NORTHERN AMERICA    1  5 1110.2000  586.79400 1352.0
## X19     9              OCEANIA    1 20 2106.8500  751.20018 2232.0
## X110   10   SUB-SAHARAN AFRICA    1 51 3459.3333 1192.93122 3771.0
## X111   11       WESTERN EUROPE    1 28  990.4286  295.26102 1024.5
##        trimmed       mad  min  max range         skew   kurtosis        se
## X11  1675.6250 1080.8154   10 3549  3539  0.140920566 -1.0854801 199.39036
## X12   934.3333   72.6474  875 1004   129  0.154690706 -2.3333333  37.59580
## X13  1309.7000 1313.5836   16 3265  3249  0.403874292 -1.3474477 311.53216
## X14   980.7778   99.3342  107 1511  1404 -0.987271046  1.4469632 100.65642
## X15  1780.8649  507.0492  129 3644  3515 -0.023822700  0.9988176 100.13827
## X16  2427.2857 1031.1483  178 4289  4111 -0.036615882 -0.7990198 271.13947
## X17  2081.4000  668.6526 1552 2649  1097 -0.008797767 -1.9763793 199.52584
## X18  1110.2000  357.3066  114 1593  1479 -0.825503706 -1.2268100 262.42226
## X19  2158.2500  630.1050   21 3305  3284 -0.749970784  0.7747050 167.97347
## X110 3641.9268  720.5436   41 5073  5032 -1.364434519  1.3429081 167.04378
## X111 1028.3333  143.8122   93 1445  1352 -1.629941719  3.3447423  55.79909

5.6.2 tapply function

Benötigen wir Gruppenvergleiche für andere, als in der describeBy Funktion vorhandenen Kennwerte, so können wir die tapply Funktion verwenden. Das erste Argument steht immer für die abhängige Variable, d.h. für die Variable, für die die Kennwerte berechnet werden sollen. Das zweite Argument steht für die unabhängige Variable, d.h. für die Variable, für die die Gruppen definiert werden sollen. Als drittes Argument wird die gewünschte Funktion aufgeführt (hier die Kennwerte der summary Funktion für die Geburtenrate aufgeteilt nach Regionen).

tapply(world$Birthrate, world$Region, summary)
## $`ASIA (EX. NEAR EAST)`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    10.0   912.5  1620.0  1688.3  2336.8  3549.0 
## 
## $BALTICS
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   875.0   899.5   924.0   934.3   964.0  1004.0 
## 
## $`C.W. OF IND. STATES`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    16.0   718.5  1078.5  1364.8  2214.5  3265.0 
## 
## $`EASTERN EUROPE`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   107.0   900.0   965.0   949.5  1025.0  1511.0       1 
## 
## $`LATIN AMER. & CARIB`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     129    1417    1759    1778    2082    3644 
## 
## $`NEAR EAST`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     178    1763    2160    2403    3175    4289 
## 
## $`NORTHERN AFRICA`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    1552    1714    2198    2081    2294    2649       1 
## 
## $`NORTHERN AMERICA`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     114    1078    1352    1110    1414    1593 
## 
## $OCEANIA
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##      21    1769    2232    2107    2491    3305       1 
## 
## $`SUB-SAHARAN AFRICA`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      41    3165    3771    3459    4199    5073 
## 
## $`WESTERN EUROPE`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    93.0   909.5  1024.5   990.4  1107.0  1445.0

6 Conclusion

In diesem Post wurden verschiedene Möglichkeiten vorgestellt, einzelne Variablen hinsichtlich ihrer Lage und Verteilung zu beschreiben. Ergänzend zu diesem Beitrag aus der univariaten Statistik, soll in einem Folgebeitrag die bivariate Statistik (Zusammenhänge zwischen zwei Variablen) näher erläutert werden.

Source

Luhmann, M. (2011). R für Einsteiger.