library(rstatix)
data("mice", package = "datarium")
mice %>% get_summary_stats(weight, type = "median_iqr")# A tibble: 1 × 4
variable n median iqr
<fct> <dbl> <dbl> <dbl>
1 weight 10 19.8 1.8
L’alternative non paramétrique au t-test — à un échantillon, somme des rangs (Mann-Whitney) et rangs signés appariés — avec tailles d’effet et p-value sur le graphique
Apprenez à réaliser le test de Wilcoxon dans R avec rstatix — l’alternative non paramétrique au t-test lorsque les données ne suivent pas une loi normale. Couvre les trois formes : le test des rangs signés à un échantillon, le test de la somme des rangs de Wilcoxon (Mann-Whitney) pour deux groupes indépendants, et le test des rangs signés apparié — avec la vérification de l’hypothèse de symétrie, la taille d’effet r et la p-value sur le graphique.
23 juin 2026
17 juillet 2026
wilcox_test() — weight ~ 1, mu = 25 (un échantillon), weight ~ group (indépendant), ou ajoutez paired = TRUE (apparié).wilcox_effsize()) : 0.1 faible, 0.3 modérée, ≥ 0.5 grande.Le test de Wilcoxon compare les groupes à l’aide des rangs plutôt que des moyennes, ce qui en fait l’alternative non paramétrique de référence au t-test lorsque les données ne suivent pas une loi normale, que l’échantillon est petit, ou que la variable est ordinale. Comme le t-test, il existe sous trois formes :
Cette leçon réalise les trois avec rstatix, en utilisant les mêmes jeux de données de démonstration que la leçon sur le t-test, pour que vous puissiez comparer directement les deux approches.
Taille d’échantillon. Le test de Wilcoxon a besoin d’au moins 6 observations (ou paires) pour pouvoir atteindre la significativité — en deçà, la distribution des rangs est trop grossière.
Le test à un échantillon demande si la médiane d’un échantillon diffère d’une valeur connue — l’équivalent non paramétrique du t-test à un échantillon. Nous utilisons le jeu de données mice (poids de 10 souris) et testons par rapport à une référence de 25 g :
# A tibble: 1 × 4
variable n median iqr
<fct> <dbl> <dbl> <dbl>
1 weight 10 19.8 1.8
Hypothèse — symétrie. Le test des rangs signés suppose que les données sont à peu près symétriques autour de la médiane. Vérifiez avec un histogramme (peu de classes pour un petit échantillon) :

Les poids sont approximativement symétriques, le test des rangs signés est donc approprié. Réalisez-le avec weight ~ 1, mu = 25 :
# A tibble: 1 × 6
.y. group1 group2 n statistic p
* <chr> <chr> <chr> <int> <dbl> <dbl>
1 weight 1 null model 10 0 0.00195
Le poids médian (19.8 g) est significativement inférieur à 25 g, p = 0.002. Rapportez la taille d’effet r :
# A tibble: 1 × 6
.y. group1 group2 effsize n magnitude
* <chr> <chr> <chr> <dbl> <int> <ord>
1 weight 1 null model 0.886 10 large
Un r de 0.89 correspond à un effet grand (repères : 0.1 faible, 0.3 modéré, ≥ 0.5 grand).
Le test de la somme des rangs — aussi appelé test U de Mann-Whitney — compare deux groupes indépendants, l’alternative non paramétrique au t-test pour échantillons indépendants. Nous utilisons genderweight (poids de 20 femmes et 20 hommes) :
# A tibble: 2 × 5
group variable n median iqr
<fct> <fct> <dbl> <dbl> <dbl>
1 F weight 20 62.9 2.33
2 M weight 20 86.3 4.59
# A tibble: 1 × 8
.y. group1 group2 n1 n2 statistic p p.signif
<chr> <chr> <chr> <int> <int> <dbl> <dbl> <chr>
1 weight F M 20 20 0 1.45e-11 ****
La médiane des femmes (62.9) et celle des hommes (86.3) diffèrent significativement, p < 0.0001. La taille d’effet :
# A tibble: 1 × 7
.y. group1 group2 effsize n1 n2 magnitude
* <chr> <chr> <chr> <dbl> <int> <int> <ord>
1 weight F M 0.855 20 20 large
Un r de 0.86 — un effet grand. Affichez la p-value sur le graphique :
library(rstatix)
library(ggpubr)
data("genderweight", package = "datarium")
stat.test <- genderweight %>%
wilcox_test(weight ~ group) %>%
add_xy_position(x = "group")
ggboxplot(genderweight, x = "group", y = "weight", add = "jitter",
xlab = "Group", ylab = "Weight", color = "group", palette = "jco") +
stat_pvalue_manual(stat.test, tip.length = 0) +
labs(subtitle = get_test_label(stat.test, detailed = TRUE))
Le test apparié compare deux mesures liées — le t-test apparié non paramétrique. Nous utilisons mice2 (poids de 10 souris avant et après un traitement), réorganisé au format long avec R de base :
library(rstatix)
data("mice2", package = "datarium")
n <- nrow(mice2)
mice2.long <- data.frame(
id = factor(rep(mice2$id, 2)),
group = factor(rep(c("before", "after"), each = n), levels = c("before", "after")),
weight = c(mice2$before, mice2$after)
)
mice2.long %>% group_by(group) %>% get_summary_stats(weight, type = "median_iqr")# A tibble: 2 × 5
group variable n median iqr
<fct> <fct> <dbl> <dbl> <dbl>
1 before weight 10 197. 19.2
2 after weight 10 405 28.3
Hypothèse — symétrie des différences. Le test apparié suppose que les différences avant–après sont symétriques. Vérifiez avec un histogramme des différences :

