Test de Kruskal-Wallis (Kruskal-Wallis rank sum test)
Introduction
Le test de Kruskal-Wallis est l'équivalent non-paramétrique de l'analyse de variance à un facteur.
Pour des explications plus détaillées, n'hésitez pas à consulter mes notes de première année.

Conditions d'application
Conditions d'application
Pour pouvoir être appliqué, ce test nécessite que les échantillons ne soient pas issues de distributions normales.
- Si les distributions sont normales, il faut absolument utiliser un test paramétrique. Dans ce cas, un l'ANOVA à un facteur.
Pour vérifier si les distributions sont normales, nous devons utiliser un test de Shapiro-Wilk:
# Soit y la variable dépendante et x le facteur
by(data$y, data$x, shapiro.test)
Exécution du test
# Soit y la variable dépendante et x le facteur
kruskal.test(data$y ~ data$x)
Exemple
Voici nos données et notre fichier d'analyse:
| Fichiers |
|---|
| kruskal-wallis-rank-sum-test.csv |
| kruskal-wallis-rank-sum-test.R |
Importons nos données:
df <- read.csv("kruskal-wallis-rank-sum-test.csv")
df$groupe <- as.factor(df$groupe)
Nous pouvons maintenant visualiser nos données dans un diagramme en boîtes à moustache:
boxplot(
score ~ groupe, data=df,
xlab="Groupe", ylab="Score",
main="Kruskal-Wallis rank sum test",
col="steelblue"
)

Vérifions maintenant les conditions d'application, tout d'abord la normalité des distributions:
by(df$score, df$groupe, shapiro.test)
| W | p | |
|---|---|---|
| Contrôle | 0.97627 | 0.06788 |
| Expérimental 1 | 0.96422 | 0.008136 |
| Expérimental 2 | 0.98038 | 0.1423 |
Nous pouvons donc conclure que certains échantillons ne sont pas issus de distributions normales. Nous ne pouvons donc pas utiliser de test paramétrique.
Effectuons maintenant notre test non-paramétrique:
kruskal.test(score ~ groupe, data=df)
| χ2 | df | p-value |
|---|---|---|
| 148.86 | 2 | < 2.2e-16 *** |
Nous constatons donc qu'il existe une différence statistiquement significative entre les échantillons (χ2(2) = 148.86, p<.001).