Accéder au contenu principal

Test de Mann-Whitney U : alternative non paramétrique au t-test

Le test de Mann-Whitney U est un test non paramétrique basé sur les rangs pour comparer deux groupes indépendants lorsque les données ne respectent pas l’hypothèse de normalité requise par le t-test.
Actualisé 4 mai 2026  · 10 min lire

Vous avez déjà lancé un t-test, obtenu une p-valeur étrange, puis découvert que vos données étaient loin d’être normalement distribuées ?

Cela arrive à tout le monde tôt ou tard. Le problème du t-test, c’est qu’il suppose que vos données suivent une loi normale. Quand ce n’est pas le cas, les résultats peuvent induire en erreur. Une distribution asymétrique et de petits échantillons violent cette hypothèse de normalité. Et, dans la vraie vie, les données se comportent rarement comme dans les manuels.

Le test de Mann-Whitney U vient corriger le tir. C’est une alternative non paramétrique au t-test qui compare deux groupes à partir des rangs plutôt que des moyennes : la forme de la distribution ne l’handicape donc pas.

Dans cet article, nous verrons ce qu’est le test de Mann-Whitney U, quand l’utiliser, comment il fonctionne mathématiquement, et comment l’exécuter et l’interpréter en Python et en R.

Mais au fait, qu’est-ce qu’un t-test ? Si vous vous posez la question, lisez notre article Introduction to Python T-Tests : il répondra à toutes vos questions.

Qu’est-ce que le test de Mann-Whitney U ?

Le test de Mann-Whitney U est un test statistique non paramétrique utilisé pour comparer deux groupes indépendants.

Contrairement au t-test, il ne suppose pas que vos données suivent une loi normale. Il compare les distributions de deux groupes en convertissant les valeurs brutes en rangs et en les analysant. C’est donc un bon choix si vos données sont asymétriques, contiennent des valeurs aberrantes, ou ne respectent pas l’hypothèse de normalité d’une autre manière.

Vous le verrez aussi sous le nom de test des rangs de Wilcoxon. Dans la pratique, ce sont des synonymes.

Quand utiliser le test de Mann-Whitney U

Le test de Mann-Whitney U nécessite un certain nombre de conditions. Ne l’utilisez que si toutes sont réunies :

  • Deux groupes indépendants : les échantillons ne se recoupent pas et les valeurs d’un groupe n’influencent pas celles de l’autre
  • Données ordinales ou continues : par exemple des notes de test, des temps de réponse ou toute mesure quantitative
  • Distribution non normale : données asymétriques, à queues épaisses, ou impossibilité de confirmer la normalité avec un petit échantillon
  • Petites tailles d’échantillon : lorsque vous n’avez pas assez de données pour vous reposer sur le théorème central limite

Voyons un exemple.

Supposons que vous ayez deux classes enseignées avec des méthodes différentes et que vous souhaitiez savoir laquelle a obtenu les meilleurs résultats à l’examen. Vous tracez les notes et constatez qu’elles ne sont pas normalement distribuées : une classe présente quelques valeurs aberrantes qui tirent la distribution vers la droite. Le t-test compare les moyennes de groupe ; ces valeurs extrêmes font monter la moyenne et donnent l’impression qu’une classe est meilleure qu’elle ne l’est réellement.

Cette moyenne biaisée entre dans le calcul du t-test, et la p-valeur obtenue ne reflète pas la différence entre les groupes. Le test de Mann-Whitney U n’a pas ce problème, car il travaille sur des rangs plutôt que sur des valeurs brutes. Une valeur aberrante ne peut être que la valeur la mieux classée : elle ne déforme donc pas le résultat comme le ferait une moyenne.

C’est aussi un réflexe utile avec des données ordinales, comme des réponses d’enquête sur une échelle de 1 à 5. Ces valeurs ne sont pas vraiment continues, calculer une moyenne n’a donc pas beaucoup de sens.

Formule du test de Mann-Whitney U

Le test produit deux statistiques U, une par groupe. Voici la formule :

Mann-Whitney u test formula

Formule du test de Mann-Whitney U

Où :

  • n1 et n2 sont les tailles d’échantillon des groupes 1 et 2

  • R1 et R2 sont les sommes des rangs pour chaque groupe : la somme de tous les rangs attribués aux observations de chaque groupe

La somme des rangs se calcule en combinant toutes les valeurs des deux groupes, en les triant de la plus petite à la plus grande, puis en attribuant un rang à chaque valeur. La plus petite reçoit le rang 1, la suivante le rang 2, etc. On additionne ensuite séparément les rangs appartenant à chaque groupe.

La statistique de test est le plus petit de U1 et U2. On la compare ensuite à une valeur critique ou on l’utilise pour calculer une p-valeur.

La bonne nouvelle, c’est que vous n’avez pas à faire ce calcul à la main. Python et R s’en chargent pour vous, comme nous allons le voir.

