Willkommen bei Stats by Randolph. Hier geht es zur Hauptseite mit weiteren Informationen und Inhalten.

Autor:innen dieser Seite: An den Inhalten dieser Seite haben mitgearbeitet: Valentin Koob, Eva Röttger und Markus Janczyk. Der Inhalt dieser Seite wird in der Lehre in den Studiengängen Psychologie von der AG Forschungsmethoden und Kognitive Psychologie an der Universität Bremen verwendet, steht aber allen Interessierten zur Verfügung. Rückmeldungen/Fehler/Vorschläge können gesendet werden an .

Versionshistory:

  • v1.0: erste online-gestellte Version (14.9.2023)

15 Non-parametrische Tests

15.1 Grundprinzip und Unterschied zu parametrischen Tests

Wir haben uns bisher in Teil 12 mit dem \(t\)-Test beschäftigt, der ein Beispiel sog. parametrischer Test ist. Diese Bezeichnung rührt daher, dass Annahmen über die Verteilung der Daten gemacht werden, insbesondere wird ja angenommen, die Daten seien in der Population normalverteilt.

Bei sog. non-parametrischen Tests werden i.W. die gleichen Fragestellungen untersucht, aber es werden keine Annahmen über die Verteilung der Daten an den Anfang gestellt. Der dadurch eingekaufte Nachteil ist eine i.d.R. (etwas) geringere Power. Für die Situationen, die wir bisher kennegelernt haben, bieten sich non-parametrische Alternativen also für nicht-normalverteilte Daten an, aber auch dann, wenn die Variablen nicht intervallskaliert, sondern nur ordinalskaliert sind. Daher beruhen non-parametrische Tests i.W. auf Rangreihen, statt auf den Messwerten an sich, wie wir gleich am Beispiel von Zusammenhangshypothesen sehen werden. Im Anschluss betrachten wir Unterschiedshypothesen (oder präziser: die non-parametrischen Äquivalente zum \(t\)-Test aus Teil 12) und kommen dann noch einmal zum \(\chi^2\)-Koeffizienten aus Teil 5 zurück.

15.2 Zusammenhangshypothesen

15.2.1 Spearman Korrelation

In Teil 5 hatten wir mit Pearson’s Korrelationskoeffizienten \(r\) ein Maß für lineare Zusammenhänge intervallskalierter Variablen hergeleitet. Spearman’s Korrelationskoeffizient \(\rho\) ist ein solches Maß für ordinalskalierte Variablen, wobei hier nur erfasst wird, inwieweit ein Zusammenhang monoton steigend oder fallend ist. Die dabei wesentliche Idee ist, dass die Daten zunächst in eine Rangreihe gebracht werden und mit den Rängen dann eine Pearson-Korrelation berechnet wird.

Zur Illustration betrachten wir ein Beispiel mit 6 Datenpunkten, welche einen monoton steigenden Zusammenhang auf den Variablen \(X\) und \(Y\) bilden. Der Plot auf der linken Seite zeigt diese perfekte Monotonie. Der Plot auf der rechten Seite zeigt die gleichen Daten, aber für den Fall, dass man versuchen würde einen linearen Zusammenhang zu quantifizieren.

Klar ist, dass trotz eines monotonen Anstiegs der Daten kein perfekt-linearer Zusammenhang herrscht. Die folgende Tabelle zeigt die Rohdaten der sechs Versuchspersonen sowie die zugehörige Rangreihe:

Die Zeilen Rang(X) und Rang(Y) beinhalten jeweils die Rangplätze der Werte, d.h. der kleinste Wert erhält den Rang 1, der nächstkleinste Wert den Rang 2 usw. Mit R können wir derartige Ränge mit der Funktion rank() ermitteln, wie hier am Beispiel der Daten dargestellt:

X <- c(34 , 37 , 40 , 38 , 42 , 33)
Y <- c(150, 156, 158, 157, 170, 110)
rank(X) # berechnet Ränge von X
## [1] 2 3 5 4 6 1
rank(Y) # berechnet Ränge von Y
## [1] 2 3 5 4 6 1

Als zweites Beispiel betrachten wir eines mit sog. “Ties”. Diese liegen vor, wenn zwei Personen gleiche Werte auf einer Variablen haben, wie hier die Versuchspersonen 1 und 2 auf der Variablen \(X\):

