Letzte Änderung am 20. May 2024 um 11:12:36

“You’re so square, baby, I don’t care.” — Elvis Presley

Was macht der \(\mathcal{X}^2\)-Test?

Ein \(\mathcal{X}^2\)-Test vergleicht die Anteile zweier oder mehrerer Gruppen. Da Anteile Wahrscheinlichkeiten sind, vergleicht der \(\mathcal{X}^2\)-Test damit auch Wahrscheinlichkeiten.

Der \(\mathcal{X}^2\)-Test wird häufig verwendet, wenn wir zwei Faktoren mit jeweils zwei Leveln miteinander vergleichen wollen. Das heißt wir haben zum Beispiel unseren Faktor animal mit den beiden Leveln cat und dog. Wir schauen uns jetzt den Infektionsstatus mit Flöhen auf den Tieren an. Wir erhalten wiederum einen Faktor infected mit zwei Leveln yes und no. Wir sind bei dem \(\mathcal{X}^2\)-Test nicht auf nur Faktoren mit zwei Leveln eingeschränkt. Traditionell wird aber versucht ein 2x2 Setting zu erreichen.

Im Bereich der Agrarwissenschaften kommt der \(\mathcal{X}^2\)-Test eher selten vor. Im Bereich der Humanwissenschaften und vor allem der Epidemiologie ist der \(\mathcal{X}^2\)-Test weit verbreitet. Das eigentlich besondere an dem \(\mathcal{X}^2\)-Test ist gar nicht mal der Test selber sondern die Datenstruktur die der \(\mathcal{X}^2\)-Test zugrunde liegt: der Vierfeldertafel oder 2x2 Kreuztabelle. Wir werden diese Form von Tabelle noch später im maschinellen Lernen und in der Testdiagnostik wiederfinden.

35.1 Genutzte R Pakete

Wir wollen folgende R Pakete in diesem Kapitel nutzen.

R Code [zeigen / verbergen]
pacman::p_load(tidyverse, magrittr, effectsize, rstatix,
               scales, parameters, conflicted)
conflicts_prefer(stats::chisq.test)
conflicts_prefer(stats::fisher.test)

Am Ende des Kapitels findest du nochmal den gesamten R Code in einem Rutsch zum selber durchführen oder aber kopieren.

35.2 Daten

Wie eben schon benannt schauen wir uns für den \(\mathcal{X}^2\)-Test eine Vierfeldertafel oder aber 2x2 Kreuztabelle an. In Tabelle 35.1 sehen wir eine solche 2x2 Kreuztabelle. Da wir eine Mindestanzahl an Zellbelegung brauchen um überhaupt mit dem \(\mathcal{X}^2\)-Test rechnen zu können, nutzen wir hier gleich aggrigierte Beispieldaten. Wir brauchen mindestens fünf Beobachtungen je Zelle, dass heißt mindestens 20 Tiere. Da wir dann aber immer noch sehr wenig haben, ist die Daumenregel, dass wir etwa 30 bis 40 Beobachtungen brauchen. In unserem Beispiel schauen wir uns 65 Tiere an.

Tabelle 35.1— Eine 2x2 Tabelle als Beispiel für unterschiedliche Flohinfektionen bei Hunden und Katzen. Dargestellt sind die beobachteten Werte.
Infected
Yes (1) No (0)
Animal Dog \(23_{\;\Large a}\) \(10_{\;\Large b}\) \(\mathbf{a+b = 33}\)
Cat \(18_{\;\Large c}\) \(14_{\;\Large d}\) \(\mathbf{c+d = 32}\)
\(\mathbf{a+c = 41}\) \(\mathbf{b+d = 24}\) \(n = 65\)