Hypothèses du test de Mann-Whitney U

Le test de Mann-Whitney U est plus souple que le t-test, mais il repose tout de même sur trois hypothèses à respecter :

  • Échantillons indépendants : les deux groupes ne s’influencent pas. Les observations d’un groupe n’ont pas de relation avec celles de l’autre
  • Données ordinales ou continues : les données doivent avoir un ordre naturel : on peut dire qu’une valeur est supérieure ou inférieure à une autre
  • Formes de distribution similaires : si vous souhaitez interpréter les résultats comme une comparaison de médianes, les deux groupes doivent présenter des distributions de forme globalement similaire. Si les formes diffèrent, le test reste valable, mais vous comparez des rangs moyens plutôt que des médianes

La troisième hypothèse est souvent source de confusion.

On présente souvent le test de Mann-Whitney U comme un test des médianes, mais ce n’est vrai que lorsque les deux distributions ont une forme similaire. Sinon, le résultat dit quelque chose de plus général : les valeurs d’un groupe ont tendance à être plus élevées que celles de l’autre.

Test de Mann-Whitney U en Python

Le module scipy.stats de Python propose une fonction pour le test de Mann-Whitney U. Voici un exemple simple avec des notes d’examen de deux classes.

from scipy.stats import mannwhitneyu

class_a = [72, 85, 90, 65, 78, 88, 95, 70, 83, 76]
class_b = [60, 55, 74, 68, 80, 58, 63, 71, 66, 59]

stat, p_value = mannwhitneyu(class_a, class_b, alternative="two-sided")

print(f"U statistic: {stat}")
print(f"P-value: {p_value:.4f}")

Mann-Whitney u test in Python

Test de Mann-Whitney U en Python

L’argument alternative="two-sided" indique que vous testez une différence potentielle dans les deux sens. Vous ne supposez pas a priori qu’un groupe surpasse l’autre. Si vous aviez une hypothèse directionnelle, vous utiliseriez "less" ou "greater" à la place.

Ici, la p-valeur est de 0,0046, en dessous du seuil usuel de 0,05. Vous pouvez donc rejeter l’hypothèse nulle : il existe une différence statistiquement significative entre les distributions de notes des deux classes.

La statistique U, prise isolément, dit peu de choses sans contexte. Focalisez-vous sur la p-valeur pour juger de la significativité, puis regardez les données brutes ou les médianes pour comprendre le sens de la différence.

Test de Mann-Whitney U en R

R exécute le test de Mann-Whitney U avec la fonction wilcox.test(). Nous reprenons l’exemple des notes ci-dessus.

class_a <- c(72, 85, 90, 65, 78, 88, 95, 70, 83, 76)
class_b <- c(60, 55, 74, 68, 80, 58, 63, 71, 66, 59)

wilcox.test(class_a, class_b, alternative = "two.sided")

Mann-Whitney u test in R

Test de Mann-Whitney U en R

La statistique W correspond à la statistique U : R l’étiquette simplement autrement. L’interprétation est la même qu’en Python : une p-valeur de 0,0029 est inférieure à 0,05, il existe donc une différence statistiquement significative entre les deux groupes.

Vous pouvez également voir un avertissement au sujet d’ex æquo (ties) dans vos données.

Cela se produit lorsque deux valeurs ou plus sont identiques entre les groupes, ce qui affecte l’attribution des rangs. R gère ce cas, mais si vous avez beaucoup d’ex æquo, vérifiez que vos données respectent bien les hypothèses du test.

Comment interpréter les résultats du test de Mann-Whitney U

L’hypothèse nulle du test de Mann-Whitney U est que les deux groupes proviennent de la même distribution : autrement dit, qu’il n’y a pas de différence entre eux. Votre objectif est de trouver des éléments qui la contredisent.

La p-valeur sert à cela :

  • p < 0,05 : vous rejetez l’hypothèse nulle. Les deux groupes sont distribués différemment et la différence est statistiquement significative
  • p >= 0,05 : vous n’avez pas suffisamment d’éléments pour rejeter l’hypothèse nulle. Cela ne signifie pas que les groupes sont identiques, seulement que les données ne montrent pas de différence nette

N’oubliez pas que le test de Mann-Whitney U compare des distributions. Un résultat significatif indique que les valeurs d’un groupe tendent à être mieux classées que celles de l’autre – pas que la moyenne est plus élevée. Pour décrire le sens de la différence, regardez les médianes de chaque groupe, pas les moyennes.

Test de Mann-Whitney U vs t-test

Ces deux tests répondent au même besoin (comparer deux groupes) mais différemment, et un mauvais choix impactera vos résultats.

t-test

Le t-test compare les moyennes de deux groupes. Il repose sur l’hypothèse de normalité des données et, lorsque celle-ci est vérifiée, c’est un bon test.

