Test de Kruskal-Wallis

add

Wilson Allen Wallis (à gauche) et William Henry Kruskal (à droite)

Attention !!! MAJ V2 en cours !!!

\bullet Historique :

\begin{tabular}{|l|c|c|} \hline Bloc & 28/05/2013-V1 & 03/08/2020-V2 \\ \hline Historique &  & Cr\'eation \\ \hline Sommaire &  & Cr\'eation \\ \hline Pr\'esentation & Cr\'eation & MAJ \\ \hline Le test & Cr\'eation & Ajout calcul p-valeur exacte, suppression test robuste de Moses \\ \hline Tendance lorsque... & Cr\'eation & MAJ \\ \hline Annexe th\'eo... & Cr\'eation & MAJ \\ \hline Exemple & Cr\'eation & MAJ \\ \hline Appli... info... & Cr\'eation & Devient Appli... sous R \\ \hline Appli... sous SAS &  & Cr\'eation \\ \hline Bibliographie & Cr\'eation & MAJ \\ \hline \end{tabular}

\bullet Sommaire :

  • Présentation
  • Le test
    • La table de Kruskal-Wallis 
    • La table de la loi du \chi ^2
    • Calcul de la p-valeur exacte du \chi ^2
    • Conditions pour le rejet de H_0
  • Tendance lorsque n \rightarrow + \infty
  • Annexe théorique
  • Exemples
  • Application sous R
  • Application sous SAS
  • Bibliographie

\bullet Présentation :

Publié en 1952 par William Henry Kruskal et Wilson Allen Wallis, le test de Kruskal-Wallis est une approche non paramétrique permettant de tester si les sous-échantillons (X|_{Y = 1}, \cdots, X|_{Y = K}), d’une  variable X continue (que l’on transformera en rangs) ou ordinale restreinte aux K \geq 2 groupes d’une variable Y, ont leur rang médian qui diffère.

Le test de Kruskal-Wallis est le faux équivalent non paramétrique de l’ANOVA. En effet, ce test a pour hypothèse nulle l’homogénéité de la distribution aléatoire des différents sous-échantillons X|_{Y = k}, \forall k \in [1, K], contrairement à l’ANOVA qui se base sur leur moyenne pondérée par leur variance. Le test de Kurskal-Wallis ne peut donc pas être considéré comme un équivalent au sens strict. A noter qu’en cas de normalité et d’homoscédasticité, le test de Kruskal-Wallis présente l’avantage de rester aussi puissant que l’ANOVA.

\bullet Le test:

Hypothèse préliminaire: Variable X continue ou ordinale et variable Y qualitative à K \geq 2 groupes.

Soit R le vecteur des rangs associés à la variable X. Pour K groupes on note l’effectif n_k, \forall k \in \lbrace 1, \ldots, K \rbrace et n = \sum_{k = 1} ^K n_k l’effectif total. La formule du test de Kruskal-Wallis est :

H = (n - 1) \cdot \frac{\sum_{k = 1} ^K n_k \cdot(\overline{R|_{Y = k}} - \overline{R}) ^2}{\sum_{i = 1} ^n (R_i - \overline{R}) ^2}

En cas de présence de rangs ex-æquos, un correctif doit être appliqué. La formule de la statistique de test devient alors :

\tilde{H} = \frac{H}{1 - \frac{\sum_{e = 1} ^{E} t_e ^3 - t_e}{N ^3 - N}}

, avec :

E, nombre de « paquets » d’ex-æquos ;

t_e, nombre d’ex-æquos du « paquet » e.

Elle suit une loi du \chi ^2 à d = K - 1 degrés de liberté et l’hypothèse H_0 est :

Les médianes sont identiques / mediane(R|_{Y = 1}) = \cdots = mediane(R|_{Y = K})

Avec \chi_{d,1-\alpha} ^2 la valeur seuil de la distribution de la statistique de test du \chi ^2 pour une confiance \alpha et pour d degrés de liberté, l’hypothèses alternative est alors,