In der Tabelle sehen wir, dass in den zeieln die Level des Faktors animal angegeben sind und in den Spalten die Level des Faktors infected. Wir haben somit \(23\) Hunde, die mit Flöhen infiziert sind, dann \(10\) Hunde, die nicht mit Flöhen infiziert sind. Auf der Seite der Katzen haben wir \(18\) Katzen, die infiziert sind und \(14\) Katzen, die keine Flöhe haben. An den Rändern stehen die Randsummen. Wir haben \(33\) Hunde und \(32\) Katzen sowie \(41\) infizierte Tiere und \(24\) nicht infizierte Tiere. Somit haben wir dann in Summe \(n = 65\) Tiere. Diese Form der Tabelle wird uns immer wieder begegnen.

Bevor wir jetzt diese 2x2 Kreuztabelle verwenden, müssen wir uns nochmal überlegen, welchen Schluss wir eigentlich über die Nullhypothese machen. Wie immer können wir nur die Nullhypothese ablehnen. Daher überlegen wir uns im Folgenden wie die Nullhypothese in dem \(\mathcal{X}^2\)-Test aussieht. Dann bilden wir anhand der Nullhypothese noch die Alternativehypothese.

Im Folgenden betrachten wir einmal die \(\mathcal{X}^2\)-Test theoretisch und berechnen alles einmal per Hand. Dann werden wir uns nochmal anschauen, wie wir den \(\mathcal{X}^2\)-Test in R zum Laufen kriegen.

35.3 Hypothesen

Der \(\mathcal{X}^2\)-Test betrachtet die Zellbelegung gegeben den Randsummen um einen Unterschied nachzuweisen. Daher haben wir die Nullhypothese als Gleichheitshypothese. In unserem Beispiel lautet die Nullhypothese, dass die Zahlen in den Zellen gegeben der Randsummen gleich sind. Wir betrachten hier nur die Hypothesen in Prosa und die mathematischen Hypothesen. Es ist vollkommen ausreichend, wenn du die Nullhypothese des \(\mathcal{X}^2\)-Test nur in Prosa kennst.

\[ H_0: \; \mbox{Zellbelegung sind gleichverteilt gegeben der Randsummen} \]

Die Alternative lautet, dass sich die Zahlen in den Zellen gegeben der Randsummen unterscheiden.

\[ H_A: \; \mbox{Zellbelegung sind nicht gleichverteilt gegeben der Randsummen} \]

Wir schauen uns jetzt einmal den \(\mathcal{X}^2\)-Test theoretisch an bevor wir uns mit der Anwendung des \(\mathcal{X}^2\)-Test in R beschäftigen.

35.4 Theoretisch

In Tabelle 35.1 von oben hatten wir die beobachteten Werte. Das sind die Zahlen, die wir in unserem Experiment erhoben und gemessen haben. Der \(\mathcal{X}^2\)-Test vergleicht nun die beobachteten Werte mit den anhand der Randsummen zu erwartenden Werte. Daher ist die Formel für den \(\mathcal{X}^2\)-Test wie folgt.

\[ \chi^2_{D} = \sum\cfrac{(O - E)^2}{E} \]

mit

  • \(O\) für die beobachteten Werte
  • \(E\) für die nach den Randsummen zu erwartenden Werte

In Tabelle 35.2 kannst du sehen wie wir anhand der Randsummen die erwartenden Zellbelegungen berechnen. Hierbei können auch krumme Zahlen rauskommen. Wir würden keinen Unterschied zwischen Hunde und Katzen gegeben deren Infektionsstatus erwarten, wenn die Abweichungen zwischen den beobachteten Werten und den zu erwartenden Werten klein wären. Wir berechnen nun die zu erwartenden Werte indem wir die Randsummen der entsprechenden Zelle multiplizieren und durch die Gesamtanzahl teilen.

Tabelle 35.2— Eine 2x2 Tabelle als Beispiel für unterschiedliche Flohinfektionen bei Hunden und Katzen. Dargestellt sind die zu erwartenden Werte.
Infected
Yes (1) No (0)
Animal Dog \(\cfrac{41 \cdot 33}{65} = 20.82\) \(\cfrac{24 \cdot 33}{65} = 12.18\) \(\mathbf{33}\)
Cat \(\cfrac{41 \cdot 32}{65} = 20.18\) \(\cfrac{24 \cdot 32}{65} = 11.82\) \(\mathbf{32}\)
\(\mathbf{41}\) \(\mathbf{24}\) \(n = 65\)

