Quantifier la différence entre deux groupes avec l’estimateur de Hodges-Lehmann

Lorsqu’on réalise des analyses statistiques, et que l’on cherche à comparer deux groupes, on commence généralement par évaluer la significativité de la différence.

Puis dans un second temps, on se dit que ça serait bien aussi de quantifier cette différence !

Or en pratique cela n’est pas toujours simple, notamment lorsqu’on emploie le test non paramétrique de Wilcoxon.

Mais, dans cette situation, on peut en réalité employer l’estimateur de Hodges-Lehmann, ainsi que son intervalle de confiance à 95%.

C’est ce que je propose de vous montrer en pas à pas dans cet article.

Table des matières

L’estimateur de Hodges-Lehmann

Contrairement aux tests paramétriques comme le test t de Student, le test de Wilcoxon ne repose pas sur des estimations de moyennes ou de variances, mais utilise les rangs des données, ce qui le rend plus robuste en présence de données atypiques ou de distributions non normales.

L’estimateur de Hodges-Lehmann offre alors une solution pour estimer l’ampleur de la différence entre deux groupes, permettant de compléter les résultats du test de Wilcoxon.

Cet estimateur de Hodges-Lehmann permet de fournir une mesure centrale de la différence entre deux populations, en calculant la médiane des différences entre toutes les paires possibles d’observations provenant des deux groupes.

Cette méthode d’estimation est particulièrement robuste car elle est moins influencée par les valeurs aberrantes et les distributions non symétriques, ce qui permet une représentation plus fiable de la différence réelle entre les groupes.

L’utilisation de l’estimateur de Hodges-Lehmann permet ainsi de quantifier l’effet d’un traitement ou d’une intervention, en fournissant un seul chiffre qui résume l’ampleur de l’effet.

De plus, l’interprétation de cet estimateur est simple car la valeur obtenue peut être directement comprise comme la différence médiane typique entre les groupes, ce qui permet de communiquer facilement des résultats, notamment aux publics non spécialistes.

Calcul de l'estimateur de Hodges-Lehmann : exemple chiffré

Supposons que vous analysiez l’effet d’un médicament sur la pression artérielle. Après avoir administré le traitement à un groupe et un placebo à un autre, vous souhaitez évaluer la significativité de la différence de la pression artérielle entre les deux groupes, mais également la quantifier. Et que vous devez employer le test non paramétrique de Wilcoxon parce que les données ne suivent pas une loi normale.

Generation des data

# Données pour les deux groupes
Trt <- c(5.14, 2.24, 5.43, 0.70, 1.54, 2.25, 2.85, 1.83, 2.31, 2.14, 4.44, 1.42, 0.07, 2.66, 6.65)
Placebo <- c(0.61, 6.80, 6.56, 1.14, 0.29, 5.72, 5.63, 0.97, 0.64, 1.64, 1.74, 0.50, 2.11, 1.14, 3.33)


# Assemblage dans un data frame
mydata <- data.frame(Response = c(Trt,Placebo), Group=rep(c("Trt", "Placebo"), each=15)) 

Visualisation

library(ggplot2)
ggplot(mydata, aes(x=Group, y=Response, colour=Group))+
    geom_jitter(width=0.15, height=0)+
    geom_boxplot(alpha=0.5, outlier.alpha = 0) 

Quantifier la différence avec l’estimateur de Hodges-Lehmann

Nous pouvons commencer par calculer les médianes des valeurs dans chacun des groupes, puisque celles-ci ne sont pas retournées par la fonction wilcox.test():

tapply(mydata$Response, mydata$Group, median)

# Placebo     Trt 
#   1.64    2.25  

La médiane du groupe Placebo est égale à 1.64 et celle du groupe Traitement à 2.25.

En revanche, la fonction wilcox.test() peut fournir l’estimateur de Hodges-Lehmann, en sortie (nommé difference in location). Pour cela, il est nécessaire d’utiliser l’argument conf.int = TRUE:

wilcox_test_result <- wilcox.test(Trt,Placebo, conf.int = TRUE)
wilcox_test_result
Wilcoxon rank sum test with continuity correction

#data:  Trt and Placebo
#vW = 134, p-value = 0.3837
# alternative hypothesis: true location shift is not equal to 0
#95 percent confidence interval:
# -1.070065  1.640086
#sample estimates:
#difference in location 
#              0.569948  

Finalement, nous pouvons exprimer les résultats, comme ceci, par exemple :