H_1 : \exists k_1, k_2 tel que mediane(X|_{Y = k_1}) \neq mediane(X|_{Y = k_2}), soit \chi ^2 \geq \chi_{d,1-\alpha}, pour un test bilatéral ;

– Le test du \chi ^2 ne propose pas de forme unilatérale à droite ou à gauche pour H_1 car basé sur une approche ordinale de X|_{Y = k}.

La table de la loi de Kruskal-Wallis :

Si la variable Y a K \leq 5 catégories ou que les effectifs sont trop petits et que la variable X ne contient pas d’ex-æquos, la statistique de test suit une loi de Kruskal-Wallis.

add

La table de la loi du \chi ^2 :

add47

Calcul de la p-valeur exacte :

La loi à laquelle reporter la statistique de test de Kruskal-Wallis est celle du \chi ^2 à d degrés de liberté. Il n’existe qu’une version bilatérale pour le calcul de la p-valeur :

p = P(\chi_{obs} ^2 > \chi_{d,1-\alpha} ^2) = 1 - \frac{\gamma(\frac{d}{2},\frac{\chi_{obs} ^2}{2})}{\Gamma(\frac{d}{2})}

, avec \Gamma(.) la fonction gamma et \gamma(.,.) la fonction gamma incomplète de formule :

\gamma(\frac{d}{2},\frac{\chi_{obs} ^2}{2}) = \sum_{k = 0} ^{\infty} \frac{(-1) ^k (\frac{\chi_{obs} ^2}{2}) ^{\frac{d}{2} + k}}{k! (\frac{d}{2} + k)}

Tendance pour le rejet de H_0:

Deux cas se distinguent. Celui où H \rightarrow 0 et on accepte H_0 et celui où H \rightarrow + \infty et on rejette H_0.

Concernant le premier cas,

H \rightarrow 0 \Rightarrow (N - 1) \cdot \frac{\sum_{k = 1} ^K n_k \cdot (\overline{R|_{Y = k}} - \overline{R}) ^2}{\sum_{i = 1} ^N (R_i - \overline{R}) ^2} \rightarrow 0

\Rightarrow \sum_{k = 1} ^K n_k \cdot (\overline{R|_{Y = k}} - \overline{R}) ^2 \rightarrow 0

\Rightarrow \forall k, \overline{R|_{Y = k}} - \overline{R} \rightarrow 0

\Rightarrow \forall k, \overline{R|_{Y = k}} \rightarrow \overline{R}

Soit que les moyennes des rangs de chacun des sous-échantillons sont égales à la moyenne globale, ce qui reviendrait à décrire une distribution aléatoire. 

Pour le second cas,

H = (N - 1) \cdot \frac{\sum_{k = 1} ^K n_k \cdot (\overline{R|_{Y = k}} - \overline{R}) ^2}{\sum_{i = 1} ^N (R_i - \overline{R}) ^2} \rightarrow + \infty

On note que le dénominateur ne converge jamais vers 0 étant donné sa formule sauf pour le cas suivant, qui ne devrait jamais se produire : X n’est composée que de valeurs égales et donc tous les rangs sont ex-æquos.

Par conséquent, seul le numérateur a le plus d’influence sur le résultat de la statistique de test. Ainsi,

\sum_{k = 1} ^K n_k \cdot (\overline{R|_{Y = k}} - \overline{R}) ^2 \rightarrow + \infty \Rightarrow \exists k, \overline{R|_{Y = k}} >>>> \overline{R}

Soit l’une des propriétés les plus importantes du test de Kruskal-Wallis, à savoir qu’il suffit qu’un rang moyen soit différent de tous les autres pour que le test devienne significatif et rejette H_0.

