8 Zusammenhänge zwischen kategorialen Variablen

📢 Zielsetzung dieser Einheit

In dieser Einheit wollen wir uns den Zusammenhängen zwischen kategorialen (genauer gesagt: nominalen) Variablen widmen. Wir nutzen dazu das Beispiel der vorigen Einheit @ref(#haeufigkeit-kategorial) zur Wahrnehmung der COVID-19 Pandemie. Anhand dieses Beispiels werden wir

  • prinzipielle Möglichkeiten zur Messung von Zusammenhängen zwischen zwei nominalen Variablen besprechen;
  • uns ansehen, wie wir das Vorhandensein von Zusammenhängen mittels Chi-Quadrat-Test auf Unabhängigkeit und das Messen der Stärke solcher Zusammenhänge mittels Cramers V praktisch umsetzen können.

tl;dr: Her mit dem Code!


8.1 Die Ausgangslage

Wir nutzen erneut die vom Presse- und Informationsamt der Deutschen Bundesregierung erstellte Bevölkerungsbefragung zum Thema “Corona-Krise” (vgl. Kapitel 7.1). Konkret interessieren wir uns für den Zusammenhang zwischen folgenden zwei Variablen:

  • Frage Nr. 5: Die beurteilte Angemessenheit der Maßnahmen zur Pandemiebekämpfung
    Wie schätzen Sie die aktuellen politischen Maßnahmen ein, um das Corona-Virus einzudämmen: Sind diese getroffenen Maßnahmen Ihrer Meinung nach angemessen, gehen sie zu weit oder gehen sie nicht weit genug?

  • Frage s8: Die Politische Orientierung
    Diese Frage zielt auf das Wahlverhalten der befragten Person der letzten Bundestagswahl ab.

Als vorbereitenden Schritt laden wir somit die zunächst die Befragungsergebnisse und führen die in Kapitel 7.3 beschriebenen Manipulationen (laufende “ID” vergeben & Skalenniveaus setzen) aus:

library(tidyverse)

Trendfragen <- read.csv2("data/Trendfragen_Corona_45-20/ZA7677_v1-0-0.csv", encoding = "UTF-8") %>%
  as_tibble(.) %>%
  mutate(id = row_number())
TrendRedux <- Trendfragen %>%
  select(id, bcor5, s8) %>%
  mutate(bcor5 = as.factor(bcor5), s8 = as.factor(s8)) %>%
  filter(s8 != "-1") %>%
  mutate(s8 = droplevels(s8))  

Nach der tabellarischen und graphischen Auseinandersetzung mit der Beziehung zwischen der politischen Ausrichtung (bcor 5) und der Beurteilung der Maßnahmen zur Pandemiebekämpfung (s8) (vgl. Kapitel 7.5) können wir sagen:

Ja, vermutlich stehen diese beiden Merkmale zueinander in Beziehung. Am deutlichsten sieht man dies wohl bei den Befragten die sich politisch zur AfD bekennen und fast zur Hälfte die gesetzten Maßnahmen als zu weitreichend interpretieren. Wie man das am besten sehen kann? Am einfachsten mit einer Kontingenztabelle:

n.table <- table(TrendRedux$bcor5, TrendRedux$s8)
prop.table(n.table, 2) %>%
  round(., 2) %>%
  knitr::kable()
AfD CDU/ CSU FDP Grüne/ Bündnis 90 Linkspartei Rest Sonstige SPD
angemessen 0.27 0.69 0.62 0.70 0.68 0.48 0.54 0.67
gehen nicht weit genug 0.10 0.16 0.12 0.17 0.11 0.26 0.14 0.16
gehen zu weit 0.52 0.15 0.23 0.11 0.18 0.23 0.29 0.16
k.A. 0.02 0.00 0.00 0.00 0.00 0.00 0.00 0.00
weiß nicht 0.08 0.01 0.02 0.00 0.03 0.02 0.03 0.00

8.2 Zusammenhänge zwischen zwei kategorialen Variablen messen - die Theorie

Am Ende der letzten Einheit (vgl. Kapitel 7.5) konnten wir bereits ein qualitatives Verständnis der Beziehung zwischen zwei kategorialen Variablen erlangen. Wie wir systematisch Beziehungen zwischen zwei kategorialen Variablen numerisch und graphisch erkunden können, wollen wir uns nun etwas genauer ansehen:


Wie können wir nun also auf einfache Art und Weise überprüfen, ob zwischen der politischen Orientierung und der eingeschätzten Angemessenheit der Maßnahmen zur Pandemiebekämpfung ein (wie auch immer gearteter) Zusammenhang besteht?

Werfen wir dazu einen Blick auf unseren Schummler:

Auswerteverfahren für unabhängige Stichproben (Quelle: Eigene Überarbeitung 2016 von [Hager, 2011](https://www.univie.ac.at/soziologie-statistik/lingu/master/Signifikanztests.pdf))

Abbildung 8.1: Auswerteverfahren für unabhängige Stichproben (Quelle: Eigene Überarbeitung 2016 von Hager, 2011)

Da wir ja den Zusammenhang zwischen einer nominalen und einer ordinalen Variable erkunden wollen, landen wir in der linken unteren Ecke unseres Schummlers: Wir können damit

  • das Vorhandensein eines Zusammenhangs zwischen unseren Variablen mittels eines Chi-Quadrat-Test auf Unabhängigkeit überprüfen;

  • und sollte ein solcher Zusammenhang gegeben sein:

    • diesen anhand der Pearson Residuen qualitativ besser verstehen;

    • dessen Stärke mittels Cramers V messen.

8.3 Überprüfung des Zusammenhangs zwischen politischer Orientierung und Angemessenheit des Pandemiemanagements

Um diesen vermuteten Zusammenhang eindeutig zu belegen, greifen wir also auf den Chi-Quadrat-Test nach Pearson zurück.

Um in R einen Chi-Quadrat-Test durchzuführen, schreiben wir:

chi <- chisq.test(n.table)
## Warning in stats::chisq.test(x, y, ...): Chi-squared approximation may be
## incorrect
chi
## 
##  Pearson's Chi-squared test
## 
## data:  n.table
## X-squared = 122.24, df = 28, p-value = 9.629e-14

Warum werden wir darauf hingewiesen, dass der Test ev. “incorrect” sei? Weil einige der Zellen unserer Kontingenztabelle mit weniger als 5 Beobachtungen besetzt sind:

n.table %>%
  knitr::kable()
AfD CDU/ CSU FDP Grüne/ Bündnis 90 Linkspartei Rest Sonstige SPD
angemessen 13 301 40 165 49 136 19 185
gehen nicht weit genug 5 70 8 41 8 73 5 44
gehen zu weit 25 64 15 27 13 66 10 45
k.A. 1 0 0 1 0 1 0 1
weiß nicht 4 3 1 1 2 6 1 1

Da wir diese Annahme nicht einhalten können, sollten wir:

  • Die Anzahl der Beobachtungseinheiten erhöhen, um so den geforderten Mindestbesatz von 5 Beobachtungen je Zelle zu überspringen. In unserem Fall ist das aber nicht möglich.

  • Versuchen, durch das Zusammenlegen von Merkmalsausprägungen größere Klassen (mit mehr als 5 Beobachtungen je Merkmalskombination) zu erzeugen. Diese Strategie führt zwangsweise zu inhaltlichen Verschiebungen, welche manchmal nicht erwünscht sind. In unserem Fall würde jedoch auch eine Zusammenlegung der Ausprägungen “k.A.” und “weiß nicht” der Variable bcor5 nicht den gewünschten absoluten Zellenbesatz sicherstellen.

Für genau diese Fälle entwickelte dankenswerterweise Ronald Fisher den sgn. exakten Test nach Fisher (aka. Fisher-Yates-Test):

fish <- fisher.test(TrendRedux$s8, TrendRedux$bcor5, simulate.p.value=TRUE)
fish
## 
##  Fisher's Exact Test for Count Data with simulated p-value (based on
##  2000 replicates)
## 
## data:  TrendRedux$s8 and TrendRedux$bcor5
## p-value = 0.0004998
## alternative hypothesis: two.sided

Was sagt uns nun dieser Test?

Der durch den Test ermittelte p-Value liegt deutlich unter der in den Sozialwissenschaften gerne genutzten Irrtumswahrscheinlichkeit von 5% (p = 0.05). Damit wissen wir:

In unserem Fall mit können wir zu 99,95% (1 - 0,0004998) sicher sein, dass die Nullhypothese “Zwischen den beiden Variablen besteht kein signifikanter Zusammenhang” verworfen werden kann. Mit der Annahme, dass es zwischen den beiden Variablen bcor5 und s8 einen Zusammenhang gibt, gehen wir also ein sehr geringe - deutlich unterhalb der von uns mit maximal 5% vorgegebenen - Irrtumswahrscheinlichkeit ein.

Wir wissen nun, dass es zwischen der politischen Ausrichtung (s8) und der Beurteilung der Maßnahmen zur Pandemiebekämpfung (bcor5) einen signifikanten Zusammenhang gibt. Wie genau dieser Zusammenhang aussieht, können wir

  • anhand einer Gegenüberstellung der Pearson Residuen quantitativ beschreiben und

  • anhand Cramers V - ähnlich dem Pearsonschen Korrelationskoeffizienten r - in ein Wertspektrum zwischen 0 (= kein Zusammenhang) und 1 (starken Zusammenhang) einordnen.

8.4 Charakterisierung des Zusammenhang mittels der Pearson Residuen

Zunächst kurz zu den Pearson Residuen selbst, welche wir mittels folgender Formel ermitteln können:

\[ r_{ij}=\dfrac{O_{ij}-E_{ij}}{\sqrt{E_{ij}}} \]

\[\begin{aligned} & r_{ij}~ ...~\text{Pearson Residuum}\\ & O_{ij}~...~\text{beobachteter Wert}\\ & E_{ij}~...~\text{erwarteter Wert}\\ \end{aligned}\]

Die Summe aller Pearson Residuen bringt uns schließlich zu 𝜒2:

\[ X^2=\sum_j\sum_i r^2_{ij} \]

Stellen wir nun die Pearson Residuen einander gegenüber:

round(chi$residuals, 2)
##                         
##                            AfD CDU/ CSU   FDP Grüne/ Bündnis 90 Linkspartei
##   angemessen             -3.11     1.61 -0.01              1.47        0.58
##   gehen nicht weit genug -1.18    -0.77 -0.96             -0.03       -1.30
##   gehen zu weit           5.48    -1.79  0.97             -2.43       -0.04
##   k.A.                    2.38    -1.10 -0.42              0.44       -0.45
##   weiß nicht              4.25    -1.14  0.18             -1.18        1.09
##                         
##                           Rest Sonstige   SPD
##   angemessen             -3.05    -0.62  0.93
##   gehen nicht weit genug  3.36    -0.46 -0.63
##   gehen zu weit           2.01     1.42 -0.77
##   k.A.                    0.25    -0.31  0.27
##   weiß nicht              1.20     0.80 -1.38

Stark positive Werte (also eine Überrepräsentanz) zeigen eine positive Verbindung der beiden Merkmalsausprägungen an. Umgekehrt verweisen negative Residuen auf eine negative Verbindung - also Unterrepräsentanz - der jeweiligen Merkmalskombination.

In unserem Fall sehen wir, dass bei AfD-affinen Befragten die Maßnahmenbeurteilung “angemessen” deutlich unter- und die Beurteilungen “gehen zu weit” und “weiß nicht” überrepräsentiert sind. Auch zeigt sich, dass bei CDU/CSO und grün-affinen Befragten die Maßnahmenbeurteilung “gehen zu weit” klar unterrepräsentiert ist.

Diese Verteilung der Residuen über die betrachteten Merkmalskombinationen lässt sich mittels des corrplot-Packages auch graphisch darstellen:

library(corrplot)
corrplot(chi$residuals, is.corr = FALSE,
         outline = TRUE, tl.col = "black",
         col = RColorBrewer::brewer.pal(11, "RdBu"))

Und für alle, die auch noch wissen möchten, welche dieser Merkmalskombinationen am stärksten zum Chi-Quadrat-Testwert - und damit in unserem Fall zur Ablehnung der Nullhypothese - beigetragen haben: Einfach die Pearson Residuen quadrieren und auf den ermittelten Chi-Quadrat-Testwert beziehen. Somit kann der relative Beitrag einer Merkmalskombination an diesem Testwert angegeben werden:

round(prop.table(chi$residuals^2)*100, 2)
##                         
##                            AfD CDU/ CSU   FDP Grüne/ Bündnis 90 Linkspartei
##   angemessen              7.92     2.13  0.00              1.77        0.28
##   gehen nicht weit genug  1.13     0.48  0.75              0.00        1.38
##   gehen zu weit          24.56     2.63  0.76              4.84        0.00
##   k.A.                    4.65     0.99  0.14              0.16        0.16
##   weiß nicht             14.78     1.07  0.03              1.15        0.97
##                         
##                           Rest Sonstige   SPD
##   angemessen              7.63     0.32  0.70
##   gehen nicht weit genug  9.22     0.17  0.32
##   gehen zu weit           3.32     1.66  0.48
##   k.A.                    0.05     0.08  0.06
##   weiß nicht              1.18     0.52  1.55

Summieren wir diese Beiträge zum Chi-Quadrat-Testwert nochmals über die politische Orientierung …

round(prop.table(chi$residuals^2)*100, 2) %>%
  as.data.frame() %>%
  group_by(Var2) %>%
  summarise(perc = sum(Freq)) %>%
  arrange(-perc)
## # A tibble: 8 x 2
##   Var2               perc
##   <fct>             <dbl>
## 1 AfD               53.0 
## 2 Rest              21.4 
## 3 Grüne/ Bündnis 90  7.92
## 4 CDU/ CSU           7.3 
## 5 SPD                3.11
## 6 Linkspartei        2.79
## 7 Sonstige           2.75
## 8 FDP                1.68

… sehen wir, dass dieser Testwert zu mehr als der Hälfte aus dem Antwortverhalten AfD-orientierter BefragungsteilnehmerInnen erklärt werden kann.

Auch graphisch lässt sich diese Dominanz klar ablesen:

contrib <- (chi$residuals^2 / chi$statistic) * 100
corrplot(contrib, is.corr = FALSE,
         outline = TRUE, tl.col = "black",
         col = RColorBrewer::brewer.pal(9, "Reds"))

8.5 Beurteilung der Stärke des Zusammenhangs mit Cramers V

Abschließend wollen wir noch die Stärke des Zusammenhangs zwischen der politischen Orientierung (s8) und der Beurteilung der Maßnahmen zur Pandemiebekämpfung (bcor5) mittels des Kennwertes Cramers V messen. Hierzu können wir auf das lsr-Package zurückgreifen:

library(lsr)
lsr::cramersV(TrendRedux$s8, TrendRedux$bcor5)
## Warning in stats::chisq.test(...): Chi-squared approximation may be incorrect
## [1] 0.1451753

Eine kleine Interpretationshilfe (vgl. Quatember 2007: 66) zu Cramers V ist hier angebracht:

Wertbereich Cramers V Interpretation
0 bis 0,2 schwacher Zusammenhang
0,2 bis 0,6 mittlerer Zusammenhang
über 0,6 starker Zusammenhang

Unser Cramers V von ca. 0,15 spricht somit für einen signifikanten, aber schwachen Zusammenhang zwischen der politischen Orientierung (s8) und der Einschätzung der der Maßnahmen zur Pandemiebekämpfung (bkor5).


🏆 Nun wissen wir, …

  • wie wir Zusammenhänge zwischen kategorialen Variablen numerisch und graphisch erkunden und auf deren Signifikanz testen können;
  • Wie wir diese Zusammenhänge anhand der Pearson-Residuen inhaltlich erschließen können;
  • wie wir die Stärke solcher Zusammenhänge mittels Cramers V messen und interpretieren können.

Und wie sieht das bei metrischen und ordinalen Variablen aus?


References

Quatember, Andreas. 2007. Statistik ohne Angst vor Formeln . Ein Lehrbuch für Wirtschafts- und Sozialwissenschaftler. 2. Aufl. München: Pearson Studium.