ENFR

ROC et AUC, expliqués pour les cliniciens

Ce qu'est la courbe, comment on la construit case par case, et la phrase qui fait retenir l'AUC pour de bon.

Pressé

Un test diagnostique attribue à chaque patient un nombre : un taux de marqueur, un titre d'anticorps, un score de risque. L'AUC mesure à quel point ce nombre sépare les malades des sains, avant de fixer le moindre seuil. Sa lecture est simple : prenez au hasard un malade et un sain, et l'AUC est la probabilité que le test donne le score le plus élevé au malade. 0,5 c'est pile ou face, 1,0 ne se trompe sur aucune paire, et la plupart des tests cliniques utiles se situent entre 0,75 et 0,95. La courbe ROC est l'image derrière ce chiffre unique, et chaque point dessus est un seuil que vous pourriez choisir.

Envie de le manipuler ? Le simulateur compagnon vous laisse déplacer le seuil et voir tout cela en direct.

Ouvrir le simulateur ROC

Tout part d'un classement

Oubliez un instant positif et négatif. Un test qui produit un score fait une seule chose : il classe les patients. Alignez-les du score le plus haut au plus bas ; un bon test pousse les malades vers le haut et les sains vers le bas. Tout, dans ROC et AUC, découle de cet ordre, et rien des scores exacts. Voici six patients, trois malades et trois sains, triés par leur score.

Six patients triés par score, avec l'escalier ROC construit sur une grille 3 par 3 : monter pour un malade, aller à droite pour un sain.

Six patients, triés pour que celui au score le plus haut soit en haut et le plus bas en bas. D est un patient malade, H un patient sain. Lisez la liste de haut en bas : montez d’un cran pour chaque D, allez à droite pour chaque H. L’escalier tracé est la courbe ROC.

Pour transformer ce classement en courbe, prenez une grille de trois cases de haut, une ligne par patient malade, et trois de large, une colonne par sain. Partez du coin inférieur gauche et lisez la liste triée depuis le haut, un pas par patient : vers le haut pour un malade, vers la droite pour un sain. Notre liste s’ouvre sur le malade à 0,91, le premier pas est donc vers le haut. Vient ensuite un sain à 0,78, un pas à droite. Puis deux malades de suite, 0,66 et 0,55, deux pas vers le haut qui vous mènent au bord supérieur. Les deux derniers sont sains, 0,40 et 0,22, deux pas à droite jusqu’au coin supérieur droit. Six patients, six pas ; et comme il y a exactement trois de chaque, trois montées et trois pas à droite, vous arrivez dans le coin supérieur droit quel que soit leur ordre. Ce que l’ordre change, c’est le chemin entre les deux coins, et ce chemin est la courbe ROC.

Ces six pas nets supposent que chaque patient a un score différent. Les vrais tests produisent des ex aequo, et l’honnêteté consiste à ne pas inventer un ordre que le test n’a jamais donné. Quand plusieurs patients partagent le même score, on fait un seul déplacement en diagonale au lieu de pas séparés : vers le haut du nombre de malades du groupe, vers la droite du nombre de sains. Un lot que le test ne sépare pas devient une diagonale sur la courbe plutôt qu’un escalier, et c’est pourquoi les vraies courbes ROC sont en partie escalier, en partie pente. Poussez à la limite, quand le test donne à tous le même score, et toute la courbe se rabat sur la diagonale, d’aire 0,5, exactement le verdict qu’un tel test a mérité.

Ce que l'aire compte vraiment

Voici le gain. La grille contient trois fois trois, neuf cases, et chaque case est un appariement d'un malade avec un sain. Une case est sous l'escalier exactement quand ce malade a été classé au-dessus de ce sain, c'est-à-dire quand le test a eu raison sur cette paire. Comptez : sept des neuf sont sous la ligne.

××AUC = 7 / 9 ≈ 0,78

Chaque case est une paire (malade, sain). Les cases bleues sont les paires bien ordonnées ; les deux cases barrées sont les erreurs, où un sain a devancé un malade.

L'aire sous la courbe n'est donc pas une intégrale abstraite. C'est la proportion de paires malade-sain bien ordonnées par le test, ce qui revient à la probabilité qu'un malade au hasard devance un sain au hasard.

$$\text{AUC} = P\big(\text{score}_{\text{malade}} > \text{score}_{\text{sain}}\big)$$

Pour ces six patients, l'AUC vaut 7/9, environ 0,78. Deux paires sont mal classées, un sain devançant un malade, deux fois. C'est aussi la statistique de Mann-Whitney, et en machine learning le score standard d'un classifieur binaire, mais la lecture médicale est celle à retenir : à quelle fréquence le test classe la maladie au-dessus de la santé.

Essayez : déplacez les patients

Voici sept nouveaux patients, quatre malades et trois sains, classés du score le plus haut en haut. Déplacez un patient pour changer le classement, ou appuyez sur un préréglage, et regardez l’escalier se redessiner. Quatre malades contre trois sains font douze paires, et une grille de trois cases de large sur quatre de haut.