Wir können dann die Formel für den \(\mathcal{X}^2\)-Test entsprechend ausfüllen. Dabei ist wichtig, dass die Abstände quadriert werden. Das ist ein Kernkonzept der Statistik, Abstände bzw. Abweichungen werden immer quadriert.

\[\begin{aligned} \chi^2_{D} &= \cfrac{(23 - 20.82)^2}{20.82} + \cfrac{(10 - 12.18)^2}{12.18} + \\ &\phantom{=}\;\; \cfrac{(18 - 20.18)^2}{20.18} + \cfrac{(14 - 11.82)^2}{11.82} = 1.25 \end{aligned}\]

Es ergibt sich ein \(\chi^2_{D}\) von \(1.25\) mit der Regel, dass wenn \(\chi^2_{D} \geq \chi^2_{\alpha=5\%}\) die Nullhypothese abgelehnt werden kann. Mit einem \(\chi^2_{\alpha=5\%} = 3.84\) können wir die Nullhypothese nicht ablehnen. Es besteht kein Zusammenhang zwischen den Befall mit Flöhen und der Tierart. Oder anders herum, Hunde und Katzen werden gleich stark mit Flöhen infiziert.

Wie stark ist nun der beobachtete Effekt? Wir konnten zwar die Nullhypothese nicht ablehnen, aber es wäre auch von Interesse für die zukünftige Versuchsplanung, wie stark sich die Hunde und Katzen im Befall mit Flöhen unterscheiden. Wir haben nun die Wahl zwischen zwei statistischen Maßzahlen für die Beschreibung eines Effektes bei einem \(\mathcal{X}^2\)-Test.

Zum einen Cramers \(V\), das wir in etwa interpretieren wie eine Korrelation und somit auch einheitslos ist. Wenn Cramers \(V\) gleich 0 ist, dann haben wir keinen Unterschied zwischen den Hunden und Katzen gegeben dem Flohbefall. Bei einem Cramers \(V\) von 0.5 haben wir einen sehr starken Unterschied zwischen dem Flohbefall zwischen den beiden Tierarten. Der Vorteil von Cramers V ist, dass wir Cramers \(V\) auch auf einer beliebig großen Kreuztabelle berechnen können. Die Formel ist nicht sehr komplex.

\[ V = \sqrt{\cfrac{\mathcal{X}^2/n}{\min(c-1, r-1)}} \]

mit

  • \(\mathcal{X}^2\) gleich der Chi-Quadrat-Statistik
  • \(n\) gleich der Gesamtstichprobengröße
  • \(r\): Anzahl der Reihen
  • \(c\): Anzahl der Spalten

\[ V = \sqrt{\cfrac{1.26/65}{1}} = 0.14 \]

Wir setzen also den Wert \(\chi^2_{D}\) direkt in die Formel ein. Wir wissen ja auch, dass wir \(n = 65\) Tiere untersucht haben. Da wir eine 2x2 Kreuztabelle vorliegen haben, haben wir \(r = 2\) und \(c = 2\) und somit ist das Minimum von \(r-1\) und \(c-1\) gleich \(1\). Wir erhalten ein Cramers \(V\) von \(0.14\) was für einen schwachen Effekt spricht. Wir können uns auch grob an der folgenden Tabelle der Effektstärken für Carmers \(V\) orientieren.

schwach mittel stark
Cramers \(V\) 0.1 0.3 0.5

Zum anderen haben wir noch die Möglichkeit die Odds Ratios oder das Chancenverhältnis zu berechnen. Die Odds Ratios lassen sich direkter als Effekt interpretieren als Cramers \(V\) haben aber den Nachteil, dass wir die Odds Ratios nur auf einer 2x2 Kreuztabelle berechnen können. Wichtig bei der Berechnung der Odds Ratios und der anschließenden Interpretation ist die obere Zeile der 2x2 Kreuztabelle. Die obere Zeile ist der Bezug für die Interpretation. Wir nutzen folgende Formel für die Berechnung der Odds Ratios.