Le point faible, c’est justement cette hypothèse. Si vos données sont asymétriques ou issues d’un petit échantillon pour lequel la normalité est difficile à confirmer, les résultats du t-test peuvent devenir peu fiables. La moyenne est tirée par les valeurs extrêmes, et la p-valeur en porte la trace.

Utilisez le t-test lorsque :

  • vos données sont normalement distribuées
  • vous disposez d’un échantillon suffisamment grand
  • vous travaillez sur des données continues sans forte asymétrie ni valeurs aberrantes

Test de Mann-Whitney U

Le test de Mann-Whitney U compare des distributions plutôt que des moyennes. Il classe l’ensemble des valeurs des deux groupes et vérifie si l’un se classe systématiquement plus haut que l’autre. Comme il travaille sur des rangs, les valeurs aberrantes et l’asymétrie ne faussent pas le résultat de la même manière.

Lorsque vos données sont effectivement normales, le t-test détectera les différences avec plus de fiabilité. Le test de Mann-Whitney U est plus flexible, mais vous perdez un peu en sensibilité.

Utilisez le test de Mann-Whitney U lorsque :

  • vos données ne sont pas normalement distribuées
  • vous travaillez avec des données ordinales
  • vous avez un petit échantillon et ne pouvez pas confirmer la normalité
  • des valeurs aberrantes sont présentes et vous ne pouvez pas les exclure

Voici une comparaison rapide des deux :

t-test compared to Mann-Whitney U test

t-test comparé au test de Mann-Whitney U

En cas de doute, examinez d’abord votre distribution. Si elle est à peu près normale, privilégiez le t-test. Sinon, le test de Mann-Whitney U est le choix le plus sûr.

Erreurs fréquentes avec le test de Mann-Whitney U

La plupart des erreurs viennent d’une mauvaise compréhension de ce que fait réellement ce test. Voici les plus courantes.

Penser qu’il compare des moyennes

C’est l’erreur n°1. Le test de Mann-Whitney U compare des distributions, pas des moyennes. Un résultat significatif indique que les valeurs d’un groupe ont tendance à être mieux classées – pas que la moyenne est supérieure. Pour décrire la différence, rapportez les médianes, pas les moyennes.

Ignorer des différences de forme de distribution

Si les deux groupes ont des formes de distribution différentes – l’un est asymétrique à droite, l’autre est symétrique – vous ne pouvez pas interpréter le résultat comme une comparaison de médianes. Le test s’exécute, mais la sortie met en évidence une différence globale de distributions, pas un simple décalage du centre. Vérifiez les distributions avant de conclure sur les médianes.

Mal interpréter les p-valeurs

Une p-valeur inférieure à 0,05 signifie que la différence est statistiquement significative. Elle ne dit rien de l’ampleur de la différence ni de sa portée pratique. Un très grand échantillon peut produire une p-valeur significative même si l’écart réel entre groupes est minime. Si la taille d’effet compte, calculez-la séparément.

L’utiliser pour des données appariées

Le test de Mann-Whitney U s’applique à deux groupes indépendants. Si vos données sont appariées – mêmes sujets mesurés deux fois, ou paires appariées – utilisez plutôt le test des rangs signés de Wilcoxon.

Quand ne pas utiliser le test de Mann-Whitney U

Le test de Mann-Whitney U n’est pas l’outil adapté à toutes les situations. Voici quand en choisir un autre.

Vos données sont appariées

Si les mêmes sujets apparaissent dans les deux groupes – mesures avant/après ou paires appariées – les échantillons ne sont pas indépendants. Le test de Mann-Whitney U suppose l’indépendance : l’utiliser ici ignore la relation entre observations et produit des résultats peu fiables. Utilisez le test des rangs signés de Wilcoxon.

Vous avez plus de deux groupes

Le test de Mann-Whitney U compare seulement deux groupes à la fois. Si vous en comparez trois ou plus, utilisez le test de Kruskal‑Wallis, équivalent non paramétrique de l’ANOVA à un facteur, capable de gérer plusieurs groupes.

Vous avez un grand échantillon et des données normales

L’atout principal du test de Mann-Whitney U est de ne pas supposer la normalité. Si vos données sont normalement distribuées et que la taille d’échantillon permet de le confirmer, le t-test est préférable. Il a alors une plus grande puissance statistique, donc plus de chances de détecter une différence réelle lorsqu’elle existe.

Conclusion

Le test de Mann-Whitney U est une excellente option lorsque vos données ne sont pas normales et que le t-test n’est pas adapté.

Il travaille sur des rangs plutôt que sur des valeurs brutes, ce qui évite les hypothèses qui rendent les tests paramétriques peu fiables avec des données asymétriques ou de petite taille. C’est donc un test bien adapté à l’analyse en situation réelle, où les données se comportent rarement comme on le souhaiterait.