« la médiane des pressions artérielles est de 2.25 dans le groupe traitement et de 1.64 dans le groupe Placebo. La différence typique des pressions entre les deux groupes,  estimée par l’estimateur de Hodges-Lehmann, est de 0,57, avec un intervalle de confiance à 95 % de [-1,07, 1,64]. Le test de Wilcoxon ne permet pas de mettre en évidence une différence significative entre ces deux médianes (W=134, p-value =0,384). »

Quantifier la différence dans une approche paramétrique (test t de Student)

Et si nous étions dans une démarche paramétrique ?

Dans cette situation, nous pourrions quantifier simplement la différence entre les deux groupes par la différence des moyennes. La sortie de la fonction t.test() fournit cette différence, ainsi que son intervalle de confiance.

# Test t et différence moyenne avec intervalle de confiance
t_test_result <- t.test(Trt, Placebo, var.equal = TRUE)
t_test_result


#    Two Sample t-test
#
# data:  Trt and Placebo
# t = 0.24466, df = 28, p-value = 0.8085
# alternative hypothesis: true difference in means is not equal to 0
# 95 percent confidence interval:
#  -1.400738  1.780738
# sample estimates:
# mean of x mean of y 
#     2.778     2.588  

Les résultats pourraient être présentés comme ceci , par exemple :

« Le groupe Traitement présente une pression artérielle moyenne de 2.78, tandis que le groupe Placebo présente une moyenne de 2.59. La différence de moyenne entre ces deux groupes est de 0.19, avec un intervalle de confiance égal à [-1,40, 1,78]. Le test t de Student ne permet pas de conclure que cette différence est significative (t(28) = 0.24, pvalue = 0.809).« 

Pour aller plus loin :

Calcul de l’estimateur de Hodges-Lehmann manuellement

Comme expliqué précédemment, l’estimateur de Hodges-Lehmann est basé sur la médiane de toutes les différences possibles entre les paires d’observations des deux groupes.

La ligne de commande suivante permet de calculer toutes les différences possibles entre les éléments des deux vecteurs “Trt” et “Placebo.”

all_diffs <- outer(Trt, Placebo, "-") 

Plus précisément, la fonction outer applique une opération spécifiée à toutes les paires d’éléments provenant de deux vecteurs. Dans ce cas, l’opération est la soustraction (“-”).

Le résultat, all_diffs, est une matrice où chaque cellule représente la différence entre un élément de “Trt” et un élément de “Placebo”.

all_diffs


#      [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] [,10] [,11] [,12] [,13] [,14] [,15]
# [1,]  4.53 -1.66 -1.42  4.00  4.85 -0.58 -0.49  4.17  4.50  3.50  3.40  4.64  3.03  4.00  1.81
# [2,]  1.63 -4.56 -4.32  1.10  1.95 -3.48 -3.39  1.27  1.60  0.60  0.50  1.74  0.13  1.10 -1.09
# [3,]  4.82 -1.37 -1.13  4.29  5.14 -0.29 -0.20  4.46  4.79  3.79  3.69  4.93  3.32  4.29  2.10
# [4,]  0.09 -6.10 -5.86 -0.44  0.41 -5.02 -4.93 -0.27  0.06 -0.94 -1.04  0.20 -1.41 -0.44 -2.63
# [5,]  0.93 -5.26 -5.02  0.40  1.25 -4.18 -4.09  0.57  0.90 -0.10 -0.20  1.04 -0.57  0.40 -1.79
# [6,]  1.64 -4.55 -4.31  1.11  1.96 -3.47 -3.38  1.28  1.61  0.61  0.51  1.75  0.14  1.11 -1.08
# [7,]  2.24 -3.95 -3.71  1.71  2.56 -2.87 -2.78  1.88  2.21  1.21  1.11  2.35  0.74  1.71 -0.48
# [8,]  1.22 -4.97 -4.73  0.69  1.54 -3.89 -3.80  0.86  1.19  0.19  0.09  1.33 -0.28  0.69 -1.50
# [9,]  1.70 -4.49 -4.25  1.17  2.02 -3.41 -3.32  1.34  1.67  0.67  0.57  1.81  0.20  1.17 -1.02
# [10,]  1.53 -4.66 -4.42  1.00  1.85 -3.58 -3.49  1.17  1.50  0.50  0.40  1.64  0.03  1.00 -1.19
# [11,]  3.83 -2.36 -2.12  3.30  4.15 -1.28 -1.19  3.47  3.80  2.80  2.70  3.94  2.33  3.30  1.11
# [12,]  0.81 -5.38 -5.14  0.28  1.13 -4.30 -4.21  0.45  0.78 -0.22 -0.32  0.92 -0.69  0.28 -1.91
# [13,] -0.54 -6.73 -6.49 -1.07 -0.22 -5.65 -5.56 -0.90 -0.57 -1.57 -1.67 -0.43 -2.04 -1.07 -3.26
# [14,]  2.05 -4.14 -3.90  1.52  2.37 -3.06 -2.97  1.69  2.02  1.02  0.92  2.16  0.55  1.52 -0.67
# [15,]  6.04 -0.15  0.09  5.51  6.36  0.93  1.02  5.68  6.01  5.01  4.91  6.15  4.54  5.51  3.32 

