Test des signes en R : comparer des médianes appariées sans hypothèse

Le test apparié le plus libre de toute hypothèse — comparez les médianes de deux groupes liés lorsque les différences ne sont ni normales ni symétriques

Apprenez à exécuter le test des signes en R avec rstatix — l’alternative sans hypothèse au t-test apparié et au test des rangs signés de Wilcoxon pour comparer deux groupes appariés lorsque la distribution des différences n’est ni normale ni symétrique. Calculez le test, interprétez le résultat et affichez la p-value sur le graphique. Modifiez et exécutez en direct.

Date de publication

23 juin 2026

Modifié

7 juillet 2026

AstucePoints clés
  • Le test des signes compare les médianes de deux groupes appariés et ne fait aucune hypothèse sur la forme de la distribution — pas même la symétrie.
  • C’est le recours lorsque le t-test apparié (exige des différences normales) et le test des rangs signés de Wilcoxon (exige des différences symétriques) sont tous deux inappropriés.
  • Exécutez-le avec rstatix sign_test(weight ~ group) sur des données appariées au format long.
  • Il compte seulement combien de différences sont positives ou négatives, il est donc moins puissant — préférez le test de Wilcoxon lorsque les différences sont symétriques.
Obtenez le livre — Comparing Groups: Numerical Variables (PDF)

Introduction

Le test des signes compare les médianes d’observations appariées ou couplées en ne regardant que le signe de la différence de chaque paire (a-t-elle augmenté ou diminué ?). Parce qu’il ignore la taille des différences, il ne fait aucune hypothèse de distribution — la plus robuste, et la moins puissante, des comparaisons appariées.

Il se situe au bas de l’échelle des tests appariés : utilisez le t-test apparié lorsque les différences sont normales, le test des rangs signés de Wilcoxon apparié lorsqu’elles sont au moins symétriques, et le test des signes lorsque même la symétrie fait défaut. Cette leçon l’exécute avec rstatix sur le jeu de données avant/après mice2.

Note

Hypothèses du test des signes. H₀ : la médiane des différences appariées = 0 (aucun changement). Hₐ : la médiane des différences appariées ≠ 0. Le test compte les différences positives et négatives et les compare à une répartition 50/50 sous l’hypothèse nulle.

Les données : poids de souris avant et après

Nous utilisons mice2 de datarium — le poids de 10 souris avant et après un traitement — remis 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

Une boîte à moustaches appariée relie les deux mesures de chaque souris :

library(rstatix)
library(ggpubr)

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)
)

ggpaired(mice2.long, x = "group", y = "weight", order = c("before", "after"),
         ylab = "Weight", xlab = "Groups")

A paired box plot of mouse weight before and after treatment, with a line joining each mouse's two measurements; nearly every line rises, indicating a consistent increase.

Exécuter le test des signes

sign_test() prend la même formule weight ~ group que le test de Wilcoxon apparié :

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 %>%
  sign_test(weight ~ group) %>%
  add_significance()
stat.test
# A tibble: 1 × 9
  .y.    group1 group2    n1    n2 statistic    df       p p.signif
  <chr>  <chr>  <chr>  <int> <int>     <dbl> <dbl>   <dbl> <chr>   
1 weight before after     10    10         0    10 0.00195 **      

La médiane du poids avant traitement diffère significativement de celle d’après, p = 0.002 — le traitement a modifié le poids.

L’afficher avec la p-value

library(rstatix)
library(ggpubr)

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 %>%
  sign_test(weight ~ group) %>%
  add_xy_position(x = "group")

ggpaired(mice2.long, x = "group", y = "weight", order = c("before", "after"),
         ylab = "Weight", xlab = "Groups") +
  stat_pvalue_manual(stat.test, tip.length = 0) +
  labs(subtitle = get_test_label(stat.test, detailed = TRUE))

A paired box plot of mouse weight before and after treatment with joining lines and the sign-test p-value printed above the two conditions.

Rapport

La médiane du poids des souris avant traitement était significativement différente de la médiane du poids après traitement, telle qu’évaluée par un test des signes, p = 0.002.

Le test des signes réduit chaque paire à un + ou un selon le sens de sa différence (les ex æquo sont écartés). Sous l’hypothèse nulle d’« aucun changement », le nombre de signes + suit une loi binomiale(n, 0.5) — la même que le décompte de faces lors de lancers d’une pièce équilibrée. La p-value est la probabilité binomiale d’une répartition au moins aussi extrême que celle observée. Écarter les amplitudes est précisément la raison pour laquelle le test ne fait aucune hypothèse de distribution et pour laquelle il est moins puissant que le test de Wilcoxon.

Essayez en direct