In diesem Fall stellt sich die Frage, welche Ränge hier vergeben werden. Eine Variante ist hierbei, den Mittelwert der normalen Ränge zu nutzen. Im Beispiel wären die normalen Ränge also 2 und 3 (wobei egal ist, ob Versuchsperson 1 oder 2 den Rang 2 bekommt) und der Mittelwert ist entsprechend 2.5, welcher dann für beide Versuchspersonen vergeben wird. Dies ist auch die Standardlösung, die die Funktion rank() verwendet, sie bietet aber auch andere Verfahren für Ties an:

X <- c(35 , 35 , 40 , 38 , 42 , 33)
Y <- c(150, 156, 158, 157, 170, 110)
rank(X, ties.method = "average") # "average" ist auch voreingestellt
## [1] 2.5 2.5 5.0 4.0 6.0 1.0
rank(Y)
## [1] 2 3 5 4 6 1

15.2.2 Umsetzung in R

Zur Bestimmung der Spearman-Korrelation können wir auch die Funktionen cor() bzw. cor.test() benutzen und dort das Argument method = "spearman" spezifizieren (voreingestellt ist method = "pearson"). Am Beispiel des ersten Beispiels ergibt sich dann mit R:

X <- c(34 , 37 , 40 , 38 , 42 , 33)
Y <- c(150, 156, 158, 157, 170, 110)
cor(X, Y, 
    method = "spearman")         # welcher Korrelationskoeffizient soll berechnet werden?
## [1] 1

Dies ergibt Sinn, da die Daten aus dem ersten Beispiel eine perfekte Monotonie aufgewiesen haben (vgl. die linke Abbildung bzw. die Werte von Rang(X) und Rang(Y) weiter oben). Würden wir die Methode nicht spezifizieren, erhalten wir die Pearson-Korrelation:

cor(X, Y)
## [1] 0.8140376

Zu sehen ist, dass hier (für dieses Beispiel) der Zusammenhang kleiner ausfällt, da die Pearson-Korrelation einen linearen Zusammenhang quantifiziert (vgl. hierzu die rechte Abbildung weiter oben).

Die Spearman-Korrelation erhalten wir auch, indem wir eine Pearson-Korrelation nicht mit den Rohdaten, sondern mit deren Rängen berechnen:

cor(rank(X), rank(Y),            # Ränge benutzen statt Daten
    method = "pearson")
## [1] 1

15.3 Unterschiedshypothesen

15.3.1 Mann-Whitney-U-Test/Wilcoxon-Test

Es gibt für alle drei Varianten des \(t\)-Tests, die wir in Teil 12 kennengelernt hatten, ein non-parametrisches Äquivalent. Alle Varianten arbeiten ebenfalls mit Ranginformationen anstelle der Rohdaten und werden im Folgenden nacheinander besprochen:

  • unabhängige Stichproben: Mann-Whitney-U-Test bzw. Wilcoxon-Test für zwei unabhängige Stichproben (beide Varianten sind algebraisch ineinander überführbar)
  • abhängige Stichproben: Wilcoxon-Test für abhängige Stichproben
  • Einstichproben-\(t\)-Test: Wilcoxon-Test für eine Stichprobe

Beginnen wir mit dem Mann-Whitney-U-Test für unabhängige Stichproben (kleine Eselsbrücke: “U wie unabhängig”; stimmt zwar nicht, aber hilft trotzdem). Natürlich gibt es auch hier Voraussetzungen, aber es wird keine bestimmte Verteilung (wie beim \(t\)-Test) angenommen:

  • Bei der gemessenen Variable \(X\) handelt es sich um ein mindestens ordinalskaliertes Merkmal.
  • In beiden hypothetischen Populationen haben die Daten die gleiche Verteilungsform (die genaue Verteilung der Daten ist allerdings nicht spezifiziert).

Auch non-parametrische Tests dienen dazu, eine Entscheidung zwischen einer Null- und einer Alternativhypothese zu treffen. Die Nullhypothese lautet in diesem Fall \(H_0\): “Die Verteilungen in beiden Populationen habe die gleiche Lage” während die Alternativhypothese besagt \(H_1\): “Die Verteilungen beider Populationen unterschieden sich in ihrer Lage.”