Il est intéressant de voir le fonctionnement de ce test qui consiste à mesurer l’écart entre les différentes moyennes des rangs et la moyenne global sur la distance de chaque rang d’observation avec la moyenne globale soit la fluctuation de l’échantillon dans un cas parfaitement homogène. Par exemple, le rapport vaut 1 si l’on a autant d’observations pour X que de groupes pour Y.

Le test robuste de Moses:

Conçu par Lincoln E. Moses en 1963, le test robuste de Moses permet une approche similaire au test de Kruskal-Wallis mais cette fois-ci en s’affranchissant de la connaissance sur les paramètres de localisation. L’idée étant de se concentrer sur leur dispersion. A noter que l’approche demeure moins puissante que celles des tests de Klotz ou de Mood.

Le test robuste de Moses se divise en trois étapes :

– La première étape consiste à partitionner les données en C sous-groupes pour les K différents groupes de Y. On obtient donc C \times K partitions de taille: n_{C_1} = \frac{n_1}{C}, \cdots, n_{C_K} = \frac{n_K}{C}. A savoir que les individus ne permettant pas de composer une partition de même taille que les partitions d’un même groupe k sont retirées du processus.

– La seconde étape consiste à calculer la variabilité à l’intérieur du groupe l \in \lbrace 1, \cdots, C \times K \rbrace au travers de la formule :

V_l = \sum_{i = 1} ^{n_{C_l}} (X_{i,l} - \overline{X_l}) ^2

On obtient alors le vecteur V_C = (V_1, \cdots, V_{C \times K}) auquel correspond l’appartenance aux différents K groupes de Y. Ce vecteur sera noté Y_C car de même longueur C \times K que V_C.

– La troisième étape consiste à appliquer le test de Kruskal-Wallis sur (Y_C, V_C). L’approche non paramétrique se justifie car la distribution au sein des V_C |_{Y = k}, \forall k \in [1,K] est inconnue à ce stade de la procédure. De plus, l’étape deux réduit nettement la taille du jeu de données.

La statistique du test robuste de Moses suit la même loi que celle du test de Kruskal-Wallis et l’hypothèse H_0 reste également la même.

\bullet Tendance lorsque n \longrightarrow \infty:

On s’intéresse désormais à la résistance du test de Kruskal-Wallis au fur et à mesure que la taille d’échantillon croît. Ce dernier étant basé sur la loi du \chi ^2 ne faisant pas intervenir n. En toute logique il devrait être protégé de la malédiction des grands échantillons.

Toutefois, on regardant la formule d’usage de la statistique de test on peut être interpellé par les coefficients multiplicateurs (n - 1) et n_k, k \in [1,n] qui, en augmentant, pour des valeurs faibles et stables des \overline{R|_{Y = k}} - \overline{R} vont faire hausser la valeur de H. La conséquence ne sera pas un rejet abusif, étant donné la construction de la loi du \chi ^2 mais du non-rejet de H_0 si n devient trop grand.

Il faudra alors des différences de plus en plus marquées au fur et à mesure que n croît pour que l’on puisse rejeter H_0.

\bullet Annexe théorique:

On propose ici une esquisse de la démonstration de l’égalité :

H = (n - 1) \cdot \frac{\sum_{k = 1} ^K n_k \cdot (\overline{R|_{Y = k}} - \overline{R}) ^2}{\sum_{i = 1} ^n (R_i - \overline{R}) ^2} = \frac{12}{n \cdot (n + 1)} \sum_{k = 1} ^K \frac{\sum_{i = 1} ^{n_k} [(R|_{Y = k})_i] ^2}{n_k} - 3 (n + 1)

On part du principe que l’on a pas d’ex-æquos afin de raccourcir la démonstration. On commence par le dénominateur. Soit,

\sum_{i = 1} ^n [R_i - \overline{R}] ^2 = \sum_{i = 1} ^n R_i ^2 - 2 \overline{R} \cdot \sum_{i = 1} ^n R_i + \overline{R} ^2 \sum_{i = 1} ^n 1

