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,
\[\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\]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.00044
We kunnen besluiten dat er een extreem significant verschil is in distributie van de DNA schade ten gevolge van de dosis.