Im Folgenden beschreiben wir die Rechenschritte einmal an zwei Stichproben jeweils vom Umfang \(n=4\).
Dabei haben die vier Versuchspersonen in Stichprobe 1 die Werte 1, 3, 5 und 8 und die in Stichprobe 2 die Werte 2, 6, 7 und 11.

Schritt 1 besteht nun darin, die Rangsummen (RS) zu ermitteln. Dazu werden zunächst die Werte beider Stichproben gemeinsam betrachtet und in eine Rangreihe gebracht. Dies ist in der folgenden Tabelle illustriert (liegen Ties vor, wird ähnlich wie oben für Korrelationen ausgeführt vorgegangen). Die beiden Rangsummen ergeben sich dann dadurch, dass, für jede Stichprobe einzeln, die Rangplätze addiert werden. Für die Stichprobe 1 ergibt sich also \[RS_1=1+3+4+7=15\] und für die Stichprobe 2 ergibt sich \[RS_2=2+5+6+8=21\]

Als Schritt 2 ermitteln wir nun zwei Werte, die als \(U_1\) und \(U_2\) bezeichnet werden: \[U_1=n_1n_2+\frac{n_1(n_1+1)}{2}-RS_1\hspace{0.5cm}\text{und}\hspace{0.5cm} U_2=n_1n_2+\frac{n_2(n_2+1)}{2}-RS_2\] \(U_2\) kann alternativ auch berechnet werden als \[U_2=n_1n_2-U_1\] Für das Beispiel ergibt sich also: \[U_1=4\cdot 4+\frac{4\cdot 5}{2}-15=16+10-15=11\hspace{0.5cm}\text{und}\hspace{0.5cm}U_2=4\cdot 4-11 = 5\]

Schritt 3 besteht dann im Ermitteln der Prüfgröße \(U\), die sich aus dem Minimum von \(U_1\) und \(U_2\) ergibt: \[U=\min(U_1,U_2)\] Im Beispiel erhalten wir also \[U=\min(11,5)=5\]

Nun verfügen wir über eine Prüfgröße und müssen als Schritt 4 noch erfahren, wie sich die Prüfgröße, als Zufallsvariable \(\mathbf{U}\) aufgefasst, unter Annahme der Gültigkeit der Nullhypothese verteilt. Die Idee dabei ist, dass der Wert von \(U\) nur abhängig davon ist, wie die Messwerte über die Rangplätze verteilt sind. Insbesondere sind bei Gültigkeit der \(H_0\) alle möglichen Verteilungen gleich wahrscheinlich.

Für kleinere Stichproben gibt es in manchen Statistikbüchern Tabellen mit exakten \(p\)-Werten, zumindest für ganzahlige Werte von \(U\). Die folgende Tabelle ist ein Auszug aus Tafel VI-1-1 bei Lienert (1975) für den Fall, dass \(n_1=n_2=4\) ist:

Mit dem ermittelten \(U=5\) erhalten wir also ein einseitiges \(p=.243\), welches wir mit \(2\) multiplizieren, um den \(p\)-Wert für einen zweiseitigen Test zu erhalten, also \(p=.486\).

Bei hinreichend großen Stichproben (etwa ab \(n_1,n_2\geq 25\)) ist \(U\) approximativ normalverteilt mit \[E(\mathbf{U})=\frac{n_1n_2}{2}\hspace{0.5cm}\text{und}\hspace{0.5cm}\sigma^2_{\mathbf{U}}=\frac{n_1n_2(n_1+n_2+1)}{12}\] und per \(z\)-Transformation können wir \(\mathbf{U}\) in eine Standardnormalverteilung überführen. In anderen Worten, evaluieren wir \[z=\frac{U-E(\mathbf{U})}{\sigma_{\mathbf{U}}}\] an der Standardnormalverteilung. Für das Beispiel würde sich also ergeben: \[E(\mathbf{U})=\frac{4\cdot 4}{2}=8\quad\text{und}\quad\sigma^2_{\mathbf{U}}=\frac{4\cdot 4\cdot(4+4+1)}{12}=12\] Daraus können wir dann den \(z\)-standardisierten Wert errechnen: \[z_U=\frac{U-E(\mathbf{U})}{\sqrt{\sigma^2_{\mathbf{U}}}}=\frac{5-8}{\sqrt{12}}=-0.866\] Mit der Funktion pnorm() können wir nun den entsprechenden (zweiseitigen) \(p\)-Wert berechnen:

2 * pnorm(q = -0.866,    # z.U
          mean = 0,      # Standardnormalverteilung
          sd = 1)        # Standardnormalverteilung
## [1] 0.3864902

Dass dieser approximierte \(p\)-Wert vom gerade berechneten exakten \(p\)-Wert deutlich abweicht, liegt an der kleinen Stichprobengröße. Mehr Informationen und R-Code zur Berechnung des \(p\)-Wertes für große Stichproben finden sich hier. Tabellen mit kritischen Werten für \(U\) sind zudem auf dieser Homepage zu finden.

Die Wilcoxon-Tests basieren auf ähnlichen Ideen und es existieren auch Varianten für abhängige Stichproben und Einstichproben-Tests. Beide Varianten greifen wir gleich kurz auf, wenn es um die (recht einfache) Umsetzung mit R geht.

15.3.2 Umsetzung mit R

In R werden alle Varianten mit der Funktion wilcox.test() berechnet, die ganz ähnlich wie die Funktion t.test() funktioniert. Wir beginnen mit dem Beispiel für unabhängige Stichproben und erstellen für beide Stichproben zunächst einen Vektor mit den Daten (die natürlich auch in einem DataFrame enthalten sein können) und rufen dann die entsprechende Funktion auf:

SP1 <- c(1,3,5,8)       # Stichprobe 1 
SP2 <- c(2,6,7,11)      # Stichprobe 2
wilcox.test(SP1, SP2)   # Test für unabhängige Stichproben
## 
##  Wilcoxon rank sum exact test
## 
## data:  SP1 and SP2
## W = 5, p-value = 0.4857
## alternative hypothesis: true location shift is not equal to 0

Mit \(p=.486\) ist der Test also nicht signifikant, wir behalten also die Nullhypothese bei, dass die Verteilung in beiden Populationen die gleiche Lage hat.

Hierzu noch eine Anmerkung: Die Prüfgröße des Wilcoxon-Tests wird \(W\) genannt und sie entspricht entweder \(U_1\) oder \(U_2\) (gerundet). Im Beispiel haben wir gerade als erste Stichprobe diejenige mit der kleineren Rangsumme der Funktion wilcox.test() übergeben und \(W=5\) erhalten, was dem oben berechneten Wert von \(U\) entspricht. Würden wir dies umgekehrt machen, also wilcox.test(SP2, SP1) aufrufen, dann wird von der Funktion W=11 ausgegeben, also als Prüfgröße \(W=\max(U_1,U_2)\) verwendet. Tatsächlich sind beide Varianten identisch und führen zum gleichen Ergebnis.

Fassen wir die gleichen Daten als abhängige Stichproben auf, benutzen wir–wie bei t.test() auch–das Argument paired = TRUE:

SP1 <- c(1,3,5,8)
SP2 <- c(2,6,7,11)
wilcox.test(SP1, SP2,
            paired = TRUE)  # abhängige Stichproben
## Warning in wilcox.test.default(SP1, SP2, paired = TRUE): kann bei Bindungen
## keinen exakten p-Wert Berechnen
## 
##  Wilcoxon signed rank test with continuity correction
## 
## data:  SP1 and SP2
## V = 0, p-value = 0.09751
## alternative hypothesis: true location shift is not equal to 0

Ganz ähnlich führen wir einen Einstichprobentest durch, indem wir den angenommenen Populationswert für die Lage der Verteilung spezifizieren:

SP1 <- c(1,3,5,8)
SP2 <- c(2,6,7,11)
wilcox.test(SP1, 
            mu = 0)         # Stichprobe 1 auf den Testwert 0 (Default)
## 
##  Wilcoxon signed rank exact test
## 
## data:  SP1
## V = 10, p-value = 0.125
## alternative hypothesis: true location is not equal to 0

15.4 \(\chi^2\)-Koeffizient für Zusammenhänge