= \frac{(2 n + 1) (n + 1) n}{6} - 2 \frac{\sum_{i = 1} ^n R_i}{n} \frac{n (n + 1)}{2} + [\frac{\sum_{i = 1} ^n R_i}{n}] ^2 n

 = \frac{(2 n + 1) (n + 1) n}{6} - 2 \frac{\frac{n (n + 1)}{2}}{n} \frac{n (n + 1)}{2} + [\frac{\frac{n (n + 1)}{2}}{n}] ^2 n

 = \frac{(2 n + 1) (n + 1) n}{6} - \frac{n (n + 1) ^2}{2} + \frac{n (n + 1) ^2}{4}

 = \frac{n (n + 1)}{12} [2 (2 n + 1) - 6 (n + 1) + 3 (n + 1)]

= \frac{n (n + 1)}{12} [4 n + 2 - 3 n - 3]

= \frac{n (n + 1)}{12} (n - 1)

Et donc,

\Rightarrow H = \frac{12}{n (n + 1) (n - 1)} (n - 1) \sum_{k = 1} ^K n_k [\overline{R|_{Y = k}} - \overline{R}] ^2

= \frac{12}{n \cdot (n + 1)} \sum_{k = 1} ^K n_k [\overline{R|_{Y = k}} - \overline{R}] ^2

Il ne reste plus qu’à développer le terme \sum_{k = 1} ^K n_k [\overline{R|_{Y = k}} - \overline{R}] ^2. Dés lors, on a :

\sum_{k = 1} ^K n_k [\overline{R|_{Y = k}} - \overline{R}] ^2 = \sum_{k = 1} n_k \overline{R|_{Y = k}} ^2 - 2 \overline{R} \sum_{k = 1} ^K n_k \overline{R|_{Y = k}} + \overline{R} ^2 \sum_{k = 1} ^K n_k

 = \sum_{k = 1} ^K n_k [\frac{\sum_{i = 1} ^{n_k} (R|_{Y = k})_i}{n_k}] ^2 - 2 \frac{\sum_{i = 1} ^n R_i}{n} \sum_{k = 1} ^K n_k R|_{Y = k} + [\frac{\sum_{i = 1} ^n R_i}{n}] ^2 n

 = \sum_{k = 1} ^K \frac{[\sum_{i = 1} ^{n_k} (R|_{Y = k})_i] ^2}{n_k} - 2 \frac{\frac{n (n + 1)}{2}}{n} \sum_{k = 1} ^K n_k \sum_{i = 1} ^{n_k} \frac{(R|_{Y = k})_i}{n_k} + [\frac{\frac{n (n + 1)}{2}}{n}] ^2 N

 = \sum_{k = 1} ^K \frac{[\sum_{i = 1} ^{n_k} (R|_{Y = k})_i] ^2}{n_k} - (n + 1) \sum_{k = 1} ^K \sum_{i = 1} ^{n_k} (R|_{Y = k})_i + \frac{n (n + 1) ^2}{4}

 = \sum_{k = 1} ^K \frac{[\sum_{i = 1} ^{n_k} (R|_{Y = k})_i] ^2}{n_k} - (n + 1) \sum_{i = 1} ^n (R|_{Y = k})_i + \frac{n (n + 1) ^2}{4}

 = \sum_{k = 1} ^K \frac{[\sum_{i = 1} ^{n_k} (R|_{Y = k})_i] ^2}{n_k} - \frac{n (n + 1) ^2}{2} + \frac{n (n + 1) ^2}{4}

 = \sum_{k = 1} ^K \frac{[\sum_{i = 1} ^{n_k} (R|_{Y = k})_i] ^2}{n_k} - \frac{1}{4} [2 (n + 1) ^2 n - n (n + 1) ^2]

 = \sum_{k = 1} ^K \frac{[\sum_{i = 1} ^{n_k} (R|_{Y = k})_i] ^2}{n_k} - \frac{1}{4} n (n + 1) ^2

