Eine Kreuztabelle gibt Auskunft über eine bivariate Verteilung, also über die Verteilung auf zwei Variablen. Um eine Kreuztabelle zu bekommen, müssen wir nur eine zweite Variable in der table()
-Funktion hinzufügen: Wir lassen uns hier eine Kreuztabelle zwischen der Zufriedenheit mit der Demokratie und dem Geschlecht ausgeben:
table(
pss$stfdem,
pss$gndr
)
##
## female male
## 0 117 109
## 1 133 135
## 2 211 225
## 3 287 331
## 4 377 377
## 5 466 384
## 6 311 320
## 7 251 271
## 8 164 174
## 9 82 97
## 10 41 42
Wie bei allem in R, können wir diese Tabelle auch als Objekt speichern:
mytable <- table(
pss$stfdem,
pss$gndr
)
Um anstatt der Häufigkeiten Prozente ausgeben zu lassen, wird die Funktion prop.table()
genutzt. Diese kann die Spalten-, Zeilen- oder die Gesamtprozentuierung ausgeben. Wir können entweder ein Tabellenobjekt aufrufen, oder in der Funktion die Funktion table()
nutzen. Hier rufen wir im letzten Argument mit dem Wert \(1\)die Zeilenprozentuierung auf.
# Zeilenprozentuierung
prop.table(
mytable,
1
)
##
## female male
## 0 0.5176991 0.4823009
## 1 0.4962687 0.5037313
## 2 0.4839450 0.5160550
## 3 0.4644013 0.5355987
## 4 0.5000000 0.5000000
## 5 0.5482353 0.4517647
## 6 0.4928685 0.5071315
## 7 0.4808429 0.5191571
## 8 0.4852071 0.5147929
## 9 0.4581006 0.5418994
## 10 0.4939759 0.5060241
# alternativer Weg mit table()-Funktion
prop.table(
table(
pss$stfdem,
pss$gndr
),
1
)
Die Spaltenprozentuierung kann ausgegeben werden, indem das zweite Argument auf den Wert \(2\) geändert wird:
prop.table(
mytable,
2
)
##
## female male
## 0 0.04795082 0.04421907
## 1 0.05450820 0.05476673
## 2 0.08647541 0.09127789
## 3 0.11762295 0.13427992
## 4 0.15450820 0.15294118
## 5 0.19098361 0.15578093
## 6 0.12745902 0.12981744
## 7 0.10286885 0.10993915
## 8 0.06721311 0.07058824
## 9 0.03360656 0.03935091
## 10 0.01680328 0.01703854
Wenn kein zweites Argument geliefert wird, wird automatisch die Gesamtprozentuierung ausgegeben:
prop.table(mytable)
##
## female male
## 0 0.023853211 0.022222222
## 1 0.027115189 0.027522936
## 2 0.043017329 0.045871560
## 3 0.058511723 0.067482161
## 4 0.076860347 0.076860347
## 5 0.095005097 0.078287462
## 6 0.063404689 0.065239551
## 7 0.051172273 0.055249745
## 8 0.033435270 0.035474006
## 9 0.016717635 0.019775739
## 10 0.008358818 0.008562691
Die Randhäufigkeiten können mit der Funktion margin.table()
ausgegeben werden. Auch hier gilt wieder, dass der Wert \(1\) im zweiten Argument für Zeilenrandhäufikgeiten steht und der Wert \(2\) die Spaltenrandhäufigkeiten ausgibt:
# Zeilenrandhäufigkeiten
margin.table(
mytable,
1
)
##
## 0 1 2 3 4 5 6 7 8 9 10
## 226 268 436 618 754 850 631 522 338 179 83
# Spaltenrandhäufigkeiten
margin.table(
mytable,
2
)
##
## female male
## 2440 2465
Es gibt verschiedene libraries, mit denen sich relative Häufigkeiten schöner darstellen lassen. Eins davon ist die library gmodels
:
if(!require("gmodels")) install.packages("gmodels")
library("gmodels")
Aus der library nutzen wir die Funktion CrossTable()
. Diese gibt alle oben aufgeführten Informationen auf einmal aus:
CrossTable(
pss$stfdem,
pss$gndr
)
##
##
## Cell Contents
## |-------------------------|
## | N |
## | Chi-square contribution |
## | N / Row Total |
## | N / Col Total |
## | N / Table Total |
## |-------------------------|
##
##
## Total Observations in Table: 4905
##
##
## | pss$gndr
## pss$stfdem | female | male | Row Total |
## -------------|-----------|-----------|-----------|
## 0 | 117 | 109 | 226 |
## | 0.186 | 0.184 | |
## | 0.518 | 0.482 | 0.046 |
## | 0.048 | 0.044 | |
## | 0.024 | 0.022 | |
## -------------|-----------|-----------|-----------|
## 1 | 133 | 135 | 268 |
## | 0.001 | 0.001 | |
## | 0.496 | 0.504 | 0.055 |
## | 0.055 | 0.055 | |
## | 0.027 | 0.028 | |
## -------------|-----------|-----------|-----------|
## 2 | 211 | 225 | 436 |
## | 0.160 | 0.158 | |
## | 0.484 | 0.516 | 0.089 |
## | 0.086 | 0.091 | |
## | 0.043 | 0.046 | |
## -------------|-----------|-----------|-----------|
## 3 | 287 | 331 | 618 |
## | 1.357 | 1.343 | |
## | 0.464 | 0.536 | 0.126 |
## | 0.118 | 0.134 | |
## | 0.059 | 0.067 | |
## -------------|-----------|-----------|-----------|
## 4 | 377 | 377 | 754 |
## | 0.010 | 0.010 | |
## | 0.500 | 0.500 | 0.154 |
## | 0.155 | 0.153 | |
## | 0.077 | 0.077 | |
## -------------|-----------|-----------|-----------|
## 5 | 466 | 384 | 850 |
## | 4.407 | 4.362 | |
## | 0.548 | 0.452 | 0.173 |
## | 0.191 | 0.156 | |
## | 0.095 | 0.078 | |
## -------------|-----------|-----------|-----------|
## 6 | 311 | 320 | 631 |
## | 0.027 | 0.026 | |
## | 0.493 | 0.507 | 0.129 |
## | 0.127 | 0.130 | |
## | 0.063 | 0.065 | |
## -------------|-----------|-----------|-----------|
## 7 | 251 | 271 | 522 |
## | 0.289 | 0.287 | |
## | 0.481 | 0.519 | 0.106 |
## | 0.103 | 0.110 | |
## | 0.051 | 0.055 | |
## -------------|-----------|-----------|-----------|
## 8 | 164 | 174 | 338 |
## | 0.102 | 0.101 | |
## | 0.485 | 0.515 | 0.069 |
## | 0.067 | 0.071 | |
## | 0.033 | 0.035 | |
## -------------|-----------|-----------|-----------|
## 9 | 82 | 97 | 179 |
## | 0.557 | 0.552 | |
## | 0.458 | 0.542 | 0.036 |
## | 0.034 | 0.039 | |
## | 0.017 | 0.020 | |
## -------------|-----------|-----------|-----------|
## 10 | 41 | 42 | 83 |
## | 0.002 | 0.002 | |
## | 0.494 | 0.506 | 0.017 |
## | 0.017 | 0.017 | |
## | 0.008 | 0.009 | |
## -------------|-----------|-----------|-----------|
## Column Total | 2440 | 2465 | 4905 |
## | 0.497 | 0.503 | |
## -------------|-----------|-----------|-----------|
##
##