In Teil 5 hatten wir den \(\chi^2\)-Koeffizienten eingeführt, um Zusammenhänge von (nominalskalierten) Variablen zu quantifizieren: \[\chi^2=\sum_{i=1}^I\sum_{j=1}^J\frac{(n_{ij}-e_{ij})^2}{e_{ij}}\] In diesem Zusammenhang hatten wir bereits festgehalten, dass das Maximum von \(\chi^2\) als \(n\cdot [\text{min}(I,J)-1]\) berechnet werden kann. Bisher hatten wir das Maß allerdings nur deskriptiv verwendet. Nach den Ausführungen der letzten Teile wissen wir nun, dass–auch wenn in der Population kein Zusammenhang vorhanden ist–wir i.d.R. nicht davon ausgehen können, dass wir in einer Stichprobe \(\chi^2=0\) erhalten werden. Wir können aber auch für den \(\chi^2\)-Koeffizienten eine inferenzstatistische Analyse dahingehend durchführen, welche Werte denn zu erwarten wären, würde in der Population kein Zusammenhang existieren (also die Nullhypothese gelten). Mit anderen Worten ist nun die Frage: Wie ist der \(\chi^2\)-Koeffizient bzw. die entsprechende Zufallsvariable verteilt? Die Hypothesen, zwischen denen wir am Ende unterscheiden wollen, lauten: \[H_0:\text{KEIN Zusammenhang}\hspace{0.5cm}\text{und}\hspace{0.5cm}H_1:\text{Zusammenhang}\] Wie der Name des Koeffizienten nahe legt, ist die gesuchte Verteilung die \(\chi^2\)-Verteilung, die wir kurz am Ende von Teil 12 bereits kennengelernt hatten. Etwas präziser gilt unter Annahme der Gültigkeit der Nullhypothese und ausreichend großen Zellenbesetzungen, dass die Zufallsvariable \(\chi^2\) approximativ \(\chi^2\)-verteilt mit \((I-1)\cdot(J-1)\) Freiheitsgraden ist, also \[\chi^2 \overset{H_0}{\sim}\chi^2_{(I-1)(J-1)}\] Die folgende Abbildung illustriert noch einmal Beispiele für \(\chi^2\)-Verteilungen mit verschiedenen \(m\)-vielen Freiheitsgraden:

Nun können wir die gleiche Vorgehensweise anwenden, die wir vom \(t\)-Test etc. bereits kennen. Wir suchen einen kritischen Wert \(\chi^2_\text{krit}\), rechts von dem noch eine Fläche von \(\alpha\) unter der entsprechenden \(\chi^2\)-Verteilung vorkommt. Ist unser empirischer \(\chi^2\)-Wert größer/gleich diesem Wert, dann treten unsere Daten (oder noch extreme Daten) mit nur einer max. Wahrscheinlichkeit von \(\alpha\) auf (wenn die Nullhypothese gilt) und wir entscheiden uns daher, nicht weiter an diese Annahme zu glauben, sondern gehen stattdessen von der Alternativhypothese aus. Natürlich kann auf Basis des empirischen \(\chi^2\)-Wertes auch der \(p\)-Wert berechnet werden und die gleiche Entscheidung getroffen werden, wenn \(p\leq\alpha\).

Wir greifen nun auf das Beispiel aus Teil 5 zurück:

Es ergibt sich als empirischer Wert \(\chi^2 = 21.02778\) und die Freiheitsgrade der relevanten \(\chi^2\)-Verteilung sind für dieses Beispiel \((I-1)(J-1)=(3-1)(3-1)=4\).

Zur Entscheidung betrachten wir nun die \(\chi^2\)-Verteilung mit 4 Freiheitsgraden und bestimmen \(\chi^2_\text{krit}\), also den Wert rechts von dem \((\alpha\cdot 100)\)% der Fläche liegen (bei \(\alpha=0.05\) also 5% der Fläche, und entsprechend 95% links von diesem Wert). Formal ist dieser Wert das \((1-\alpha)\cdot100\%\)-Quantil der \(\chi^2\)-Verteilung mit \(m\) Freiheitsgraden: \[\chi^2_\text{krit}=\chi^2_{m;1-\alpha}\]

