Skip to content

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.

1 VI inter-sujet à trois modalités

Conditions d'application

Conditions d'application

Pour pouvoir être appliqué, ce test nécessite que les échantillons ne soient pas issues de distributions normales.

Pour vérifier si les distributions sont normales, nous devons utiliser un test de Shapiro-Wilk:

Syntaxe R
# Soit y la variable dépendante et x le facteur
by(data$y, data$x, shapiro.test)

Exécution du test

Syntaxe R
# 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:

Importation des 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:

Diagramme en boîtes à moustache
boxplot(
    score ~ groupe, data=df,
    xlab="Groupe", ylab="Score",
    main="Kruskal-Wallis rank sum test",
    col="steelblue"
)

Représentation graphique de nos données

Vérifions maintenant les conditions d'application, tout d'abord la normalité des distributions:

Test de normalité de Shapiro-Wilk
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:

Test de Kruskal-Wallis
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).