Réalisez le test apparié avec paired = TRUE :
library(rstatix)
data("mice2", package = "datarium")
n <- nrow(mice2)
mice2.long <- data.frame(
id = factor(rep(mice2$id, 2)),
group = factor(rep(c("before", "after"), each = n), levels = c("before", "after")),
weight = c(mice2$before, mice2$after)
)
stat.test <- mice2.long %>%
wilcox_test(weight ~ group, paired = TRUE) %>%
add_significance()
stat.test# A tibble: 1 × 8
.y. group1 group2 n1 n2 statistic p p.signif
<chr> <chr> <chr> <int> <int> <dbl> <dbl> <chr>
1 weight before after 10 10 0 0.00195 **
# A tibble: 1 × 7
.y. group1 group2 effsize n1 n2 magnitude
* <chr> <chr> <chr> <dbl> <int> <int> <ord>
1 weight before after 0.886 10 10 large
Les poids diffèrent significativement avant vs après le traitement, p = 0.002, avec un effet grand (r = 0.89).
Un test de la somme des rangs de Wilcoxon a montré que le poids différait significativement entre les femmes (médiane = 62.9) et les hommes (médiane = 86.3), p < 0.0001, avec une grande taille d’effet (r = 0.86). [Pour le plan apparié : la médiane du poids des souris différait significativement avant vs après le traitement, p = 0.002, r = 0.89.]
Les tests de Wilcoxon remplacent les valeurs brutes par des rangs. Le test des rangs signés classe les différences absolues par rapport à la référence (ou les différences appariées), leur attache le signe, et somme les rangs positifs ; le test de la somme des rangs regroupe les deux groupes, classe l’ensemble, et somme les rangs d’un groupe. Sous l’hypothèse nulle, la somme des rangs suit une distribution connue, ce qui donne la p-value. La taille d’effet \(r = Z / \sqrt{N}\) convertit la statistique standardisée du test sur une échelle de 0 à 1 (\(N\) = nombre total d’observations, ou nombre de paires).
Réalisez vous-même le test de la somme des rangs et changez le jeu de données ou ajoutez alternative = "less" pour un test unilatéral. Le bac à sable démarre au premier Run.
Demandez à Prova « mes données ne sont pas normales — réalise le bon test de Wilcoxon sur mes deux groupes (indépendants ou appariés), vérifie l’hypothèse de symétrie, et donne-moi la taille d’effet » — elle répond avec du code rstatix que vous pouvez exécuter sur vos propres données. The runtime is the judge. Demander à Prova →
Vous avez utilisé un test pour échantillons indépendants sur des données appariées (ou inversement). Ajoutez paired = TRUE pour des données avant/après ou appariées ; omettez-le pour deux groupes indépendants. Le mauvais choix change entièrement le résultat.
Vos différences ne sont pas symétriques. Le test des rangs signés suppose une distribution symétrique des différences. Si un histogramme montre une asymétrie nette, passez au test des signes, qui ne fait aucune hypothèse de symétrie (au prix d’une certaine puissance).
Vous avez obtenu un avertissement « cannot compute exact p-value with ties ». En présence de valeurs ex æquo, R se rabat sur une approximation normale — c’est attendu et sans conséquence ; la p-value reste valide.
Le t-test compare les moyennes et suppose que les données suivent une loi normale ; le test de Wilcoxon compare les distributions par les rangs et ne fait aucune hypothèse de normalité. Utilisez le test de Wilcoxon lorsque la normalité échoue, que l’échantillon est petit, ou que la variable est ordinale — c’est l’alternative non paramétrique au t-test.
Ce sont deux formes du test de Wilcoxon pour des plans différents. Le U de Mann-Whitney (alias somme des rangs de Wilcoxon) compare deux groupes indépendants ; le test des rangs signés de Wilcoxon compare un échantillon à une valeur de référence (un échantillon) ou deux mesures appariées/liées. Dans rstatix : wilcox_test(y ~ group) vs wilcox_test(y ~ group, paired = TRUE).
Il suppose que les données (un échantillon) ou les différences appariées sont distribuées symétriquement autour de la médiane — vérifiez avec un histogramme. Il ne suppose pas la normalité. Si la distribution est nettement asymétrique, utilisez plutôt le test des signes.
La taille d’effet r issue de wilcox_effsize(), calculée comme Z / √N, interprétée avec les repères de Cohen : 0.1 faible, 0.3 modérée, ≥ 0.5 grande. Rapportez-la aux côtés de la p-value.
weight par group sur genderweight. Remplissez le blanc. La différence est-elle significative ?Remplissez le blanc avec group. Pour deux groupes indépendants, vous n’ajoutez pas paired = TRUE. Pour la question 2, rappelez-vous la forme appariée du test de Wilcoxon et son hypothèse de symétrie.
Pour la question 2 : utilisez le test des rangs signés de Wilcoxon apparié (wilcox_test(weight ~ group, paired = TRUE)), et vérifiez d’abord que les différences avant–après sont symétriques (un histogramme). Si elles sont fortement asymétriques, utilisez le test des signes.
Vous savez désormais réaliser les trois formes du test de Wilcoxon dans R : le test des rangs signés à un échantillon (par rapport à une valeur de référence), le test de la somme des rangs / Mann-Whitney (deux groupes indépendants), et le test des rangs signés apparié — chacun avec wilcox_test(), la vérification de l’hypothèse de symétrie, et la taille d’effet r issue de wilcox_effsize(). C’est l’outil non paramétrique vers lequel se tourner dès que l’hypothèse de normalité du t-test n’est pas satisfaite.
Vous préférez un livre ? Comparing Groups: Numerical Variables est disponible en PDF téléchargeable — toutes les leçons de cette série, hors ligne et à vous.
Prouvez que vous savez le faire. Maîtrisez toute la série Comparaison de deux groupes en R — suivez votre parcours, construisez des projets et obtenez un certificat.
Passez à Pro — Prova illimité sur vos propres données et un certificat vérifiable qui atteste la compétence.
dès 15 $/mois facturé annuellement
✓ Vous êtes Pro — continuez. The runtime is the judge.
Prêt à passer à la vitesse supérieure ?
Recevez les nouvelles leçons R & Python par e-mail
Pratique, reproductible, sans spam. Désinscription à tout moment.
Double opt-in. Nous ne partageons jamais votre e-mail.
Chaque résultat de cette page a été produit par le code montré, exécuté au moment du build contre un environnement R figé — modifiez n’importe quel bloc et faites Run pour le reproduire vous-même.
@online{2026,
author = {},
title = {Test de Wilcoxon dans R : comparaison non paramétrique},
date = {2026-06-23},
url = {https://www.datanovia.com/learn/biostatistics/two-groups/wilcoxon-test-in-r},
langid = {fr}
}