On a donc,

H = \frac{12}{n (n + 1)} \sum_{k = 1} ^K \frac{[\sum_{i = 1} ^{n_k} (R|_{Y = k})_i] ^2}{n_k} - \frac{12}{n (n + 1)} \frac{1}{4} n (n + 1) ^2

 = \frac{12}{n \cdot (n + 1)} \sum_{k = 1} ^K \frac{[\sum_{i = 1} ^{n_k} (R|_{Y = k})_i] ^2}{n_k} - 3 (n + 1)

\bullet Exemple:

Soit la variable aléatoire X suivante:

\begin{tabular}{|c|c|} \hline Y & X \\ \hline A & 8.1472 \\ \hline A & 9.0579 \\ \hline A & 1.2699 \\ \hline A & 9.1338 \\ \hline A & 6.3236 \\ \hline A & 0.9754 \\ \hline A & 2.7850 \\ \hline B & 5.4688 \\ \hline B & 9.5751 \\ \hline B & 9.6489 \\ \hline B & 1.5761 \\ \hline B & 9.7059 \\ \hline B & 9.5717 \\ \hline C & 4.8538 \\ \hline C & 8.0028 \\ \hline C & 1.4189 \\ \hline C & 4.2176 \\ \hline C & 9.1574 \\ \hline C & 7.9221 \\ \hline C & 9.5949 \\ \hline \end{tabular}

Les boxplots suivants offrent une visualisation plus concrète de notre jeu de données :

add

Dans un premier temps, on note qu’aucune valeur de X n’est identique à une autre. La transformation en rangs de X donne le vecteur R suivant :

\begin{tabular}{|c|c|} \hline Y & R \\ \hline A & 12 \\ \hline A & 13 \\ \hline A & 2 \\ \hline A & 14 \\ \hline A & 9 \\ \hline A & 1 \\ \hline A & 5 \\ \hline B & 8 \\ \hline B & 17 \\ \hline B & 19 \\ \hline B & 4 \\ \hline B & 20 \\ \hline B & 16 \\ \hline C & 7 \\ \hline C & 11 \\ \hline C & 3 \\ \hline C & 6 \\ \hline C & 15 \\ \hline C & 10 \\ \hline C & 18 \\ \hline \end{tabular}

Ce qui donne :

\overline{R_{Y = 1}} = 8 et n_1 = 7

\overline{R_{Y = 2}} = 14 et n_1 = 6

\overline{R_{Y = 3}} = 10 et n_1 = 7

\overline{R} = \frac{20 \cdot (20 + 1)}{2} = \frac{21}{2} = 10.5 et N = 20

L’application de la formule de la statistique de test nous donne donc,

H_{obs} = (20 - 1) \times \frac{7 \times (8 - 10.5) ^2 + 6 \times (14 - 10.5) ^2 + 7 \times (10 - 10.5) ^2}{(12 - 10.5) ^2 + \cdots + (18 - 10.5) ^2}

= 19 \times \frac{43.75 + 73.5 + 1.75}{2.25 + \cdots 56.25}

= 19 \times \frac{119}{665}

= 19 \times 0.1789474

= 3.4

On cherche à tester bilatéralement le rejet de l’hypothèse H_0. Sous cette approche, on génère une loi du \chi ^2 à 3 - 1 = 2 degrés de liberté et l’on reporte sur le graphe ci-dessous les valeurs seuils qui correspondent aux quantiles à 20 \%, 10 \%, 5 \% et 1 \% dans le cadre bilatéral,

add2

En se reportant aux valeurs de la table de la loi du \chi ^2 ci-dessus, on constate que,

\chi_{2,20 \%} ^2 < H_{obs} = 3.4 < \chi_{2,10 \%} ^2

Maintenant, on calcul la p-valeur exacte associée à la statistique de test H_{obs} du \chi ^2 dans le cadre bilatéral et pour 3 - 1 = 2 degrés de liberté,