Cette matrice est ensuite utilisée pour calculer l’estimateur de Hodges-Lehmann, qui est la médiane de toutes ces différences.

hl_manual_estimate <- median(all_diffs)
hl_manual_estimate
# [1] 0.57 

Nous retrouvons bien le résultat fourni par la fonction wilcox.test().

Estimateur de Hodges-Lehman, lorsque les données sont appariées

Lorsque les données sont appariées, le test de Wilcoxon apparié renvoie un estimateur nommé pseudo median, qui est également l’estimateur de Hodges-Lehmann.

wilcox.test(Trt,Placebo,conf.int = TRUE, paired =TRUE)


#    Wilcoxon signed rank exact test

# data:  Trt and Placebo
# V = 66, p-value = 0.7615
# alternative hypothesis: true location shift is not equal to 0
# 95 percent confidence interval:
# -1.275  1.670
# sample estimates:
# (pseudo)median 
#          0.27  

Je n’ai pas réussi à reproduire exactement les résultats par une démarche « manuelle » en pas à pas.

Estimateur de Hodges-Lehmann : problème de calculs ?

En faisant des recherches sur l’estimateur de Hodges-Lehmann, je suis tombée sur cet article « Unobvious problems of using the R’s implementation of the Hodges-Lehmann estimator » qui pointent des problèmes de calculs dans plusieurs situations.

Conclusion

Comme nous l’avons vu, l’estimateur de Hodges-Lehmann offre une méthode robuste pour quantifier l’ampleur de la différence entre deux groupes, particulièrement dans les situations où les données ne suivent pas une distribution normale.

La capacité de l’estimateur de Hodges-Lehmann à fournir une mesure centrale de la différence, moins influencée par les valeurs aberrantes et les distributions non symétriques, en fait un outil précieux pour les analyses statistiques.

Il complète utilement les résultats du test de Wilcoxon, en fournissant non seulement une indication sur la significativité de la différence entre les groupes, mais aussi une mesure concrète de cette différence.

Et vous, est ce que vous connaissiez cet estimateur de Hodges-Lehmann ?

Dites le moi en commentaire

Vous souhaitez vous former à R, ou aux statistiques ?

Retrouver le planning et les programmes de  mes formations ici  👇👇👇 

Vous avez besoin d'un assitance pour analyser vos données ?

Retrouver mes propositions de services ici  👇👇👇 

7 Responses

  1. Bonjour, félicitations pour tout ce travail bloguesque, très bon estimateur pour les couples non appariés. L’estimateur de type bayesien dans Bayesboot permet également d’évaluer très précisément cet écart, et fournit un Intervalle de confiance qui permet de se séparer des tests statistiques pour conclure.

  2. Bonjours !!
    Madame, vraiment je vous aime très bien, j’aimerais vraiment investir dans votre blog mais hélas le moyen me manque,car moi aussi je suis licencié en bioinformatique et biostatistique.

  3. Bonsoir Claire
    Merci pour ce billet.
    Je suis en ce moment très accaparé par la mise au point d’une interface Shiny pour la saisie de données que je n’ai pas sous forme numérique. Pas aussi simple qu’attendue.
    Mais je mets de coté ces techniques pour de futurs usages.
    Bonnes fêtes de fin d’année. On se retrouve en 2024

  4. Merci beacoup madame pour le bon travail scientifique, merci aussi pour la formation en R promise. Le reste c’est de nous informer avec plus de détails les modalités possibles nous permettant de bien suivre cette formation

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous souhaitez soutenir mon travail ?​

C’est possible en faisant un don  sur la page Tipeee du blog  👇👇👇

Poursuivez votre lecture

Aide mémoire off'R ;)

Enregistrez vous pour recevoir gratuitement mes fiches « aide mémoire » (ou cheat sheets) qui vous permettront de réaliser facilement les principales analyses biostatistiques avec le logiciel R et pour être informés des mises à jour du site.