score le plus haut
score le plus bas
Les cases colorées sont les paires bien ordonnées par le classement actuel ; les cases barrées sont les inversions, un sain classé au-dessus d’un malade. L’AUC est la part colorée du carré.

Remarquez que la grille n’est plus carrée, alors que le carré extérieur l’est toujours : les deux axes vont de 0 à 1 quel que soit le mélange. Chaque pas vers le haut vaut désormais 1/4 et chaque pas à droite 1/3, parce que quatre malades se partagent l’axe vertical et trois sains l’axe horizontal. Changez la composition et les cases changent de forme, mais l’aire garde la même lecture : la proportion de paires bien ordonnées. Et avec des milliers de patients au lieu de sept, les pas rétrécissent jusqu’à ce que l’escalier devienne la courbe lisse que vous avez vue dans le simulateur.

Trois courbes à garder en tête

AUC 10,5AUC 0FPRTPR

Un test parfait épouse le coin supérieur gauche (aire 1). Un test inutile suit la diagonale (environ 0,5). Un test parfaitement faux longe le bas (aire 0) ; c'est un vrai test dont les étiquettes sont inversées.

Un test parfait classe chaque malade au-dessus de chaque sain, sa courbe file donc le long du bord gauche puis du haut. Un test qui classe au hasard erre le long de la diagonale, autour de 0,5. En dessous de 0,5, ce n'est pas du bruit : c'est un test qui marche, mais dont la sortie pointe à l'envers.

Un seuil est un point unique sur la courbe

Le score classe les patients, mais il faut bien agir : au-dessus de ce seuil, positif ; en dessous, négatif. Choisir ce seuil, c'est choisir un point sur la courbe ROC. Sa hauteur est la sensibilité obtenue, le taux de vrais positifs ; sa distance au bord gauche est le taux de faux positifs, un moins la spécificité. Déplacez le seuil et le point glisse le long de la courbe, échangeant sensibilité contre spécificité. Où se placer sur ce compromis est une décision clinique, pas statistique, et c'est précisément ce que le simulateur vous fait ressentir.

Un chiffre relie les deux points de vue. Fixez un seuil, transformez le score en un simple positif ou négatif, et la ROC se réduit à trois points. L’aire sous cette courbe réduite vaut (sensibilité + spécificité) / 2, l’exactitude équilibrée à ce point de fonctionnement, et elle n’est jamais supérieure à l’AUC du classement complet.

Ce qui surprend au sujet de l’AUC

L'AUC ignore les valeurs elles-mêmes. Mettez chaque score au carré, prenez son logarithme, ajoutez 100 : l'ordre ne change pas, donc l'AUC non plus. Elle mesure le classement, pas la calibration.
L'AUC peut dépasser de loin la meilleure exactitude. Un test peut bien classer l'ensemble et, à un seuil donné, n'avoir raison que sur une part modeste des décisions individuelles. Classer et décider sont deux tâches distinctes.
L’AUC ne dépend pas de la fréquence de la maladie. C’est une propriété du test, stable quand la prévalence change. Savoir si un positif est fiable est une autre question, qui, elle, bouge avec la prévalence.
Le Gini n'est qu'une AUC réétalonnée. Gini = 2 × AUC − 1 place un test au hasard à 0 et un test parfait à 1. Le scoring de crédit cite le Gini, la médecine cite l'AUC ; l'information est identique.
L’AUC d’une petite étude est plus fragile qu’elle n’en a l’air. Elle est estimée sur toutes les paires malade-sain, donc une poignée de patients donne peu de paires et beaucoup de hasard. Une AUC de 0,85 sur quarante patients et une sur quatre mille ne sont pas la même affirmation, et un petit écart entre deux AUC de petits échantillons est surtout du bruit.

Envie de voir ça rater dans la vraie vie ? Un modèle de sepsis actif dans des centaines d’hôpitaux, vendu à une AUC de 0,83, mesuré à 0,63, manquait deux cas sur trois qu’il devait détecter.

Lire l’histoire complète

Questions fréquentes

Comment construit-on réellement la courbe ROC ?

Classez chaque patient selon son score au test, puis parcourez la liste : montez d'un cran pour chaque malade, allez à droite pour chaque sain. L'escalier que vous tracez est la courbe ROC, et chaque coin est un seuil possible.

Pourquoi l'AUC égale-t-elle la probabilité qu'un malade devance un sain ?

L'aire sous l'escalier compte, parmi toutes les paires malade-sain, la proportion que le test a bien ordonnées, le malade au-dessus du sain. Cette proportion est exactement la probabilité qu'un malade au hasard ait le score le plus élevé, ce qu'exprime l'AUC.

La grille ROC doit-elle être carrée ?

Non. Le cadre extérieur est toujours un carré unité, mais les cases internes ne sont carrées que s'il y a autant de malades que de sains. Avec une autre répartition, les marches ont des hauteurs et largeurs différentes, mais l'aire garde la même lecture : la proportion de paires correctement ordonnées.

Stat Exam Pro transforme ROC, AUC et le reste des statistiques médicales en QCM corrigés, en français et en anglais.

Télécharger sur iPhone