p = 1 - \frac{\gamma(\frac{2}{2},\frac{3.4}{2})}{\Gamma(\frac{2}{2})} = 1 - \frac{0.8173165}{1} = 0.1826835 > 5 \%

On ne pourra pas rejeter H_0 au risque de 5 \% et on en conclut les distributions des différents groupes sont les mêmes au sens statistique du terme.

\bullet Application sous R :

Soit l’exemple suivant :

Y = factor(c(rep(« A »,7),rep(« B »,6),rep(« C »,7)))

X = c(8.1472,9.0579,1.2699,9.1338,6.3236,0.9754,2.7850,5.4688,9.5751
,9.6489,1.5761,9.7059,9.5717,4.8538,8.0028,1.4189,4.2176,9.1574,7.9221,9.5949)

Package et fonction R : https://stat.ethz.ch/R-manual/R-patched/library/stats/html/kruskal.test.html

La fonction kruskal.test du package stats permet d’appliquer le test de Kruskal-Wallis. Le package se charge automatiquement lors du lancement de R.

On lance le test sur un échantillon afin de savoir si les distributions de X restreint aux trois groupes de Y sont différents. On procède de la manière suivante :

kruskal.test(X~Y)

L’unique paramètre à entrer est alors la formule reliant nos deux variables : « X~Y ».

On obtient alors les résultats suivants :

add3

On vérifie :

– La statistique de test :  » Kruskal-Wallis chi-squared = 3.4  » , qui est la même que celle obtenue lors des calculs manuels (cf section « Exemple ») ;

– La p-valeur:  » p-value = 0.1827  » , qui est la même que celle obtenue lors des calculs manuels (cf section « Exemple »).

\bullet Application sous SAS :

Soit l’exemple suivant :

data E;
input Y $1. X;
cards;
A 8.1472
A 9.0579
A 1.2699
A 9.1338
A 6.3236
A 0.9754
A 2.7850
B 5.4688
B 9.5751
B 9.6489
B 1.5761
B 9.7059
B 9.5717
C 4.8538
C 8.0028
C 1.4189
C 4.2176
C 9.1574
C 7.9221
C 9.5949
;
run;

Procédure SAS : http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_npar1way_sect020.htm

On lance le test de Kruskal-Wallis afin de savoir si les différents sous-échantillons de X restreint aux trois groupes de Y ont même distribution. On procède de la manière suivante :

proc npar1way data = E;
var X;
class Y;
ods exclude ANOVA WilcoxonScores MedianScores VWScores SavageScores KSTest ClassMeans MedianAnalysis VWAnalysis SavageAnalysis KSStats CVMTest CVMStats;
run;

Parmi les éléments à insérer les plus importants il faut relever :

– La table contenant nos données : « data = E » ;

– La variable sur laquelle on travaille : « var X » ;

– La variable qualitative permettant de scinder X en des groupes de Y : « class Y » ;

– L’ods output est utilisé afin de filtrer les résultats et n’afficher que ceux dont on a besoin.

On obtient alors les résultats suivants :

add

On vérifie :

– Sur la ligne « Khi-2 » , la statistique de test : « 3,4000  » , qui est la même que celle obtenue lors des calculs manuels (cf section « Exemple ») ;

– Sur la ligne « Pr > Khi-2  » , la p-valeur : « 0.1827 » , qui est la même celle obtenue lors des calculs manuels (cf section « Exemple »).

\bullet Bibliographie:

– Use of ranks in one-criterion variance analysis de William Kruskal et Wilson Allen Wallis

– Statistique, dictionnaire encyclopédique de Yadolah Dodge

– Data Mining et statistique décisionnelle. L’intelligence des données de Stéphane Tufféry

– Rank tests of dispersion de Lincoln E. Moses

– Comparaison de populations, tests non paramétriques de Ricco Rakotomalala