La leçon plus large porte sur le choix du test. Aucun test n’est universel. Examinez toujours vos données – distribution, structure, taille d’échantillon – et laissez ces caractéristiques guider votre choix. Le bon test est celui qui s’ajuste à vos données.

Si vous débutez en statistique ou souhaitez approfondir le sujet, notre parcours Statistician in R vous aidera à être prêt pour l’emploi en seulement 52 heures de contenus.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Scientifique de données senior basé en Croatie. Rédacteur technique de premier plan avec plus de 700 articles publiés, générant plus de 10 millions de vues. Auteur du livre Machine Learning Automation with TPOT.

FAQs

À quoi sert le test de Mann-Whitney U&nbsp;?

Le test de Mann-Whitney U est utilisé pour comparer deux groupes indépendants lorsque vous ne pouvez pas supposer la normalité des données. Il classe toutes les valeurs des deux groupes réunis et vérifie si l’un d’eux se classe systématiquement plus haut que l’autre. Il fonctionne avec des données ordinales comme continues.

En quoi le test de Mann-Whitney U est-il différent du t-test&nbsp;?

Le t-test compare les moyennes de deux groupes et suppose la normalité. Le test de Mann-Whitney U compare des distributions à l’aide des rangs, sans faire cette hypothèse. Lorsque vos données sont asymétriques ou issues d’un petit échantillon, le test de Mann-Whitney U est le choix le plus prudent.

Quand dois-je utiliser le test de Mann-Whitney U&nbsp;?

Utilisez-le lorsque vous avez deux groupes indépendants, que vos données sont ordinales ou continues, et que vous ne pouvez pas confirmer la normalité. Il est aussi bien adapté aux petits échantillons et en présence de valeurs aberrantes. Si vos données sont normales et votre échantillon important, le t-test donnera généralement de meilleurs résultats.

Que vous indique la p-valeur dans un test de Mann-Whitney U&nbsp;?

Une p-valeur inférieure à 0,05 signifie qu’il existe une différence statistiquement significative entre les distributions des deux groupes. Elle ne dit rien de l’ampleur de cette différence ni de sa pertinence pratique. Pour cela, calculez séparément la taille d’effet et examinez les médianes de chaque groupe.

Puis-je utiliser le test de Mann-Whitney U pour des données appariées&nbsp;?

Non. Le test de Mann-Whitney U suppose que les deux groupes sont indépendants, c’est-à-dire que les valeurs de l’un n’influencent pas celles de l’autre. Si vos données sont appariées – par exemple des mesures avant/après sur les mêmes sujets – utilisez le test des rangs signés de Wilcoxon. Employer le test de Mann-Whitney U sur des données appariées ignore la relation entre observations et produit des résultats peu fiables.

Sujets

Apprenez avec DataCamp

Cursus

Analyste de données en R

36 h
De l'analyse exploratoire des données avec dplyr à la visualisation des données avec ggplot2, acquérez les compétences R nécessaires pour réussir en tant qu'analyste de données !
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Contenus associés

Tutoriel

Normalisation vs. Standardisation: comment faire la différence

Découvrez les principales différences, les applications et la mise en œuvre de la normalisation et de la standardisation dans le prétraitement des données pour l’apprentissage automatique.
Samuel Shaibu's photo

Samuel Shaibu

Tutoriel

Python NaN : Quatre méthodes pour vérifier les valeurs manquantes en Python

Découvrez quatre méthodes pour détecter les valeurs NaN en Python, à l'aide de NumPy et Pandas. Apprenez les différences essentielles entre NaN et None afin de nettoyer et d'analyser efficacement les données.
Adel Nehme's photo

Adel Nehme

Tutoriel

Python Switch Case Statement : Guide du débutant

Découvrez le match-case de Python : un guide sur sa syntaxe, ses applications en data science, ML, et une analyse comparative avec le switch-case traditionnel.
Matt Crabtree's photo

Matt Crabtree

Tutoriel

Tutoriel Python sur les structures de données

Initiez-vous aux structures de données de Python : apprenez-en plus sur les types de données et les structures de données primitives et non primitives, telles que les chaînes de caractères, les listes, les piles, etc.
Sejal Jaiswal's photo

Sejal Jaiswal

Tutoriel

Comment trier un dictionnaire par valeur en Python

Découvrez des méthodes efficaces pour trier un dictionnaire par valeurs en Python. Découvrez le tri par ordre croissant et décroissant, ainsi que des conseils supplémentaires pour le tri par clé.
Neetika Khandelwal's photo

Neetika Khandelwal

Tutoriel

Tableaux Python

Tableaux Python avec exemples de code. Découvrez comment créer et imprimer des tableaux à l'aide de Python NumPy dès aujourd'hui.
DataCamp Team's photo

DataCamp Team

Voir plusVoir plus