Kruskal-Wallis Rank Test

De Kruskal-Wallis Rank Test (KW-test) is een niet-parameterisch alternatief voor de ANOVA F-test.

De klassieke \(F\)-teststatistiek kan geschreven worden als

\[F = \frac{\text{SST}/(g-1)}{\text{SSE}/(n-g)} = \frac{\text{SST}/(g-1)}{(\text{SSTot}-\text{SST})/(n-g)} ,\]

met \(g\) het aantal groepen.

Merk op dat SSTot enkel afhangt van de uitkomsten \(\mathbf{y}\) en niet zal variƫren bij permutaties. Het is dus eigenlijk voldoende om SST als teststatistiek te gebruiken. Ter herinnering: \(\text{SST}=\sum_{j=1}^t n_j(\bar{Y}_j-\bar{Y})^2\).

De KW teststatistiek maakt gebruik van SST maar dan gebaseerd op de rank-getransformeerde uitkomsten[52],

\[\text{SST} = \sum_{j=1}^g n_j \left(\bar{R}_j - \bar{R}\right)^2 = \sum_{j=1}^g n_j \left(\bar{R}_j - \frac{n+1}{2}\right)^2 ,\]

met \(\bar{R}_j\) het gemiddelde van de ranks in behandelingsgroep \(j\), en \(\bar{R}\) het gemiddelde van alle ranks,

\[\bar{R} = \frac{1}{n}(1+2+\cdots + n) = \frac{1}{n}\frac{1}{2}n(n+1) = \frac{n+1}{2}.\]

De KW teststatistiek wordt gegeven door

\[KW = \frac{12}{n(n+1)} \sum_{j=1}^g n_j \left(\bar{R}_j - \frac{n+1}{2}\right)^2.\]

De factor \(\frac{12}{n(n+1)}\) zorgt ervoor dat \(KW\) een eenvoudige asymptotische nuldistributie heeft. In het bijzonder, onder \(H_0\), als \(\min(n_1,\ldots, n_g)\rightarrow \infty\),

\[KW \rightarrow \chi^2_{t-1}.\]

De exacte KW-test kan uitgevoerd worden via de berekening van de permutatienuldistributie (die enkel afhangt van \(n_1, \ldots, n_g\)) voor het testen van

\[H_0: f_1=\ldots=f_g \text{ vs } H_1: \text{ minstens twee gemiddelden verschillend}.\]

Om toe te laten dat \(H_1\) geformuleerd is in termen van gemiddelden, moet locatie-shift verondersteld worden. Indien locatie-shift niet opgaat, zou \(H_1\) eigenlijk geformuleerd moeten worden in termen van probabilistische indexen:

\[H_0: f_1=\ldots=f_g \text{ vs } H_1: \exists\ j,k \in \{1,\ldots,g\} : \text{P}\left[Y_j\geq Y_k\right]\neq 0.5\]

DNA Schade Voorbeeld

Eerst analyseren we de data met de R functie kruskal.test

kruskal.test(length ~ dose, data = dna)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  length by dose
## Kruskal-Wallis chi-squared = 14, df = 3, p-value = 0.002905

De waarde van de KW teststatistiek is 14, met een \(p\)-waarde van 0.00291. Dus op het \(5\%\) significantieniveau kan de nulhypothese worden verworpen.

Het is belangrijk om op te merken dat de R-functie kruskal.test steeds de asymptotische benadering gebruikt voor de berekening van de \(p\)-waarden. Met slechts 6 observaties per groep, is dit geen optimale benadering van de exacte \(p\)-waarde! Met de coin R package kunnen we de exacte \(p\)-waarde wel berekenen via het argument distribution='exact'of benaderen a.d.h.v. simulaties distribution=approximate(B=100000), waarbij B het aantal permutaties is.

library(coin)
kwPerm <- kruskal_test(length ~ dose, data = dna,
            distribution = approximate(nresample = 100000))
kwPerm
## 
##  Approximative Kruskal-Wallis Test
## 
## data:  length by dose (0, 1.25, 2.5, 5)
## chi-squared = 14, p-value = 0.00036

We kunnen besluiten dat er een extreem significant verschil is in distributie van de DNA schade ten gevolge van de dosis.