\[ \mbox{Odds Ratio} = OR = \cfrac{a\cdot d}{b \cdot c} = \cfrac{23\cdot 14}{10 \cdot 18} = 1.79 \]

Es ist zwingend notwendig für die folgenden Interpretation der Odds Ratios, dass in den Spalten links die \(ja\) Spalte steht und rechts die \(nein\) Spalte. Ebenso interpretieren wie die Odds Ratios im Bezug zur oberen Zeile. In unserem Fall ist also die Chance sich mit Flöhen zu infizieren bei Hunden 1.79 mal größer als bei Katzen. Diese Interpretation ist nur korrekt, wenn die 2x2 Kreuztabelle wie beschrieben erstellt ist!

35.5 Praktisch in R

Wenn wir den \(\mathcal{X}^2\)-Test in R rechnen wollen nutzen wir die Funktion chisq.test(), die eine Matrix von Zahlen verlangt. Dies ist etwas umständlich. Wir müssen nur beachten, dass wir die Matrix so bauen, wie wir die Matrix auch brauchen. Deshalb immer mal doppelt schauen, ob deine Matrix auch deinen beobachteten Werten entspricht.

R Code [zeigen / verbergen]
mat <- matrix(c(23, 10, 18, 14), 
              byrow = TRUE, nrow = 2,
              dimnames = list(animal = c("dog", "cat"),
                              infected = c("yes", "no")))
chisq.test(mat, correct = FALSE)

    Pearson's Chi-squared test

data:  mat
X-squared = 1.2613, df = 1, p-value = 0.2614

Als ein mögliches Effektmaß können wir Cramers \(V\) berechnen. Wir nutzen hierzu die Funktion cramers_v(). Auf einer reinen 2x2 Kreuztabelle wäre aber Pearsons \(\phi\) durch die Funktion phi() vorzuziehen. Siehe dazu auch \(\phi\) and Other Contingency Tables Correlations auf der Hilfeseite des R Paketes {effectsize}. Wir bleiben hier dann aber bei Cramers \(V\).

R Code [zeigen / verbergen]
cramers_v(mat) 
Cramer's V (adj.) |       95% CI
--------------------------------
0.06              | [0.00, 1.00]

- One-sided CIs: upper bound fixed at [1.00].

Wir sehen, dass der Effekt mit einem \(V = 0.06\) schwach ist. Ein Wert von 0 bedeutet keine Assoziation und ein Wert von 1 einen maximalen Zusammenhang. Wir können die Werte von \(V\) wie eine Korrelation interpretieren. Der in R berechnete Wert unterscheidet sich von unseren händsichen berechneten Wert, da wir hier mit dem adjustierten Cramers \(V\) rechnen. Wir würden auch in der Anwendung den adjustierten Wert verwenden, aber für das Verständnis reicht der händisch berechnete Wert.

Haben wir eine geringe Zellbelegung von unter 5 in einer der Zellen der 2x2 Kreuztabelle, dann verwenden wir den Fisher Exakt Test. Der Fisher Exakt Test hat auch den Vorteil, dass wir direkt die Odds Ratios wiedergegeben bekommen. Wir können auch den Fisher Exakt Test rechnen, wenn wir viele Beobachtungen pro Zelle haben und einfach an die Odds Ratios rankommen wollen. Der Unterschied zwischen dem klassischen \(\mathcal{X}^2\)-Test und dem Fisher Exakt Test ist in der praktischen Anwendung nicht so groß.

R Code [zeigen / verbergen]
fisher.test(mat)

    Fisher's Exact Test for Count Data

data:  mat
p-value = 0.3102
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
 0.5756546 5.6378438
sample estimates:
odds ratio 
   1.77279 

Wir sehen auch hier den nicht signifikanten \(p\)-Wert sowie eine Odds Ratio von 1.77. Hunde haben aso eine um 1.77 höhere Chance sich mit Flöhen zu infizieren.