Exécutez vous-même le test des signes et comparez-le au test de Wilcoxon apparié sur les mêmes données — la p-value du test des signes est généralement un peu plus grande (moins de puissance). Le bac à sable démarre au premier Run.

🟢 Avec un agent IA

Demandez à Prova « mes différences appariées avant/après sont asymétriques et présentent une asymétrie — exécute un test des signes sur mes données et dis-moi si le changement est significatif » — elle répond avec du code rstatix que vous pouvez exécuter sur vos propres données. The runtime is the judge. Demander à Prova →

Problèmes courants

Vous avez utilisé le test des signes alors que le test de Wilcoxon aurait convenu. Le test des signes écarte la taille de chaque différence, il est donc moins puissant. Si un histogramme des différences est raisonnablement symétrique, préférez le test des rangs signés de Wilcoxon plus puissant ; réservez le test des signes aux différences nettement asymétriques.

Vos données ne sont pas appariées. Le test des signes est réservé aux observations appariées/couplées. Pour deux groupes indépendants, utilisez plutôt le test de la somme des rangs de Wilcoxon (Mann-Whitney).

Questions fréquentes

Le test des signes compare les médianes de deux groupes appariés (couplés) — par exemple, les mêmes sujets mesurés avant et après un traitement. Il s’utilise lorsque la distribution des différences appariées n’est ni normale ni symétrique, de sorte que ni le t-test apparié ni le test des rangs signés de Wilcoxon ne s’appliquent.

Tous deux comparent deux groupes appariés, mais le test des rangs signés de Wilcoxon utilise les rangs des amplitudes des différences (et suppose que les différences sont symétriques), tandis que le test des signes n’utilise que le sens de chaque différence (et ne suppose rien sur la distribution). Le test des signes est plus robuste mais moins puissant — préférez Wilcoxon lorsque les différences sont symétriques.

Non — c’est sa caractéristique déterminante. Il exige seulement que les paires soient indépendantes les unes des autres. Parce qu’ il écarte l’amplitude des différences et n’en conserve que le signe, il ne fait aucune hypothèse de normalité ou de symétrie, au prix de la puissance statistique.

Testez vos connaissances

  1. Exécutez-le. Dans la cellule interactive, exécutez un test des signes de weight par group sur les données appariées mice2. Complétez le blanc. Le changement est-il significatif ?
  2. Conceptuel. Vos différences appariées sont fortement asymétriques à droite (asymétriques). Pourquoi le test des signes est-il préférable au test des rangs signés de Wilcoxon ici, et que perdez-vous en l’utilisant ?

Complétez le blanc avec group. Pour la question 2, rappelez-vous que le test de Wilcoxon suppose des différences symétriques tandis que le test des signes ne suppose rien — mais utilise moins d’information.

mice2.long %>% sign_test(weight ~ group)
#> p = 0.002 — the before/after change is significant.

Pour la question 2 : le test des rangs signés de Wilcoxon suppose que les différences sont symétriques, ce qui échoue pour des données fortement asymétriques, de sorte que le test des signes (sans hypothèse de symétrie) est valide là où Wilcoxon ne l’est pas. Ce que vous perdez, c’est de la puissance — le test des signes ignore la taille de chaque différence, il lui faut donc un effet plus grand ou plus net pour atteindre la significativité.

AstuceQuel test, quand ?
  • Données appariées, différences normalest-test apparié.
  • Données appariées, différences symétriques (non normales)rangs signés de Wilcoxon.
  • Données appariées, différences asymétriquestest des signes (cette leçon).
  • Trois groupes appariés ou plustest de Friedman.

Conclusion

Vous savez maintenant exécuter le test des signes en R avec sign_test(weight ~ group) — la comparaison appariée la plus libre de toute hypothèse, pour les cas où la distribution des différences n’est ni normale ni symétrique. Il échange de la puissance contre de la robustesse, ne l’employez donc que lorsque le t-test apparié et le test des rangs signés de Wilcoxon sont tous deux écartés ; sinon, préférez le test de Wilcoxon plus puissant.

Leçons connexes

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.

Obtenir le livre (PDF) →Les leçons restent gratuites en ligne.
Cette page vous a-t-elle été utile ?

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.

Commencer gratuitement →

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

Passer à Pro →

✓ Vous êtes Pro — continuez. The runtime is the judge.

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.

Partager cette pageXLinkedInRedditHN
Note

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.

Réutilisation

Citation

BibTeX
@online{2026,
  author = {},
  title = {Test des signes en R : comparer des médianes appariées sans
    hypothèse},
  date = {2026-06-23},
  url = {https://www.datanovia.com/learn/biostatistics/two-groups/sign-test-in-r},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“Test des signes en R : comparer des médianes appariées sans hypothèse.” 2026. June 23. https://www.datanovia.com/learn/biostatistics/two-groups/sign-test-in-r.