Wenn also die \(H_0\) gilt, dann tritt \(\chi^2\geq \chi^2_{krit}\) mit einem relativen Anteil von \(\alpha=0.05\), also in 5% aller Fälle auf. In diesen Fällen sagen wir, der \(\chi^2\)-Wert der Studie ist so unwahrscheinlich, dass wir an der Annahme der \(H_0\) zweifeln und wir entscheiden uns stattdessen für die \(H_1\); der \(\chi^2\)-Test war signifikant.

Entscheidungsregel 1 für den \(\chi^2\)-Test: “Wenn \(\chi^2\geq \chi^2_{krit}\) ist, dann tritt der \(\chi^2\)-Wert (bzw. ein noch größerer) so selten auf, wenn die \(H_0\) gelten würde, dass wir an dieser Annahme Zweifel haben. Wir entscheiden uns daher für die \(H_1\).”

Den kritischen Wert \(\chi^2_\text{krit}\) berechnen wir mit der Funktion qchisq():

chikrit <- qchisq(0.95, df = 4)
chikrit
## [1] 9.487729

Es ergibt sich also \(\chi^2_{\text{krit}}=9.49\). Da \(\chi^2\geq \chi^2_{\text{krit}}=9.49\) entscheiden wir uns für die \(H_1\), gehen also davon aus, dass es in der Population tatsächlich einen Zusammenhang gibt.

Alternativ bestimmen wir den \(p\)-Wert als das Integral unter der \(\chi^2\)-Verteilung vom (empirischen) \(\chi^2\)-Wert bis \(+\infty\): \[p=\int_{\chi^2}^{+\infty}f(x)dx\] wenn \(f(x)\) die Dichtefunktion der entsprechenden \(\chi^2\)-Verteilung ist. Auch hier gilt die Entscheidungsregel ganz analog zu den Fällen, die wir bereits kennen:

Entscheidungsregel 2 für den \(\chi^2\)-Test: “Wenn \(p\leq\alpha\) ist, dann tritt der \(\chi^2\)-Wert bzw. ein noch größerer \(\chi^2\)-Wert so selten auf, wenn die \(H_0\) gelten würde, dass wir an dieser Annahme Zweifel haben. Wir entscheiden uns daher für die \(H_1\).”

Zur Berechnung des \(p\)-Wertes können wir die Funktion pchisq() verwenden:

pchisq(q = 21.02778, df = 4)   # von 0-21.02778
## [1] 0.9996873
1-pchisq(q = 21.02778, df = 4) # p = von 21.02778 bis unendlich
## [1] 0.0003126782

Da also \(p\leq\alpha\) ist, entscheiden wir uns für die \(H_1\), gehen also davon aus, dass es in der Population tatsächlich einen Zusammenhang gibt. Natürlich führt dieser Weg wie immer zur gleichen Entscheidung wie die Entscheidung mit dem kritische Wert.

die Funktion chisq.test() liefert uns den \(p\)-Wert natürlich auch direkt mit und wir betrachten deren Ausgabe noch einmal an den Beispieldaten:

# empirische Werte in einer Matrix zusammenfassung (kann auch z.B. das Ergebnis von table() sein)
E <- matrix(c(8,1,3,5,4,3,1,16,1),
            3, 3,
            byrow = TRUE) 
E
##      [,1] [,2] [,3]
## [1,]    8    1    3
## [2,]    5    4    3
## [3,]    1   16    1
ergebnis <- chisq.test(E)     # dann den chi^2-Test durchführen...
ergebnis                      # ...und ausgeben
## 
##  Pearson's Chi-squared test
## 
## data:  E
## X-squared = 21.028, df = 4, p-value = 0.0003127

Wie wir sehen, entsprechen diese Ergebnisse genau denen, die wir von Hand berechnet haben. Zur besseren Formatierung können wir wieder eine Funktion aus dem Paket schoRsch nutzen:

chi_out(ergebnis)             # formatierte Ausgabe
##                          Test                    Results
## 1 Pearson's Chi-squared test: chi^2(4) = 21.03, p < .001

15.5 Literatur

Lienert, G.A. (1975). Verteilungsfreie Methoden in der Biostatistik. Tafelband. Anton Hain.