Chi-Quadrat-Test in R rechnen

von | Sep 23, 2020 | Chi-Quadrat, R

Ziel des Chi-Quadrat-Test in R

Der Chi-Quadrat-Test prüft, ob es zwischen erwarteten und beobachteten Häufigkeiten statistisch signifikante Unterschiede gibt. Hierzu verwendet dieser Test die quadrierten Abweichungen der tatsächlichen von den erwarteten Häufigkeiten und teilt sie durch die erwarteten Häufigkeiten. Er wird auch als Korrelationsersatz verwendet und prüft zwei Variablen auf statistische Unabhängigkeit. Als Grundlage hierfür dienen Kreuztabellen bzw. Kontigenztabellen.

Voraussetzungen des Chi-Quadrat-Test in R

  • Zwei Variablen mit ordinaler oder nominaler Skalierung
  • 2 oder mehr Ausprägungen dieser Variablen
Dieses Video ansehen auf YouTube.

Fragen können unter dem verlinkten Video gerne auf YouTube gestellt werden. Für eine Berechnung in SPSS, schaut euch diesen Artikel an. Für Excel werdet ihr hier fündig.

 

Durchführung des Chi-Quadrat-Tests in R

Beobachtete Häufigkeiten

Nach dem Einlesen der Daten startet man typischerweise mit dem Erstellen einer Kreuztabelle, um sich anzuschauen, wie oft die verschiedenen Ausprägungskombinationen vorkommen. Im Beispiel möchte ich die Schulnote im Sportunterricht und die Motivation auf statistische Unabhängigkeit prüfen.

  • die eine Variable kommt mit ihren Ausprägungen in die Zeilen (im Beispiel Geschlecht)
  • die andere Variable kommt mit ihren Ausprägungen in die Spalten (im Beispiel Sportnote)

 

Hierzu verwendet man den Befehl xtabs. Mit ihm wird die Kreuztabelle erstellt. Da ich die Daten nicht attached habe und im Dataframe data_xls belasse, verwende ich „data_xls$“ zur Variablenreferenzierung. Der Code hierfür sieht wie folgt aus:

kreuztabelle <- xtabs (~ data_xls$Geschlecht + data_xls$Sportnote)

 

Hiermit wird in einem Dataframe namens „kreuztabelle“ die Kreuztabelle aus Geschlecht und Sportnote erstellt. Lässt man sich diese ausgeben, sieht das in meinem Beispiel wie folgt aus: 

                      data_xls$Sportnote

data_xls$Geschlecht     1 2 3 4 5 6

                      0 2 7 4 7 4 2

                      1 4 7 7 4 3 0

Die Häufigkeiten habe ich fett markiert. Die Kreuztabelle ist wie folgt zu lesen: Für das Geschlecht 1 (weiblich) kommt die Note 5 dreimal vor. Das Geschlecht 0 (männlich) hat zweimal die Note 6.  

 

Erwartete Häufigkeiten

Die erwarteten Häufigkeiten bei statistischer Unabhängigkeit (auch: „Nichtkorrelation“) kann man sich außerdem ausgeben lassen. Allerdings muss man hier noch etwas manuell rechnen, was in R aber kein Problem darstellt. Hierzu werden zunächst mit der sum()-Funktion alle Fälle aufsummiert. In meinem Fall sind es 51.

Danach definiere ich mir einen neuen Dataframe mit dem Namen „erwartete_häufigkeiten“ und bilde mit der Verknüpfung der outer()-Funktion und rowSums() sowie ColSums() die Zeilen bzw. Spaltensumme. Das ist wichtig, weil für die erwarteten Häufigkeiten die jeweiligen Zeilen- und Spaltensummen addiert und durch die Gesamtzahl der Beobachtungen geteilt werden. Im Detail muss diese Rechnung aber nicht nachvollzogen werden. Der Code hierfür lautet:

n <- sum(kreuztabelle)

erwartete_häufigkeiten <- outer (rowSums(kreuztabelle), colSums(kreuztabelle)) / n

 

Lässt man sich die Tabelle mit den erwarteten Häufigkeiten ausgeben, erhält man folgenden Output:

 

          1        2        3        4        5         6

0  3.058824 7.137255 5.607843 5.607843 3.568627 1.0196078

1  2.941176 6.862745 5.392157 5.392157 3.431373 0.9803922

 

Die Lesart ist analog zu den beobachteten Häufigkeiten. Für das Geschlecht 1 ist die erwartete Häufigkeit bei der Note 5: 3,43. Zur Erinnerung: sie wurde 3 mal beobachtet. Die Note 6 beim Geschlecht 0 wurde 1,02-mal erwartet. Oben wurde sie zweimal beobachtet. So kann man jetzt zellenweise vorgehen und sich einen Eindruck verschaffen, wo erwartete und beobachtete Häufigkeiten mehr oder weniger stark voneinander abweichen. Eine Faustregel, was eine große Abweichung gibt, existiert nicht. Dies ist immer in Relation zum Stichprobenumfang zu sehen.

 

Chi-Quadrat-Test

Den Chi-Quadrat-Test kann man prinzipiell auch ohne die erwarteten und beobachteten Häufigkeiten berechnen. Allerdings werden wir gleich noch sehen, dass zumindest die beobachteten Häufigkeiten sehr sinnvoll sein können. Der Chi-Quadrat-Test wird mit der Funktion chisq.test() berechnet. Hierfür sind die beiden auf statistische Unabhängigkeit zu testenden Variablen einfach per Komma getrennt als Argumente hinzuzufügen.  

chisq.test(data_xls$Geschlecht, data_xls$Sportnote)

 

Führt man den Chi-Quadrat-Test für mein Beispiel durch, erhält man folgenden Output:

Pearson’s Chi-squared test

data: data_xls$Geschlecht and data_xls$Sportnote

X-squared = 4.428, df = 5, p-value = 0.4896

 

Grundlegendes Interesse besteht am p-Wert. Der beträgt hier 0,4896 und ist nicht in der Lage die Nullhypothese zu verwerfen. Zur Erinnerung die Nullhypothese lautet: zwischen den Variablen besteht statistische Unabhängigkeit. Oder salopp formuliert: sie korrelieren nicht statistisch signifikant miteinander.  

 

Exakter Fisher-Test

Wer sich bereits mit dem Chi-Quadrat-Test auseinandergesetzt hat, wird vermutlich schon mal etwas vom Fisher-Test oder dem exakten Fisher-Test gehört haben. Der wird immer dann angewandt, wenn wenigstens eine der beobachteten Zellhäufigkeiten unter 5 liegt. Warum? Die approximative Berechnung des p-Wertes über die Chi-Quadrat-Verteilung ist verzerrt. Da ich in meinem Beispiel mehrfach Zellhäufigkeiten < 5 habe, ist der Fisher-Test zu rechnen – daher auch die Erstellung der Kreuztabelle mit den beobachteten Häufigkeiten. Demzufolge wird mit fisher.test() dieser Test berechnet:

fisher.test(data_xls$Geschlecht, data_xls$Sportnote)

 

Für den Fisher-Test erhält man folgenden Output:

Fisher’s Exact Test for Count Data

data: data_xls$Geschlecht and data_xls$Sportnote

p-value = 0.5736

alternative hypothesis: two.sided

 

Hier kann man recht gut erkennen, das der p-Wert mit 0,5736 einen deutlich anderen Wert annimmt, als mit dem einfachen Chi-Quadrat-Test (p=0,4896). Zugegeben, in meinem Beispiel ändert sich mit der Beibehaltung der Nullhypothese (statistische Unabhängigkeit zwischen den Merkmalen) nichts. Man kann sich aber sicher vorstellen, dass bei p-Werten um die typisch gewählte Verwerfungsgrenze von 0,05 herum durchaus höhere oder niedrigere Signifikanzen ergeben können und es zu einer nachträglichen Verwerfung oder Beibehaltung der Nullhypothese kommen kann. 

Der zusätzliche Schritt mit exaktem Test nach Fisher ist demnach vor allem zur Begrenzung des Fehlers 1. Art und des Fehlers 2. Art notwendig.

 

Interpretation der Ergebnisse des Chi-Quadrat-Test in R

Die Nullhypothese statistischer Unabhängigkeit wurde mittels des p-Wertes versucht zu verwerfen. Die Alternativhypothese geht von keiner statistischen Unabhängigkeit aus – es liegt also statistische Abhängigkeit vor. Wenn man so will, kann man von einem Zusammenhang, also einer Korrelation sprechen. In meinem Beispiel gibt es keine statistische Abhängigkeit zwischen Sportnote und dem Geschlecht. Demzufolge würde ich nicht davon ausgehen, dass eines der beiden Geschlechter überhäufig eine bestimmte Note erzielt. Oder ganz plump: ich kann nicht zeigen, dass Männer bessere Sportnoten erzielen aus Frauen oder umgekehrt.

 

Ermittlung der Effektstärke des Chi-Quadrat-Tests

Solltet ihr eine Kreuztabelle haben, die mehr als 2 Spalten und Zeilen hat, empfehle ich euch das SPSS-Video auf meinem YouTube-Kanal, da die Menge an Formeln zu einem zu langen Artikel führen würde.

Dieses Video ansehen auf YouTube.

 

Zur Einordnung: Zwischen 0,1 und 0,3 ist es ein schwacher Effekt, zwischen 0,3 und 0,5 ein mittlerer Effekt und ab 0,5 ist es ein starker Effekt.

 

Quellen

Effektstärkengrenzen: Cohen, Jacob (1988): Statistical Power Analysis for the Behavioral Sciences.

Fisher-Test: Fisher, R. A. (1925). Statistical methods for research workers. Edinburgh: Oliver and Boyd.  

 

Weitere nützliche Tutorials findest du auf meinem YouTube-Kanal.

 

Hat dir der Beitrag geholfen?

Dann würde ich mich über eine kleine Spende freuen, die es mir erlaubt, weiterhin kostenfreie Inhalte zu veröffentlichen.

Vielen Dank und viel Erfolg!

Über mich

Björn Walther

Excel- und SPSS-Experte

YouTube-Kanal

Excel Online-Kurs

YouTube-Kanal