{"id":7916,"date":"2026-09-17T00:48:29","date_gmt":"2026-09-17T00:48:29","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-tracer-courbe-roc-ggplot2-exemples\/"},"modified":"2026-09-17T00:48:34","modified_gmt":"2026-09-17T00:48:34","slug":"comment-tracer-courbe-roc-ggplot2-exemples","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-tracer-courbe-roc-ggplot2-exemples","title":{"rendered":"Comment tracer une courbe ROC avec ggplot2 (avec exemples)"},"content":{"rendered":"<p>Dans le domaine de l&rsquo;analyse statistique avanc\u00e9e, de l&rsquo;\u00e9pid\u00e9miologie clinique et de l&rsquo;apprentissage automatique, l&rsquo;\u00e9valuation de la performance discriminante des mod\u00e8les pr\u00e9dictifs binaires constitue une \u00e9tape d\u00e9cisive. Lorsqu&rsquo;un algorithme ou un mod\u00e8le de r\u00e9gression logistique attribue un score de propension ou une probabilit\u00e9 a posteriori \u00e0 une observation, le praticien se heurte in\u00e9vitablement \u00e0 la probl\u00e9matique du choix du seuil d\u00e9cisionnel optimal. La courbe ROC (<em>Receiver Operating Characteristic<\/em>) s&rsquo;impose alors comme l&rsquo;\u00e9talon m\u00e9thodologique par excellence. Loin d&rsquo;une m\u00e9trique ponctuelle et r\u00e9ductrice, elle offre une caract\u00e9risation globale et ind\u00e9pendante de tout point de coupure arbitraire, r\u00e9v\u00e9lant la dynamique fondamentale qui unit la sensibilit\u00e9 d&rsquo;un test \u00e0 sa sp\u00e9cificit\u00e9.<\/p>\n<p>Toutefois, la restitution visuelle de cette trajectoire ne saurait se limiter \u00e0 un trac\u00e9 rudimentaire. Sous l&rsquo;impulsion de la <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/r-project.org\">philosophie computationnelle de R<\/a> et de l&rsquo;impl\u00e9mentation de la grammaire des graphiques conceptualis\u00e9e par Leland Wilkinson, la biblioth\u00e8que <strong>ggplot2<\/strong> offre une puissance d&rsquo;expression in\u00e9gal\u00e9e pour convertir des estimations probabilistes en repr\u00e9sentations graphiques publiables, conformes aux exigences les plus strictes des revues acad\u00e9miques \u00e0 comit\u00e9 de lecture. La ma\u00eetrise de cet outil permet non seulement de d\u00e9peindre avec rigueur la capacit\u00e9 de discrimination d&rsquo;un biomarqueur ou d&rsquo;une \u00e9chelle psychom\u00e9trique, mais \u00e9galement d&rsquo;int\u00e9grer des intervalles de confiance robustes, de superposer des mod\u00e8les concurrents et d&rsquo;annoter visuellement les indices d&rsquo;optimisation diagnostique tels que l&rsquo;indice de Youden.<\/p>\n<p>Ce trait\u00e9 exhaustif a pour vocation d&rsquo;articuler en profondeur les fondements th\u00e9oriques de l&rsquo;analyse du signal avec les pratiques d&rsquo;impl\u00e9mentation logicielle les plus rigoureuses sous l&rsquo;\u00e9cosyst\u00e8me R. En d\u00e9composant les \u00e9quations math\u00e9matiques sous-jacentes, en explorant les approches de trac\u00e9 manuel par d\u00e9rivation matricielle, puis en mobilisant les extensions sp\u00e9cialis\u00e9es <em>pROC<\/em> et <em>plotROC<\/em> au sein du paradigme d\u00e9claratif de <em>ggplot2<\/em>, ce document constitue un manuel de r\u00e9f\u00e9rence m\u00e9thodologique destin\u00e9 aux chercheurs, biostatisticiens et analystes de donn\u00e9es confront\u00e9s aux d\u00e9fis de la classification binaire.<\/p>\n<h2>1. Introduction aux courbes ROC et aux fondements th\u00e9oriques en mod\u00e9lisation binaire<\/h2>\n<p>L&rsquo;\u00e9valuation des mod\u00e8les de classification statistique repose sur la capacit\u00e9 d&rsquo;un syst\u00e8me \u00e0 s\u00e9parer deux populations distinctes \u00e0 travers un continuum de mesure. Dans ce contexte, la courbe ROC fournit une cartographie g\u00e9om\u00e9trique compl\u00e8te de la performance diagnostique d&rsquo;un classificateur binaire sans n\u00e9cessiter la fixation pr\u00e9alable d&rsquo;un seuil de positivit\u00e9.<\/p>\n<h3>1.1 Qu&rsquo;est-ce qu&rsquo;une courbe ROC (Receiver Operating Characteristic) ?<\/h3>\n<p>L&rsquo;\u00e9mergence conceptuelle de la courbe ROC puise ses origines historiques au cours de la Seconde Guerre mondiale, plus pr\u00e9cis\u00e9ment dans les travaux pionniers li\u00e9s \u00e0 la <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Detection_theory\">th\u00e9orie de la d\u00e9tection du signal<\/a>. Les op\u00e9rateurs radar britanniques et am\u00e9ricains \u00e9taient alors confront\u00e9s au d\u00e9fi de discerner les \u00e9chos renvoy\u00e9s par des appareils ennemis r\u00e9els du bruit de fond provoqu\u00e9 par des nuages, des vols d&rsquo;oiseaux ou des interf\u00e9rences \u00e9lectromagn\u00e9tiques. Face \u00e0 ce probl\u00e8me de transmission de l&rsquo;information, les ing\u00e9nieurs d\u00e9velopp\u00e8rent une formalisation math\u00e9matique \u00e9valuant la capacit\u00e9 op\u00e9rationnelle du r\u00e9cepteur \u00e0 identifier un signal authentique face aux fluctuations stochastiques ambiantes. Cette approche novatrice a ensuite \u00e9t\u00e9 transpos\u00e9e \u00e0 la psychophysique exp\u00e9rimentale par des auteurs fondamentaux tels que David Green et John Swets dans les ann\u00e9es 1960, avant de conqu\u00e9rir la m\u00e9decine clinique, l&rsquo;\u00e9pid\u00e9miologie et la science des donn\u00e9es modernes.<\/p>\n<p>Sur le plan g\u00e9om\u00e9trique et probabiliste, la courbe ROC constitue la repr\u00e9sentation graphique continue du compromis inh\u00e9rent entre les b\u00e9n\u00e9fices attendus et les co\u00fbts occasionn\u00e9s par une d\u00e9cision en univers incertain. En faisant varier de mani\u00e8re syst\u00e9matique le seuil de discrimination critique sur l&rsquo;ensemble de son domaine de d\u00e9finition, la courbe projette, sur un rep\u00e8re cart\u00e9sien born\u00e9 par le carr\u00e9 unitaire [0, 1] \u00d7 [0, 1], l&rsquo;\u00e9volution conjointe du taux de vrais positifs et du taux de faux positifs. Loin de figer le classificateur dans une matrice de confusion statique, cette trajectoire param\u00e9trique r\u00e9v\u00e8le l&rsquo;anatomie intrins\u00e8que du pouvoir s\u00e9parateur d&rsquo;une variable quantitative continue ou d&rsquo;un pr\u00e9dicteur probabiliste, ind\u00e9pendamment du point de fonctionnement finalement retenu par le clinicien ou l&rsquo;ing\u00e9nieur.<\/p>\n<p>Dans l&rsquo;\u00e9valuation moderne des classificateurs probabilistes continus, \u00e0 l&rsquo;instar de la r\u00e9gression logistique, des r\u00e9seaux de neurones ou des for\u00eats al\u00e9atoires, la courbe ROC remplit une fonction heuristique majeure. Les algorithmes pr\u00e9dictifs attribuent g\u00e9n\u00e9ralement \u00e0 chaque unit\u00e9 statistique une probabilit\u00e9 d&rsquo;appartenance \u00e0 la classe cible comprise entre 0 et 1. D\u00e9clarer une observation comme positive suppose de trancher si cette probabilit\u00e9 d\u00e9passe un seuil arbitraire fix\u00e9 usuellement \u00e0 0,5. Or, cette convention standard s&rsquo;av\u00e8re souvent inadapt\u00e9e aux contextes asym\u00e9triques o\u00f9 les co\u00fbts de mauvaise classification diff\u00e8rent drastiquement. L&rsquo;analyse ROC \u00e9mancipe l&rsquo;\u00e9valuateur de cette contrainte en inspectant la robustesse du mod\u00e8le pour tous les seuils concevables, offrant ainsi une lecture panoramique de son efficacit\u00e9 discriminatoire.<\/p>\n<h3>1.2 Les m\u00e9triques sous-jacentes : Sensibilit\u00e9 et Sp\u00e9cificit\u00e9<\/h3>\n<p>L&rsquo;architecture fondamentale de la courbe ROC s&rsquo;\u00e9difie sur deux grandeurs statistiques conditionnelles issues de la table de contingence binaire, usuellement d\u00e9sign\u00e9e sous le terme de matrice de confusion : la sensibilit\u00e9 et la sp\u00e9cificit\u00e9. La sensibilit\u00e9, \u00e9galement qualifi\u00e9e de taux de vrais positifs (<em>True Positive Rate<\/em> ou TPR), quantifie la probabilit\u00e9 qu&rsquo;un sujet v\u00e9ritablement porteur de la condition d&rsquo;int\u00e9r\u00eat soit class\u00e9 de mani\u00e8re congruente comme positif par le test ou le mod\u00e8le statistique. Math\u00e9matiquement, elle s&rsquo;exprime par le rapport conditionnel suivant :<\/p>\n<p><strong>Sensibilit\u00e9 = P(Test Positif | Sujet Positif) = VP \/ (VP + FN)<\/strong><\/p>\n<p>o\u00f9 VP d\u00e9signe l&rsquo;effectif des vrais positifs et FN celui des faux n\u00e9gatifs. Une sensibilit\u00e9 maximale \u00e9gale \u00e0 1 indique que l&rsquo;ensemble des cas pathologiques ou cibles a \u00e9t\u00e9 formellement d\u00e9tect\u00e9 par l&rsquo;outil, \u00e9liminant ainsi toute occurrence de faux n\u00e9gatifs d\u00e9l\u00e9t\u00e8res dans un contexte de d\u00e9pistage.<\/p>\n<p>\u00c0 l&rsquo;oppos\u00e9, la sp\u00e9cificit\u00e9 mesure la probabilit\u00e9 conditionnelle qu&rsquo;un individu indemne de la condition \u00e9tudi\u00e9e obtienne un r\u00e9sultat de test n\u00e9gatif, traduisant la capacit\u00e9 de l&rsquo;outil \u00e0 \u00e9carter les sujets sains sans g\u00e9n\u00e9rer d&rsquo;alarmes fallacieuses :<\/p>\n<p><strong>Sp\u00e9cificit\u00e9 = P(Test N\u00e9gatif | Sujet N\u00e9gatif) = VN \/ (VN + FP)<\/strong><\/p>\n<p>o\u00f9 VN repr\u00e9sente les vrais n\u00e9gatifs et FP les faux positifs. Dans la construction usuelle de la courbe ROC, l&rsquo;ordonn\u00e9e est assign\u00e9e \u00e0 la sensibilit\u00e9 (TPR), tandis que l&rsquo;abscisse re\u00e7oit le taux de faux positifs (<em>False Positive Rate<\/em> ou FPR), qui correspond rigoureusement au compl\u00e9ment arithm\u00e9tique de la sp\u00e9cificit\u00e9, soit <strong>1 &#8211; Sp\u00e9cificit\u00e9<\/strong>. Ce taux exprime formellement la fraction de sujets sains ind\u00fbment cat\u00e9goris\u00e9s comme anormaux ou positifs par le m\u00e9canisme d\u00e9cisionnel.<\/p>\n<p>Le comportement de la matrice de confusion et de ces taux conditionnels varie de fa\u00e7on monotone en fonction du d\u00e9placement du seuil critique de coupure (d\u00e9sign\u00e9 couramment par la lettre grecque tau, \u03c4). Si le statisticien abaisse le seuil de d\u00e9cision vers z\u00e9ro, le mod\u00e8le devient ultra-lib\u00e9ral : il pr\u00e9dit une issue positive pour la quasi-totalit\u00e9 des observations. Par cons\u00e9quent, les faux n\u00e9gatifs tendent vers z\u00e9ro, la sensibilit\u00e9 converge vers 1, mais au d\u00e9triment direct de la sp\u00e9cificit\u00e9 qui s&rsquo;effondre vers 0 (portant 1 &#8211; Sp\u00e9cificit\u00e9 \u00e0 1). Inversement, si le seuil s&rsquo;\u00e9l\u00e8ve vers l&rsquo;unit\u00e9, le mod\u00e8le adopte une posture hyper-conservatrice : presque aucun individu n&rsquo;est d\u00e9clar\u00e9 positif, la sp\u00e9cificit\u00e9 atteint 1 (1 &#8211; Sp\u00e9cificit\u00e9 = 0), tandis que la sensibilit\u00e9 chute vers z\u00e9ro. La courbe ROC retrace pr\u00e9cis\u00e9ment cette dialectique structurelle le long de l&rsquo;espace param\u00e9trique.<\/p>\n<h3>1.3 Pertinence m\u00e9thodologique dans la recherche psychologique et clinique<\/h3>\n<p>Dans le champ des sciences comportementales, de la psychologie clinique et de la psychiatrie quantitative, la validation diagnostique d&rsquo;\u00e9chelles de mesure et d&rsquo;inventaires d&rsquo;\u00e9valuation psychom\u00e9trique repr\u00e9sente un enjeu m\u00e9thodologique de premier ordre. Qu&rsquo;il s&rsquo;agisse de mesurer la s\u00e9v\u00e9rit\u00e9 d&rsquo;un \u00e9tat d\u00e9pressif majeur \u00e0 travers le <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/www.ncbi.nlm.nih.gov\/pmc\/articles\/PMC1495268\/\">PHQ-9 (Patient Health Questionnaire)<\/a> ou d&rsquo;\u00e9valuer le risque de passage \u00e0 l&rsquo;acte suicidaire, le chercheur dispose fr\u00e9quemment d&rsquo;un score composite continu dont il doit d\u00e9terminer la propension \u00e0 cat\u00e9goriser fid\u00e8lement les patients selon un standard nosographique de r\u00e9f\u00e9rence (par exemple, les crit\u00e8res \u00e9tablis par le DSM-5 ou la CIM-11 via un entretien structur\u00e9 de type MINI ou SCID).<\/p>\n<p>La mobilisation de la courbe ROC permet d&rsquo;arbitrer les arbitrages cliniques hautement asym\u00e9triques inh\u00e9rents \u00e0 ces disciplines. Dans le cas du rep\u00e9rage d&rsquo;affections lourdes ou d&rsquo;urgences psychiatriques, le co\u00fbt humain et soci\u00e9tal d&rsquo;un faux n\u00e9gatif (laisser un patient hautement suicidaire sans surveillance ni soutien m\u00e9dical) s&rsquo;av\u00e8re infiniment plus pr\u00e9judiciable que le co\u00fbt induit par un faux positif (orienter temporairement un patient non suicidaire vers un bilan psychiatrique approfondi). La courbe ROC permet d&rsquo;identifier visuellement et statistiquement la zone de seuil garantissant une sensibilit\u00e9 quasi-totale, tout en quantifiant pr\u00e9cis\u00e9ment la d\u00e9gradation tol\u00e9rable de la sp\u00e9cificit\u00e9 qui en d\u00e9coule.<\/p>\n<p>Un avantage \u00e9pist\u00e9mologique capital de la m\u00e9thodologie ROC r\u00e9side dans sa robustesse face aux variations de pr\u00e9valence du trouble au sein de la population examin\u00e9e. Contrairement aux valeurs pr\u00e9dictives positives (VPP) et n\u00e9gatives (VPN), qui subissent directement l&rsquo;influence du taux de base d&rsquo;un ph\u00e9nom\u00e8ne selon le th\u00e9or\u00e8me de Bayes, la sensibilit\u00e9 et la sp\u00e9cificit\u00e9 sont des grandeurs conditionnelles intrins\u00e8ques au dispositif de mesure. Ainsi, une courbe ROC g\u00e9n\u00e9r\u00e9e en milieu hospitalier sp\u00e9cialis\u00e9 (o\u00f9 la pr\u00e9valence d&rsquo;une pathologie peut atteindre 50 %) conserve sa validit\u00e9 structurelle pour estimer les capacit\u00e9s de discrimination de l&rsquo;instrument lorsqu&rsquo;il est ensuite d\u00e9ploy\u00e9 en soins de sant\u00e9 primaires ou en population g\u00e9n\u00e9rale o\u00f9 la pr\u00e9valence n&rsquo;exc\u00e9derait pas 2 %. Cette propri\u00e9t\u00e9 d&rsquo;invariance offre une garantie de transposabilit\u00e9 m\u00e9thodologique indispensable pour la recherche clinique translationnelle.<\/p>\n<h2>2. Mod\u00e9lisation de r\u00e9gression logistique binaire : Pr\u00e9paration et ajustement<\/h2>\n<p>Avant d&rsquo;extraire la g\u00e9om\u00e9trie d&rsquo;une courbe ROC, il est imp\u00e9ratif de g\u00e9n\u00e9rer un mod\u00e8le statistique capable d&rsquo;estimer de mani\u00e8re optimale les probabilit\u00e9s d&rsquo;appartenance \u00e0 la classe cible \u00e0 partir d&rsquo;un ensemble de covariables cliniques ou d\u00e9mographiques. La r\u00e9gression logistique binaire demeure le standard param\u00e9trique le plus robuste et le plus largement interpr\u00e9table pour accomplir cette t\u00e2che fondamentale.<\/p>\n<h3>2.1 Fondements de la r\u00e9gression logistique pour issues dichotomiques<\/h3>\n<p>La r\u00e9gression logistique s&rsquo;applique lorsque la variable d\u00e9pendante d&rsquo;int\u00e9r\u00eat, not\u00e9e Y, est une variable al\u00e9atoire suivant une loi de Bernoulli prenant pour valeurs 0 (absence de l&rsquo;\u00e9v\u00e9nement ou groupe t\u00e9moin) ou 1 (survenue de l&rsquo;\u00e9v\u00e9nement ou groupe cas). L&rsquo;ajustement direct d&rsquo;un mod\u00e8le lin\u00e9aire standard par moindres carr\u00e9s ordinaires s&rsquo;av\u00e8re non valide en raison de l&rsquo;h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 des r\u00e9sidus et, surtout, du risque de pr\u00e9dire des probabilit\u00e9s aberrantes situ\u00e9es en dehors du segment d\u00e9limit\u00e9 [0, 1]. Pour pallier cette impasse, la r\u00e9gression logistique mod\u00e9lise une transformation monotone de la probabilit\u00e9 conditionnelle \u03c0(x) = P(Y = 1 | X = x), nomm\u00e9e la fonction <em>logit<\/em>.<\/p>\n<p>Le mod\u00e8le s&rsquo;\u00e9nonce selon la relation lin\u00e9aire appliqu\u00e9e au logarithme n\u00e9p\u00e9rien du rapport des cotes (<em>log-odds<\/em>) :<\/p>\n<p><strong>logit(\u03c0(x)) = ln( \u03c0(x) \/ (1 &#8211; \u03c0(x)) ) = \u03b2\u2080 + \u03b2\u2081X\u2081 + \u03b2\u2082X\u2082 + &#8230; + \u03b2\u209aX\u209a<\/strong><\/p>\n<p>Par inversion alg\u00e9brique, l&rsquo;estimation de la probabilit\u00e9 conditionnelle s&rsquo;obtient via la fonction logistique sigmo\u00efde standard :<\/p>\n<p><strong>\u03c0(x) = 1 \/ ( 1 + exp(-(\u03b2\u2080 + \u03a3 \u03b2\u1d62X\u1d62)) )<\/strong><\/p>\n<p>Les conditions d&rsquo;application de la r\u00e9gression logistique n&rsquo;imposent pas l&rsquo;hypoth\u00e8se de normalit\u00e9 multidimensionnelle des pr\u00e9dicteurs, ce qui conf\u00e8re \u00e0 cette m\u00e9thode une grande souplesse op\u00e9rationnelle face \u00e0 des covariables mixtes (continues et discr\u00e8tes). N\u00e9anmoins, elle suppose l&rsquo;ind\u00e9pendance stricte des observations, l&rsquo;absence de multicolin\u00e9arit\u00e9 s\u00e9v\u00e8re entre les variables explicatives et une lin\u00e9arit\u00e9 de la relation entre chaque covariable continue et le logit de l&rsquo;issue binaire. Sur le plan de l&rsquo;interpr\u00e9tation \u00e9pid\u00e9miologique, l&rsquo;exponentiation des coefficients de r\u00e9gression estim\u00e9e par le maximum de vraisemblance, soit exp(\u03b2\u1d62), livre directement les rapports de cotes (<em>Odds Ratios<\/em> ou OR), quantifiant l&rsquo;augmentation relative de la cote de l&rsquo;\u00e9v\u00e9nement induite par l&rsquo;accroissement d&rsquo;une unit\u00e9 de la covariable correspondante, toutes choses \u00e9tant \u00e9gales par ailleurs.<\/p>\n<h3>2.2 Partitionnement des donn\u00e9es : \u00c9chantillons d&rsquo;entra\u00eenement et de test<\/h3>\n<p>L&rsquo;\u00e9valuation rigoureuse de la validit\u00e9 d&rsquo;un mod\u00e8le statistique impose une dissociation m\u00e9thodique entre la phase d&rsquo;estimation des param\u00e8tres et la phase d&rsquo;\u00e9valuation de la performance pr\u00e9dictive. L&rsquo;ajustement d&rsquo;un mod\u00e8le et le trac\u00e9 de sa courbe ROC sur le jeu de donn\u00e9es ayant servi \u00e0 calibrer les coefficients produit in\u00e9vitablement un biais d&rsquo;optimisme majeur imputable au surapprentissage (<em>overfitting<\/em>). Le mod\u00e8le a tendance \u00e0 capturer le bruit stochastique propre \u00e0 l&rsquo;\u00e9chantillon observ\u00e9 plut\u00f4t que la v\u00e9ritable structure sous-jacente de la population cible.<\/p>\n<p>Afin de pr\u00e9munir l&rsquo;analyse contre cet \u00e9cueil m\u00e9thodologique, il est primordial de proc\u00e9der \u00e0 un fractionnement de l&rsquo;\u00e9chantillon initial en un ensemble d&rsquo;apprentissage (<em>training set<\/em>) et un ensemble de validation ou de test (<em>testing set<\/em>). Typiquement, une proportion de 70 % \u00e0 80 % est allou\u00e9e \u00e0 l&rsquo;apprentissage pour garantir une puissance statistique suffisante lors de l&rsquo;estimation par le maximum de vraisemblance, les 20 % \u00e0 30 % restants \u00e9tant rigoureusement sanctuaris\u00e9s pour l&rsquo;\u00e9valuation diagnostique.<\/p>\n<p>Dans les contextes biom\u00e9dicaux o\u00f9 l&rsquo;incidence des cas pathologiques est restreinte, la mise en \u0153uvre d&rsquo;un fractionnement al\u00e9atoire simple comporte le risque de d\u00e9s\u00e9quilibrer artificiellement la distribution de l&rsquo;issue binaire entre les sous-\u00e9chantillons. Il convient d\u00e8s lors de recourir \u00e0 un \u00e9chantillonnage stratifi\u00e9. Dans l&rsquo;\u00e9cosyst\u00e8me R, cette d\u00e9marche peut \u00eatre effectu\u00e9e avec les fonctions int\u00e9gr\u00e9es de l&rsquo;environnement de base, ou facilit\u00e9e par des fonctions sp\u00e9cialis\u00e9es telles que <code>createDataPartition()<\/code> du package <em>caret<\/em>, ou via la syntaxe native de <em>rsample<\/em> (inclus dans <em>tidymodels<\/em>). L&rsquo;imp\u00e9ratif m\u00e9thodologique consiste \u00e0 certifier que les proportions relatives de classes observ\u00e9es au sein du jeu complet se retrouvent rigoureusement pr\u00e9serv\u00e9es au sein des deux sous-ensembles g\u00e9n\u00e9r\u00e9s.<\/p>\n<h3>2.3 Ajustement du mod\u00e8le avec la fonction glm() dans R<\/h3>\n<p>Dans l&rsquo;environnement de calcul R, l&rsquo;estimation des mod\u00e8les lin\u00e9aires g\u00e9n\u00e9ralis\u00e9s s&rsquo;op\u00e8re par le truchement de la fonction canonique <code>glm()<\/code>. Pour ajuster une r\u00e9gression logistique binaire, l&rsquo;argument central r\u00e9side dans la sp\u00e9cification du param\u00e8tre <code>family = binomial(link = \"logit\")<\/code>, qui enjoint \u00e0 l&rsquo;algorithme d&rsquo;adopter une distribution d&rsquo;erreurs binomiale coupl\u00e9e \u00e0 la fonction de lien canonique logit. La syntaxe formelle d&rsquo;appel s&rsquo;\u00e9crit de la fa\u00e7on suivante :<\/p>\n<p><code>modele_logit &lt;- glm(statut ~ score_test + age + biomarqueur, data = donnees_train, family = binomial(link = &quot;logit&quot;))<\/code><\/p>\n<p>L&rsquo;ex\u00e9cution de cette instruction active l&rsquo;algorithme des moindres carr\u00e9s r\u00e9cursivement repond\u00e9r\u00e9s (<em>Iteratively Reweighted Least Squares<\/em> ou IRLS) afin de maximiser la fonction de log-vraisemblance. \u00c0 l&rsquo;issue de la convergence, l&rsquo;inspection de l&rsquo;objet produit via la fonction <code>summary(modele_logit)<\/code> permet de recueillir des informations structurelles critiques. Le statisticien doit valider la bonne convergence de l&rsquo;algorithme en s&rsquo;assurant que le nombre d&rsquo;it\u00e9rations r\u00e9pertori\u00e9 reste raisonnable et qu&rsquo;aucun avertissement n&rsquo;indique l&rsquo;existence d&rsquo;une s\u00e9paration quasi-compl\u00e8te des donn\u00e9es (qui conduirait \u00e0 l&rsquo;explosion artificielle des erreurs-types des coefficients).<\/p>\n<p>L&rsquo;\u00e9valuation globale de l&rsquo;ajustement repose sur l&rsquo;analyse de la d\u00e9viance r\u00e9siduelle par rapport \u00e0 la d\u00e9viance nulle, ainsi que sur la consultation des crit\u00e8res d&rsquo;information p\u00e9nalis\u00e9e, notamment l&rsquo;AIC (<em>Akaike Information Criterion<\/em>). Un mod\u00e8le pr\u00e9sentant une d\u00e9viance r\u00e9siduelle substantiellement inf\u00e9rieure \u00e0 la d\u00e9viance du mod\u00e8le nul t\u00e9moigne d&rsquo;un gain d&rsquo;information manifeste apport\u00e9 par les pr\u00e9dicteurs introduits. Une fois ces v\u00e9rifications diagnostiques parachev\u00e9es, le mod\u00e8le est habilit\u00e9 \u00e0 projeter ses pr\u00e9dictions probabilistes sur la cohorte de validation externe.<\/p>\n<h2>3. Pr\u00e9paration des pr\u00e9dictions et structuration des donn\u00e9es pour l&rsquo;analyse ROC<\/h2>\n<p>La construction graphique et computationnelle d&rsquo;une courbe ROC n\u00e9cessite une rigueur absolue dans la mise en forme des sorties algorithmiques. Un trac\u00e9 erron\u00e9 ou artificiellement invers\u00e9 r\u00e9sulte presque toujours d&rsquo;une confusion entre les \u00e9chelles d&rsquo;estimation ou d&rsquo;un mauvais typage des variables de r\u00e9ponse.<\/p>\n<h3>3.1 G\u00e9n\u00e9ration des probabilit\u00e9s pr\u00e9dites avec la fonction predict()<\/h3>\n<p>Une fois le mod\u00e8le estim\u00e9 sur le jeu d&rsquo;entra\u00eenement, il convient d&rsquo;inf\u00e9rer les pr\u00e9dictions sur les individus composant le jeu de test ind\u00e9pendant. Cette \u00e9tape mobilise la fonction g\u00e9n\u00e9rique <code>predict()<\/code>. N\u00e9anmoins, une vigilance capitale s&rsquo;impose quant au choix de l&rsquo;argument de transformation <code>type<\/code>. Par d\u00e9faut, pour un objet de classe <code>glm<\/code>, l&rsquo;argument est configur\u00e9 sur <code>type = \"link\"<\/code>, ce qui commande au logiciel de retourner les pr\u00e9dictions lin\u00e9aires sur l&rsquo;\u00e9chelle de la fonction de lien logit (c&rsquo;est-\u00e0-dire les log-odds).<\/p>\n<p>Pour l&rsquo;analyse de discrimination ROC, il est hautement pr\u00e9f\u00e9rable de manipuler directement des probabilit\u00e9s a posteriori born\u00e9es dans l&rsquo;intervalle [0, 1]. Pour ce faire, il est imp\u00e9ratif de param\u00e9trer explicitement <code>type = \"response\"<\/code> :<\/p>\n<p><code>predictions_prob &lt;- predict(modele_logit, newdata = donnees_test, type = &quot;response&quot;)<\/code><\/p>\n<p>Cette instruction applique la transformation sigmo\u00efde inverse sur les composantes de la combinaison lin\u00e9aire, assignant ainsi \u00e0 chaque patient de l&rsquo;\u00e9chantillon de test une probabilit\u00e9 calcul\u00e9e d&rsquo;appartenance \u00e0 la classe cible. D\u00e8s cette phase franchie, un examen descriptif de la distribution des probabilit\u00e9s obtenues (par l&rsquo;appel de <code>summary(predictions_prob)<\/code> ou la g\u00e9n\u00e9ration d&rsquo;un histogramme rapide) s&rsquo;impose pour v\u00e9rifier l&rsquo;absence d&rsquo;aberrations num\u00e9riques, telles que des concentrations massives aux bornes extr\u00eames qui signaleraient un mod\u00e8le hyper-s\u00e9parateur instable.<\/p>\n<h3>3.2 Organisation tabulaire des r\u00e9sultats sous format adapt\u00e9<\/h3>\n<p>Pour s&rsquo;inscrire harmonieusement dans le paradigme graphique de <em>ggplot2<\/em> et respecter les imp\u00e9ratifs du format de donn\u00e9es propre (<em>tidy data<\/em>), les pr\u00e9dictions doivent \u00eatre assembl\u00e9es avec les observations cliniques r\u00e9elles au sein d&rsquo;un tableau rectangulaire unifi\u00e9, typiquement un objet de type <code>data.frame<\/code> ou <code>tibble<\/code>. Cette op\u00e9ration s&rsquo;accomplit ais\u00e9ment par recombinaison vectorielle :<\/p>\n<p><code>df_roc &lt;- data.frame(statut_reel = donnees_test$statut, proba_predite = predictions_prob)<\/code><\/p>\n<p>Le contr\u00f4le de l&rsquo;encodage de la variable d\u00e9pendante r\u00e9elle conditionne l&rsquo;ensemble de la cha\u00eene de traitement ult\u00e9rieure. Selon le package mobilis\u00e9 (qu&rsquo;il s&rsquo;agisse de <em>pROC<\/em>, <em>plotROC<\/em> ou d&rsquo;un algorithme manuel), les exigences de typage divergent. Certains outils exigent que la variable r\u00e9ponse soit formellement d\u00e9clar\u00e9e comme un facteur binaire \u00e0 deux niveaux ordonn\u00e9s (par exemple, <code>levels = c(\"Sain\", \"Malade\")<\/code>), tandis que d&rsquo;autres requi\u00e8rent une variable num\u00e9rique strictement cod\u00e9e sous la forme 0\/1. Il convient de pr\u00eater une attention m\u00e9ticuleuse \u00e0 l&rsquo;ordre des modalit\u00e9s : le niveau consid\u00e9r\u00e9 comme l&rsquo;\u00e9v\u00e9nement d&rsquo;int\u00e9r\u00eat clinique (la classe cible positive) doit correspondre au niveau sup\u00e9rieur dans la hi\u00e9rarchie du facteur ou \u00eatre associ\u00e9 \u00e0 la valeur num\u00e9rique 1, sous peine d&rsquo;induire une sym\u00e9trie invers\u00e9e de la courbe r\u00e9sultante.<\/p>\n<p>Par ailleurs, il est fondamental de s&rsquo;assurer d&rsquo;un parfait alignement d&rsquo;indices entre les vecteurs de pr\u00e9dicteurs et le vecteur de r\u00e9f\u00e9rence. Toute alt\u00e9ration dans l&rsquo;ordre des lignes lors des manipulations de fusion (notamment lors de l&rsquo;utilisation de sous-ensembles sans conservation d&rsquo;identifiants univoques) d\u00e9truirait la corr\u00e9lation intra-sujet et an\u00e9antirait la validit\u00e9 de l&rsquo;\u00e9valuation diagnostique.<\/p>\n<h3>3.3 Traitement des valeurs manquantes et des cas limites<\/h3>\n<p>Dans les registres empiriques de donn\u00e9es cliniques ou psychom\u00e9triques, la survenue de donn\u00e9es manquantes repr\u00e9sente un ph\u00e9nom\u00e8ne r\u00e9current. Lors de l&rsquo;\u00e9valuation par <code>predict.glm()<\/code>, toute observation du jeu de test qui comporte ne serait-ce qu&rsquo;une seule valeur manquante (<code>NA<\/code>) sur l&rsquo;une des covariables du mod\u00e8le est automatiquement exclue par l&rsquo;action de l&rsquo;argument standard <code>na.action = na.pass<\/code> ou <code>na.omit<\/code>. Ce filtrage implicite alt\u00e8re la taille effective de l&rsquo;\u00e9chantillon de validation et d\u00e9saligne m\u00e9caniquement la longueur du vecteur des probabilit\u00e9s calcul\u00e9es par rapport \u00e0 la taille originelle de la base de test.<\/p>\n<p>Pour contourner ce pi\u00e8ge, deux approches m\u00e9thodologiques se distinguent. La suppression par liste compl\u00e8te (<em>complete case analysis<\/em>) consiste \u00e0 filtrer pr\u00e9alablement le jeu de test en ne retenant que les individus sans aucune valeur manquante sur les variables du mod\u00e8le. Bien que m\u00e9thodologiquement simple, cette approche peut amoindrir la repr\u00e9sentativit\u00e9 de l&rsquo;\u00e9chantillon si les donn\u00e9es ne sont pas manquantes de fa\u00e7on compl\u00e8tement al\u00e9atoire (MCAR). L&rsquo;alternative recommand\u00e9e consiste \u00e0 d\u00e9ployer une proc\u00e9dure d&rsquo;imputation multiple par \u00e9quations cha\u00een\u00e9es via le package <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=mice\">mice<\/a> en amont de l&rsquo;analyse, pr\u00e9servant ainsi la taille de la cohorte et la structure des variances d&rsquo;\u00e9chantillonnage.<\/p>\n<p>Enfin, l&rsquo;analyste doit inspecter les cas limites et les profils cliniques atypiques. La pr\u00e9sence d&rsquo;observations affichant des r\u00e9sidus de Pearson excessifs ou des valeurs de distance de Cook \u00e9lev\u00e9es dans le jeu d&rsquo;apprentissage peut exercer une influence d\u00e9mesur\u00e9e sur les estimations des pentes logistiques, d\u00e9calant ainsi la calibration des probabilit\u00e9s de l&rsquo;ensemble du mod\u00e8le. Un filtrage m\u00e9thodique des valeurs extr\u00eames non plausibles ou une analyse de sensibilit\u00e9 garantit que les trajectoires ROC refl\u00e8tent les v\u00e9ritables propri\u00e9t\u00e9s du mod\u00e8le et non les singularit\u00e9s isol\u00e9es d&rsquo;une poign\u00e9e d&rsquo;individus d\u00e9viants.<\/p>\n<h2>4. L&rsquo;\u00e9cosyst\u00e8me R : Biblioth\u00e8ques d\u00e9di\u00e9es au trac\u00e9 ROC avec ggplot2<\/h2>\n<p>Le langage R dispose d&rsquo;une richesse algorithmique exceptionnelle pour l&rsquo;analyse des courbes ROC. Cependant, la pluralit\u00e9 des extensions disponibles engendre parfois des h\u00e9sitations techniques quant au choix de la strat\u00e9gie logicielle la plus adapt\u00e9e aux exigences de publication acad\u00e9mique.<\/p>\n<h3>4.1 Le package ggplot2 et la grammaire des graphiques<\/h3>\n<p>Con\u00e7u par Hadley Wickham en impl\u00e9mentant les concepts th\u00e9oriques de Leland Wilkinson, le package <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=ggplot2\">ggplot2<\/a> a profond\u00e9ment renouvel\u00e9 la visualisation des donn\u00e9es en informatique statistique. Son architecture repose sur une d\u00e9composition rigoureuse des figures en couches superpos\u00e9es autonomes : la d\u00e9finition des donn\u00e9es sources, la sp\u00e9cification du syst\u00e8me de coordonn\u00e9es cart\u00e9siennes, l&rsquo;application d&rsquo;\u00e9chelles de transformation m\u00e9trique et, fondamentalement, l&rsquo;association d\u00e9clarative entre les variables du tableau de donn\u00e9es et les propri\u00e9t\u00e9s visuelles de la g\u00e9om\u00e9trie (l&rsquo;esth\u00e9tique, d\u00e9clar\u00e9e via la fonction <code>aes()<\/code>).<\/p>\n<p>Cette approche offre un contraste saisissant avec les routines de tra\u00e7age de base fournies nativement par R (telles que la primitive <code>plot()<\/code>). Si les fonctions de base permettent de visualiser rapidement des coordonn\u00e9es avec une concision apparente, elles deviennent particuli\u00e8rement fastidieuses d\u00e8s qu&rsquo;il s&rsquo;agit de g\u00e9rer des superpositions multi-courbes complexes, de modifier harmonieusement les palettes chromatiques, d&rsquo;int\u00e9grer des bandes d&rsquo;intervalles de confiance semi-transparentes ou d&rsquo;harmoniser la typographie globale selon les crit\u00e8res \u00e9ditoriaux d&rsquo;une revue internationale. <em>ggplot2<\/em> conf\u00e8re une reproductibilit\u00e9 absolue et une modularit\u00e9 totale : chaque composant visuel d&rsquo;une courbe ROC peut \u00eatre alt\u00e9r\u00e9, remplac\u00e9 ou augment\u00e9 de fa\u00e7on ind\u00e9pendante sans d\u00e9stabiliser la coh\u00e9rence du rendu global.<\/p>\n<h3>4.2 Le package pROC et sa compatibilit\u00e9 avec ggplot2<\/h3>\n<p>Parmi l&rsquo;arsenal des extensions d\u00e9di\u00e9es \u00e0 l&rsquo;\u00e9valuation diagnostique, le package <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=pROC\">pROC<\/a>, d\u00e9velopp\u00e9 initialement par Xavier Robin et ses collaborateurs en 2011, s&rsquo;impose comme l&rsquo;une des r\u00e9f\u00e9rences les plus compl\u00e8tes et les plus rigoureuses sur le plan math\u00e9matique. Il int\u00e8gre une panoplie exhaustive d&rsquo;outils statistiques avanc\u00e9s : calcul d&rsquo;intervalles de confiance analytiques ou par r\u00e9\u00e9chantillonnage de bootstrap, tests de comparaison multivari\u00e9s (notamment le test de DeLong), s\u00e9lection formelle de seuils d&rsquo;optimisation bas\u00e9s sur l&rsquo;indice de Youden ou des fonctions de co\u00fbt personnalis\u00e9es, et estimation d&rsquo;aires partielles sous la courbe.<\/p>\n<p>Conscient de l&rsquo;h\u00e9g\u00e9monie graphique grandissante de <em>ggplot2<\/em>, l&rsquo;\u00e9quipe de <em>pROC<\/em> a introduit la fonction d\u00e9di\u00e9e <code>ggroc()<\/code>. Cette m\u00e9thode prend en entr\u00e9e directe un objet statistique de classe <code>roc<\/code> (ou une liste d&rsquo;objets pour les comparaisons multiples) et le convertit instantan\u00e9ment en un objet natif <code>ggplot<\/code>. Cette passerelle technique r\u00e9alise une synth\u00e8se remarquable : elle d\u00e9l\u00e8gue le moteur computationnel intensif aux routines optimis\u00e9es en C++ de <em>pROC<\/em> tout en permettant \u00e0 l&rsquo;utilisateur de continuer \u00e0 enrichir la figure \u00e0 l&rsquo;aide des couches canoniques usuelles de <em>ggplot2<\/em> (<code>theme_classic()<\/code>, <code>annotate()<\/code>, <code>labs()<\/code>, etc.).<\/p>\n<h3>4.3 Le package plotROC pour une approche nativement d\u00e9clarative<\/h3>\n<p>\u00c0 la diff\u00e9rence de <em>pROC<\/em> qui n\u00e9cessite une \u00e9tape interm\u00e9diaire de calcul statistique pour g\u00e9n\u00e9rer un objet sp\u00e9cifique avant son affichage, le package <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=plotROC\">plotROC<\/a>, con\u00e7u par Michael C. Sachs, propose une int\u00e9gration directe et native au sein de la grammaire de <em>ggplot2<\/em>. Il impl\u00e9mente une couche g\u00e9om\u00e9trique d\u00e9di\u00e9e d\u00e9nomm\u00e9e <code>geom_roc()<\/code>.<\/p>\n<p>Dans ce paradigme hautement d\u00e9claratif, l&rsquo;utilisateur transmet directement son tableau de donn\u00e9es brutes non agr\u00e9g\u00e9 \u00e0 la fonction <code>ggplot()<\/code>. Les correspondances esth\u00e9tiques lient directement la variable d&rsquo;observation binaire (assign\u00e9e \u00e0 l&rsquo;esth\u00e9tique <code>d<\/code> pour <em>disease<\/em>) et le score continu ou la probabilit\u00e9 pr\u00e9dite (assign\u00e9e \u00e0 l&rsquo;esth\u00e9tique <code>m<\/code> pour <em>marker<\/em>). L&rsquo;algorithme calcule dynamiquement les points de la courbe lors du rendu graphique. De surcro\u00eet, <em>plotROC<\/em> brille par son aptitude \u00e0 afficher automatiquement les \u00e9tiquettes textuelles des valeurs seuils de coupure le long du trac\u00e9 et propose m\u00eame des fonctions d&rsquo;exportation vers des visualisations interactives au format SVG ou Shiny, facilitant l&rsquo;exploration heuristique des compromis diagnostiques.<\/p>\n<h2>5. Construction manuelle d&rsquo;une courbe ROC avec ggplot2 pur<\/h2>\n<p>Avant d&rsquo;utiliser des packages pr\u00e9-emball\u00e9s, appr\u00e9hender la d\u00e9rivation manuelle d&rsquo;une courbe ROC constitue un exercice p\u00e9dagogique inestimable. Cette d\u00e9marche permet de d\u00e9mystifier les algorithmes sous-jacents et conf\u00e8re une autonomie conceptuelle totale pour b\u00e2tir des visualisations hautement personnalis\u00e9es sans d\u00e9pendances superflues.<\/p>\n<h3>5.1 Algorithme de calcul des seuils de discrimination<\/h3>\n<p>La d\u00e9rivation programmatique d&rsquo;une courbe ROC repose sur une s\u00e9quence algorithmique vectoris\u00e9e. Soit un \u00e9chantillon compos\u00e9 de <em>N<\/em> observations pour lesquelles sont associ\u00e9es une issue binaire observ\u00e9e <em>y\u1d62<\/em> \u2208 {0, 1} et une probabilit\u00e9 d&rsquo;occurrence estim\u00e9e <em>p\u1d62<\/em> \u2208 [0, 1]. L&rsquo;algorithme se structure en plusieurs \u00e9tapes successives :<\/p>\n<ul>\n<li><strong>Extraction des points de coupure :<\/strong> R\u00e9cup\u00e9rer l&rsquo;ensemble des valeurs uniques contenues dans le vecteur des probabilit\u00e9s pr\u00e9dites <em>p<\/em>, puis ordonner ces valeurs de fa\u00e7on croissante. On adjoint \u00e0 cet ensemble deux bornes absolues : -Inf (ou 0) et +Inf (ou 1,0001), afin de couvrir l&rsquo;int\u00e9gralit\u00e9 du domaine de d\u00e9cision.<\/li>\n<li><strong>It\u00e9ration conditionnelle :<\/strong> Pour chaque seuil critique \u03c4 s\u00e9lectionn\u00e9, transformer les probabilit\u00e9s continues en une d\u00e9cision binaire discr\u00e8te : l&rsquo;observation <em>i<\/em> est class\u00e9e positive (\u0177\u1d62 = 1) si <em>p\u1d62<\/em> \u2265 \u03c4, et n\u00e9gative (\u0177\u1d62 = 0) si <em>p\u1d62<\/em> &lt; \u03c4.<\/li>\n<li><strong>Agr\u00e9gation de la matrice de confusion :<\/strong> Pour chaque seuil \u03c4, calculer la somme des vrais positifs (VP = \u03a3 [y\u1d62 = 1 &amp; \u0177\u1d62 = 1]), des faux n\u00e9gatifs (FN = \u03a3 [y\u1d62 = 1 &amp; \u0177\u1d62 = 0]), des faux positifs (FP = \u03a3 [y\u1d62 = 0 &amp; \u0177\u1d62 = 1]), et des vrais n\u00e9gatifs (VN = \u03a3 [y\u1d62 = 0 &amp; \u0177\u1d62 = 0]).<\/li>\n<li><strong>D\u00e9rivation des m\u00e9triques relatives :<\/strong> Extraire la sensibilit\u00e9 (Sens = VP \/ (VP + FN)) et le taux de faux positifs (TFP = 1 &#8211; Sp\u00e9c = FP \/ (FP + VN)).<\/li>\n<li><strong>Consolidation tabulaire :<\/strong> Stocker les coordonn\u00e9es r\u00e9sultantes (TFP, Sens, \u03c4) dans un tableau de donn\u00e9es rectangulaire pr\u00eat pour l&rsquo;injection visuelle.<\/li>\n<\/ul>\n<p>Cette logique computationnelle, ex\u00e9cut\u00e9e sous R via des fonctions vectoris\u00e9es ou des structures de boucle explicites, produit le profil coordonn\u00e9 exact de la discrimination statistique du mod\u00e8le.<\/p>\n<h3>5.2 G\u00e9n\u00e9ration de la trajectoire avec geom_line() et geom_step()<\/h3>\n<p>Une fois le tableau des coordonn\u00e9es empiriques extrait, le rendu visuel au sein de <em>ggplot2<\/em> requiert de mapper le taux de faux positifs (1 &#8211; sp\u00e9cificit\u00e9) sur l&rsquo;axe horizontal (<em>x<\/em>) et la sensibilit\u00e9 sur l&rsquo;axe vertical (<em>y<\/em>). La primitive graphique la plus intuitive consiste \u00e0 utiliser la g\u00e9om\u00e9trie lin\u00e9aire continue :<\/p>\n<p><code>ggplot(df_coords, aes(x = 1 - specificite, y = sensibilite)) + geom_line(color = \"#1F78B4\", linewidth = 1.2)<\/code><\/p>\n<p>Toutefois, sur un \u00e9chantillon de taille mod\u00e9r\u00e9e comportant des sauts discrets, l&rsquo;usage de <code>geom_step(direction = \"hv\")<\/code> s&rsquo;av\u00e8re th\u00e9oriquement plus rigoureux. La trajectoire d&rsquo;une fonction de r\u00e9partition empirique ne varie pas de mani\u00e8re uniform\u00e9ment oblique entre deux seuils discrets cons\u00e9cutifs, mais proc\u00e8de par paliers orthogonaux horizontaux et verticaux stricts au fur et \u00e0 mesure que les observations basculent individuellement d&rsquo;un statut d\u00e9cisionnel \u00e0 l&rsquo;autre. Le recours \u00e0 <code>geom_step()<\/code> traduit avec fid\u00e9lit\u00e9 la nature non param\u00e9trique de l&rsquo;\u00e9chantillon observ\u00e9.<\/p>\n<p>En compl\u00e9ment structurel indispensable, il est imp\u00e9ratif d&rsquo;adjoindre la ligne de r\u00e9f\u00e9rence diagonale d&rsquo;incomp\u00e9tence pr\u00e9dictive (la bissectrice reliant le point (0,0) au point (1,1)). Cette ligne symbolise le comportement th\u00e9orique d&rsquo;un classificateur strictement al\u00e9atoire (\u00e9quivalent \u00e0 un tirage \u00e0 pile ou face biais\u00e9 par la pr\u00e9valence), dont l&rsquo;aire sous la courbe est rigoureusement \u00e9gale \u00e0 0,5. Dans <em>ggplot2<\/em>, cette ligne s&rsquo;int\u00e8gre via l&rsquo;instruction :<\/p>\n<p><code>geom_abline(slope = 1, intercept = 0, linetype = \"dashed\", color = \"grey50\", linewidth = 0.8)<\/code><\/p>\n<h3>5.3 Personnalisation des rep\u00e8res dimensionnels et de l&rsquo;\u00e9chelle<\/h3>\n<p>L&rsquo;une des erreurs visuelles les plus fr\u00e9quentes lors de la construction d&rsquo;une courbe ROC avec les param\u00e8tres par d\u00e9faut de <em>ggplot2<\/em> r\u00e9side dans l&rsquo;expansion automatique des marges d&rsquo;axes et dans la distorsion g\u00e9om\u00e9trique du rep\u00e8re. Par d\u00e9faut, le moteur graphique applique une dilatation de 5 % sur chaque axe pour d\u00e9coller les donn\u00e9es des bordures. Dans le cas d&rsquo;une courbe ROC, cela g\u00e9n\u00e8re des coordonn\u00e9es artificiellement \u00e9tendues au-del\u00e0 de [0, 1] (par exemple de -0,05 \u00e0 1,05), ce qui perturbe l&rsquo;interpr\u00e9tation probabiliste.<\/p>\n<p>Pour verrouiller rigoureusement l&rsquo;espace cart\u00e9sien, il convient d&rsquo;utiliser les fonctions <code>scale_x_continuous()<\/code> et <code>scale_y_continuous()<\/code> en annulant l&rsquo;expansion standard \u00e0 l&rsquo;aide de l&rsquo;argument <code>expand = c(0, 0)<\/code> et en fixant des limites strictes allant de 0 \u00e0 1 :<\/p>\n<p><code>scale_x_continuous(limits = c(0, 1), expand = c(0, 0), breaks = seq(0, 1, by = 0.2)) +<br \/>scale_y_continuous(limits = c(0, 1), expand = c(0, 0), breaks = seq(0, 1, by = 0.2))<\/code><\/p>\n<p>Parall\u00e8lement, la perception de la convexit\u00e9 de la courbe et l&rsquo;estimation visuelle de sa surface d\u00e9pendent intimement du rapport d&rsquo;aspect (<em>aspect ratio<\/em>). Si le graphique est comprim\u00e9 horizontalement ou \u00e9tir\u00e9 verticalement lors de la mise en page, l&rsquo;observateur per\u00e7oit une dynamique de courbure fauss\u00e9e. L&rsquo;adjonction de la commande <code>coord_equal()<\/code> (ou <code>coord_fixed(ratio = 1)<\/code>) est absolument essentielle pour contraindre l&rsquo;unit\u00e9 physique de l&rsquo;axe des ordonn\u00e9es \u00e0 mesurer exactement la m\u00eame longueur millim\u00e9trique que celle de l&rsquo;axe des abscisses, assurant un trac\u00e9 parfaitement isom\u00e9trique et scientifiquement irr\u00e9prochable.<\/p>\n<figure class=\"wpt-preserved-image\"><img fetchpriority=\"high\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/ROCggplot1.png\" alt=\"ROC curve in ggplot2\" \/><figcaption>ROC curve in ggplot2<\/figcaption><\/figure>\n<h2>6. Mise en \u0153uvre avec le package pROC et la fonction ggroc()<\/h2>\n<p>Le package <em>pROC<\/em> conjugue la pr\u00e9cision d&rsquo;un moteur de calcul math\u00e9matique valid\u00e9 depuis plus d&rsquo;une d\u00e9cennie avec l&rsquo;\u00e9l\u00e9gance graphique offerte par <em>ggplot2<\/em>. Son adoption permet d&rsquo;automatiser des \u00e9tapes complexes tout en conservant une tra\u00e7abilit\u00e9 analytique sans faille.<\/p>\n<h3>6.1 Cr\u00e9ation de l&rsquo;objet roc() \u00e0 partir des donn\u00e9es de test<\/h3>\n<p>L&rsquo;architecture de calcul de <em>pROC<\/em> s&rsquo;articule autour de sa fonction \u00e9ponyme <code>roc()<\/code>. Cette derni\u00e8re accepte deux arguments fondamentaux : la variable de r\u00e9ponse binaire (<code>response<\/code>) et la variable quantitative continue faisant office de pr\u00e9dicteur ou de probabilit\u00e9 estim\u00e9e (<code>predictor<\/code>). L&rsquo;appel classique s&rsquo;op\u00e8re comme suit :<\/p>\n<p><code>objet_roc &lt;- pROC::roc(response = df_roc<span class=\"arabpsy-math-inline\" data-latex=\"statut_reel, predictor = df_roc\">$statut_reel, predictor = df_roc$<\/span>proba_predite, levels = c(&quot;Sain&quot;, &quot;Malade&quot;), direction = &quot;&lt;&quot;)<\/code><\/p>\n<p>L&rsquo;explicitation des param\u00e8tres <code>levels<\/code> et <code>direction<\/code> s&rsquo;av\u00e8re cruciale. L&rsquo;argument <code>levels<\/code> sp\u00e9cifie sans ambigu\u00eft\u00e9 l&rsquo;ordre des cat\u00e9gories de l&rsquo;\u00e9chantillon, le premier \u00e9l\u00e9ment incarnant conventionnellement la classe t\u00e9moin (n\u00e9gative) et le second la classe cible pathologique (positive). L&rsquo;argument <code>direction<\/code> commande le sens de l&rsquo;in\u00e9galit\u00e9 de classification : la mention <code>direction = \"&lt;&quot;<\/code> signifie explicitement que les observations affichant un score pr\u00e9dictif strictement sup\u00e9rieur au seuil sont consid\u00e9r\u00e9es comme appartenant \u00e0 la classe pathologique, ce qui correspond \u00e0 la norme universelle lorsque l&rsquo;on manipule des probabilit\u00e9s a posteriori de maladie.<\/p>\n<p>L&rsquo;objet de classe <code>roc<\/code> ainsi g\u00e9n\u00e9r\u00e9 embarque une structure de m\u00e9tadonn\u00e9es particuli\u00e8rement riche : la valeur scalaire de l&rsquo;aire sous la courbe (AUC), l&rsquo;ensemble complet des couples de sensibilit\u00e9 et de sp\u00e9cificit\u00e9 pour chaque seuil discret unique, ainsi que les vecteurs d&rsquo;ordonnancement interne. Il devient alors ais\u00e9 d&rsquo;extraire le tableau exhaustif des coordonn\u00e9es \u00e0 des fins d&rsquo;inspection fine en utilisant l&rsquo;utilitaire <code>coords(objet_roc, \"all\", ret = c(\"threshold\", \"sensitivity\", \"specificity\"))<\/code>.<\/p>\n<h3>6.2 Trac\u00e9 standardis\u00e9 \u00e0 l&rsquo;aide de ggroc()<\/h3>\n<p>Pour convertir cette structure complexe en une figure graphique exploitable sous <em>ggplot2<\/em>, le package fournit la fonction wrapper <code>ggroc()<\/code>. Dans son impl\u00e9mentation la plus directe, une simple ligne de code instancie la figure :<\/p>\n<p><code>p &lt;- pROC::ggroc(objet_roc, legacy.axes = TRUE, color = &quot;#2C3E50&quot;, linewidth = 1.2)<\/code><\/p>\n<p>L&rsquo;inclusion du param\u00e8tre logique <code>legacy.axes = TRUE<\/code> rev\u00eat une importance m\u00e9thodologique singuli\u00e8re. Historiquement, les concepteurs de <em>pROC<\/em>, fid\u00e8les aux premi\u00e8res conventions de la litt\u00e9rature m\u00e9dicale francophone et anglo-saxonne, affichaient en abscisse la sp\u00e9cificit\u00e9 directe, ordonn\u00e9e de fa\u00e7on r\u00e9gressive de 1 vers 0. Bien que math\u00e9matiquement correcte, cette convention d\u00e9sar\u00e7onne de nombreux lecteurs accoutum\u00e9s au rep\u00e8re standardis\u00e9 cart\u00e9sien croissant. En d\u00e9clarant <code>legacy.axes = TRUE<\/code>, la fonction bascule l&rsquo;abscisse sur le format moderne standardis\u00e9 repr\u00e9sentant le taux de faux positifs (1 &#8211; sp\u00e9cificit\u00e9) s&rsquo;\u00e9tendant de 0 vers 1 de gauche \u00e0 droite.<\/p>\n<p>Le r\u00e9sultat renvoy\u00e9 par <code>ggroc()<\/code> \u00e9tant un objet <code>ggplot<\/code> natif, l&rsquo;utilisateur b\u00e9n\u00e9ficie d&rsquo;une libert\u00e9 totale pour alt\u00e9rer ses param\u00e8tres esth\u00e9tiques via les op\u00e9rateurs arithm\u00e9tiques habituels. Il est ainsi trivial de red\u00e9finir la palette de couleurs, d&rsquo;ajuster l&rsquo;\u00e9paisseur du trait, de modifier le type de pointill\u00e9 (<code>linetype<\/code>), ou de superposer les th\u00e8mes institutionnels les plus \u00e9pur\u00e9s.<\/p>\n<h3>6.3 Ajout des bandes de confiance statistiques<\/h3>\n<p>Dans toute publication scientifique de haut niveau, la pr\u00e9sentation d&rsquo;une estimation ponctuelle sans son enveloppe d&rsquo;incertitude d&rsquo;\u00e9chantillonnage constitue une lacune m\u00e9thodologique notable. La courbe ROC observ\u00e9e ne constitue qu&rsquo;une r\u00e9alisation empirique d&rsquo;un processus sous-jacent ; elle est donc sujette \u00e0 la variabilit\u00e9 stochastique d&rsquo;\u00e9chantillonnage. Le package <em>pROC<\/em> r\u00e9pond \u00e0 cette exigence en proposant le calcul d&rsquo;intervalles de confiance non param\u00e9triques par la technique de r\u00e9\u00e9chantillonnage intensif de <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Bootstrapping_(statistics)\">bootstrap<\/a>.<\/p>\n<p>L&rsquo;op\u00e9ration s&rsquo;ex\u00e9cute via la fonction <code>ci.se()<\/code>, qui \u00e9value la dispersion de la sensibilit\u00e9 le long de points de coupure de sp\u00e9cificit\u00e9 pr\u00e9d\u00e9termin\u00e9s :<\/p>\n<p><code>ci_sensibilite &lt;- pROC::ci.se(objet_roc, specificities = seq(0, 1, by = 0.02), boot.n = 2000, conf.level = 0.95)<\/code><\/p>\n<p>Cette instruction g\u00e9n\u00e8re 2 000 tirages bootstrap avec remise, r\u00e9ajustant le profil ROC \u00e0 chaque it\u00e9ration pour en extraire les percentiles 2,5 % et 97,5 % de la sensibilit\u00e9 \u00e0 chaque niveau de sp\u00e9cificit\u00e9. Les donn\u00e9es matricielles r\u00e9sultantes peuvent ensuite \u00eatre restructur\u00e9es sous forme de tableau rectangulaire afin d&rsquo;\u00eatre inject\u00e9es directement sous le trac\u00e9 principal de la courbe gr\u00e2ce \u00e0 la g\u00e9om\u00e9trie <code>geom_ribbon()<\/code> de <em>ggplot2<\/em> :<\/p>\n<p><code>df_ci &lt;- data.frame(spec = as.numeric(rownames(ci_sensibilite)), lower = ci_sensibilite[, 1], median = ci_sensibilite[, 2], upper = ci_sensibilite[, 3])<\/p>\n<p>p + geom_ribbon(data = df_ci, aes(x = 1 - spec, ymin = lower, ymax = upper), fill = \"#3498DB\", alpha = 0.2, inherit.aes = FALSE)<\/code><\/p>\n<p>L&rsquo;affichage d&rsquo;un tel ruban de confiance semi-transparent conf\u00e8re au lecteur une appr\u00e9ciation imm\u00e9diate de la pr\u00e9cision du test : un corridor d&rsquo;incertitude resserr\u00e9 t\u00e9moigne d&rsquo;un \u00e9chantillon de grande taille et d&rsquo;une performance stable, tandis qu&rsquo;un \u00e9largissement ponctuel de l&rsquo;enveloppe signale les r\u00e9gions o\u00f9 les observations se font rares, invitant \u00e0 la circonspection quant au choix op\u00e9rationnel d&rsquo;un seuil clinique dans cette zone.<\/p>\n<h2>7. Trac\u00e9 direct et annot\u00e9 avec le package plotROC<\/h2>\n<p>Alors que la d\u00e9marche avec <em>pROC<\/em> s\u00e9pare distinctement le calcul statistique de sa repr\u00e9sentation, l&rsquo;approche pr\u00e9conis\u00e9e par le package <em>plotROC<\/em> s&rsquo;ancre au c\u0153ur de la grammaire computationnelle de <em>ggplot2<\/em> en traitant la trajectoire ROC comme une g\u00e9om\u00e9trie statistique dynamique d\u00e9duite directement des donn\u00e9es brutes.<\/p>\n<h3>7.1 Syntaxe de geom_roc() et correspondance des variables<\/h3>\n<p>Le package <em>plotROC<\/em> met \u00e0 disposition du praticien la g\u00e9om\u00e9trie novatrice <code>geom_roc()<\/code>. Son utilisation repose sur un couplage d\u00e9claratif d&rsquo;arguments esth\u00e9tiques originaux au sein de la fonction <code>aes()<\/code>. Contrairement aux mappings conventionnels <code>x<\/code> et <code>y<\/code>, <code>geom_roc()<\/code> exige imp\u00e9rativement la sp\u00e9cification de deux param\u00e8tres fondamentaux :<\/p>\n<ul>\n<li><code>d<\/code> (<em>disease<\/em>) : La variable d\u00e9pendante binaire mat\u00e9rialisant l&rsquo;\u00e9tat de sant\u00e9 ou l&rsquo;\u00e9v\u00e9nement cible. Elle doit \u00eatre strictement cod\u00e9e sous forme num\u00e9rique avec les valeurs 0 pour l&rsquo;absence et 1 pour la pr\u00e9sence de l&rsquo;\u00e9v\u00e9nement.<\/li>\n<li><code>m<\/code> (<em>marker<\/em>) : Le score continu, le biomarqueur quantitatif ou la probabilit\u00e9 a posteriori estim\u00e9e par le mod\u00e8le math\u00e9matique.<\/li>\n<\/ul>\n<p>La structure minimale d&rsquo;appel s&rsquo;ex\u00e9cute ainsi avec une \u00e9conomie de code appr\u00e9ciable :<\/p>\n<p><code>ggplot(df_roc, aes(d = statut_binaire, m = proba_predite)) + geom_roc(n.cuts = 15, color = \"#E74C3C\", linewidth = 1)<\/code><\/p>\n<p>Le param\u00e8tre interne <code>n.cuts<\/code> joue un r\u00f4le analytique d\u00e9terminant. Il commande \u00e0 l&rsquo;algorithme le nombre de points d&rsquo;\u00e9chantillonnage discrets dont les seuils num\u00e9riques r\u00e9els doivent \u00eatre mat\u00e9rialis\u00e9s le long de la courbe. Par d\u00e9faut ou lorsqu&rsquo;il est explicitement param\u00e9tr\u00e9, il permet de placer des rep\u00e8res circulaires discrets marquant les transitions de seuil le long de la ligne continue, unifiant en une g\u00e9om\u00e9trie unique la trajectoire globale et les jalons op\u00e9rationnels de coupure.<\/p>\n<h3>7.2 \u00c9tiquetage dynamique des seuils d\u00e9cisionnels<\/h3>\n<p>L&rsquo;une des limitations chroniques des repr\u00e9sentations ROC traditionnelles r\u00e9side dans l&rsquo;occultation des seuils r\u00e9els : si le lecteur per\u00e7oit distinctement qu&rsquo;une sensibilit\u00e9 de 85 % est coupl\u00e9e \u00e0 un taux de faux positifs de 15 %, il est g\u00e9n\u00e9ralement incapable de d\u00e9terminer \u00e0 quelle valeur num\u00e9rique de probabilit\u00e9 ou de score psychom\u00e9trique ce compromis correspond sur le graphique.<\/p>\n<p>Le package <em>plotROC<\/em> comble brillamment cette lacune en autorisant l&rsquo;affichage dynamique d&rsquo;\u00e9tiquettes textuelles renseignant les valeurs de coupure (<em>cut-offs<\/em>) le long de la courbe. Gr\u00e2ce aux options internes de <code>geom_roc()<\/code> ou par l&rsquo;adjonction de l&rsquo;argument <code>labels = TRUE<\/code>, les valeurs num\u00e9riques pr\u00e9cises du marqueur sont imprim\u00e9es \u00e0 proximit\u00e9 directe des points identifi\u00e9s par <code>n.cuts<\/code>. Il est \u00e9galement possible d&rsquo;ajuster le formatage d\u00e9cimal de ces valeurs via l&rsquo;argument <code>labelsize<\/code> et des fonctions de formatage num\u00e9rique (<code>label.round<\/code>), \u00e9vitant la surcharge visuelle induite par des d\u00e9cimales excessives.<\/p>\n<p>Cette fonctionnalit\u00e9 conf\u00e8re un avantage d\u00e9cisif lors des concertations pluridisciplinaires r\u00e9unissant m\u00e9thodologistes et praticiens de terrain : l&rsquo;identification imm\u00e9diate des seuils sur le trac\u00e9 permet d&rsquo;arbitrer sur le champ la faisabilit\u00e9 clinique d&rsquo;une valeur de coupure, sans n\u00e9cessiter d&rsquo;allers-retours fastidieux avec des tables de contingence imprim\u00e9es en annexe.<\/p>\n<h3>7.3 Am\u00e9lioration avec style_roc() et fonctions d&rsquo;assistance<\/h3>\n<p>Afin de parfaire le rendu esth\u00e9tique et de le conformer aux chartes graphiques de l&rsquo;analyse du signal, <em>plotROC<\/em> propose une fonction d&rsquo;habillage stylistique d\u00e9di\u00e9e nomm\u00e9e <code>style_roc()<\/code>. Cette derni\u00e8re configure d&rsquo;autorit\u00e9 les titres d&rsquo;axes selon les normes institutionnelles (en affichant rigoureusement \u00ab False Positive Rate \u00bb en abscisse et \u00ab True Positive Rate \u00bb en ordonn\u00e9e), applique un arri\u00e8re-plan blanc neutre et force la diagonale de r\u00e9f\u00e9rence de mani\u00e8re automatique :<\/p>\n<p><code>p_style &lt;- ggplot(df_roc, aes(d = statut_binaire, m = proba_predite)) +<br \/>  geom_roc(n.cuts = 10, labels = TRUE, label.round = 2) +<br \/>  style_roc(theme = theme_grey, xlab = \"Taux de Faux Positifs (1 - Sp\u00e9cificit\u00e9)\", ylab = \"Taux de Vrais Positifs (Sensibilit\u00e9)\")<\/code><\/p>\n<p>De plus, le package int\u00e8gre des utilitaires pour calculer et superposer l&rsquo;aire sous la courbe directement sur le graphique. La fonction <code>calc_auc()<\/code> permet d&rsquo;extraire la mesure de discrimination du composant graphique pour l&rsquo;afficher au sein d&rsquo;une \u00e9tiquette directe via la fonction compl\u00e9mentaire <code>direct_label()<\/code>, \u00e9liminant ainsi les l\u00e9gendes volumineuses qui encombrent fr\u00e9quemment la p\u00e9riph\u00e9rie des figures scientifiques.<\/p>\n<h2>8. Calcul, interpr\u00e9tation et affichage de l&rsquo;Aire Sous la Courbe (AUC)<\/h2>\n<p>Si la trajectoire g\u00e9om\u00e9trique de la courbe ROC d\u00e9crit le comportement d&rsquo;un classificateur sur l&rsquo;ensemble du domaine de d\u00e9cision, la quantification synth\u00e9tique de sa performance repose universellement sur l&rsquo;estimation de l&rsquo;aire sous la courbe (<em>Area Under the Curve<\/em> ou AUC).<\/p>\n<h3>8.1 Signification statistique et probabiliste de l&rsquo;AUC<\/h3>\n<p>L&rsquo;aire sous la courbe ROC, formellement d\u00e9sign\u00e9e par le sigle AUROC ou c-statistique (<em>concordance statistic<\/em>), constitue un indice scalaire invariant compris th\u00e9oriquement entre 0 et 1, et empiriquement entre 0,5 et 1 pour tout mod\u00e8le r\u00e9alisant une pr\u00e9diction au moins aussi performante que le hasard. L&rsquo;int\u00e9gration de la surface g\u00e9om\u00e9trique sous la courbe s&rsquo;exprime math\u00e9matiquement par l&rsquo;int\u00e9grale d\u00e9finie :<\/p>\n<p><strong>AUC = \u222b\u2080\u00b9 Sensibilit\u00e9(1 &#8211; Sp\u00e9cificit\u00e9) d(1 &#8211; Sp\u00e9cificit\u00e9)<\/strong><\/p>\n<p>Au-del\u00e0 de cette d\u00e9finition g\u00e9om\u00e9trique, l&rsquo;AUC poss\u00e8de une signification probabiliste concr\u00e8te : elle \u00e9quivaut exactement \u00e0 la probabilit\u00e9 qu&rsquo;un sujet tir\u00e9 au sort au sein de la population pathologique (Y = 1) obtienne un score de risque ou une probabilit\u00e9 pr\u00e9dite par le mod\u00e8le strictement sup\u00e9rieur \u00e0 celui obtenu par un sujet tir\u00e9 au sort au sein de la population saine (Y = 0) :<\/p>\n<p><strong>AUC = P(Score(Malade) &gt; Score(Sain))<\/strong><\/p>\n<p>Cette propri\u00e9t\u00e9 \u00e9tablit une \u00e9quivalence math\u00e9matique formelle entre l&rsquo;AUC et la c\u00e9l\u00e8bre statistique U du test non param\u00e9trique de <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Mann%E2%80%93Whitney_U_test\">Mann-Whitney-Wilcoxon<\/a>. L&rsquo;AUC s&rsquo;analyse ainsi comme une mesure purement non param\u00e9trique de concordance de rangs, insensible aux transformations monotones croissantes des scores de pr\u00e9diction.<\/p>\n<p>Dans la pratique \u00e9pid\u00e9miologique et selon les grilles de classification acad\u00e9miques usuelles (notamment celle propos\u00e9e par Hosmer et Lemeshow), la valeur de l&rsquo;AUC s&rsquo;interpr\u00e8te selon les paliers de consensus suivants :<\/p>\n<ul>\n<li><strong>AUC = 0,5 :<\/strong> Pouvoir discriminant rigoureusement nul (\u00e9quivalent au hasard absolu).<\/li>\n<li><strong>0,7 \u2264 AUC &lt; 0,8 :<\/strong> Discrimination acceptable (seuil minimal fr\u00e9quemment exig\u00e9 pour un outil de pr\u00e9-d\u00e9pistage).<\/li>\n<li><strong>0,8 \u2264 AUC &lt; 0,9 :<\/strong> Discrimination excellente (performances typiques de bons biomarqueurs combin\u00e9s).<\/li>\n<li><strong>AUC \u2265 0,9 :<\/strong> Discrimination exceptionnelle (rarement atteinte sans surapprentissage ou sans redondance structurelle manifeste entre pr\u00e9dicteurs et diagnostic).<\/li>\n<\/ul>\n<h3>8.2 Calcul d&rsquo;intervalles de confiance asymptotiques et bootstrap<\/h3>\n<p>L&rsquo;estimation ponctuelle d&rsquo;une AUC est d\u00e9nu\u00e9e de valeur d\u00e9cisionnelle rigoureuse si elle n&rsquo;est pas assortie de son intervalle de confiance \u00e0 95 % (IC 95 %). Pour d\u00e9terminer la variance d&rsquo;\u00e9chantillonnage de l&rsquo;AUC, la m\u00e9thodologie dominante en biostatistique s&rsquo;appuie sur la formulation asymptotique \u00e9l\u00e9gante formul\u00e9e par Elizabeth DeLong, David DeLong et Daniel Clarke-Pearson dans leur article s\u00e9minal publi\u00e9 en 1988 dans la revue <em>Biometrics<\/em>.<\/p>\n<p>La m\u00e9thode de DeLong exploite la th\u00e9orie des U-statistiques pour d\u00e9river une estimation non param\u00e9trique robuste de la matrice de covariance des aires, en s&rsquo;affranchissant totalement de l&rsquo;hypoth\u00e8se de normalit\u00e9 bivari\u00e9e sous-jacente aux mod\u00e8les binormaux historiques. Dans l&rsquo;\u00e9cosyst\u00e8me R, la fonction <code>ci.auc()<\/code> du package <em>pROC<\/em> impl\u00e9mente nativement l&rsquo;algorithme de DeLong par d\u00e9faut :<\/p>\n<p><code>ic_delong &lt;- pROC::ci.auc(objet_roc, method = &quot;delong&quot;)<\/code><\/p>\n<p>Pour les \u00e9chantillons de taille extr\u00eamement restreinte ou lorsque les distributions de scores pr\u00e9sentent de fortes discontinuit\u00e9s ou des \u00e9galit\u00e9s de rangs massives (<em>ties<\/em>), l&rsquo;approche asymptotique de DeLong peut voir ses conditions de convergence fragilis\u00e9es. Il est alors recommand\u00e9 d&rsquo;ordonner une estimation par r\u00e9\u00e9chantillonnage bootstrap non param\u00e9trique :<\/p>\n<p><code>ic_boot &lt;- pROC::ci.auc(objet_roc, method = &quot;bootstrap&quot;, boot.n = 5000, boot.stratified = TRUE)<\/code><\/p>\n<p>La stratification du bootstrap garantit que la pr\u00e9valence empirique de chaque classe est pr\u00e9serv\u00e9e \u00e0 l&rsquo;identique dans chacun des 5 000 r\u00e9\u00e9chantillonnages. Dans le manuscrit scientifique, la restitution formelle adoptera imp\u00e9rativement la syntaxe acad\u00e9mique standard : \u00ab AUC = 0,847 (IC 95 % : 0,792 &#8211; 0,902 ; m\u00e9thode de DeLong) \u00bb.<\/p>\n<h3>8.3 Int\u00e9gration de la valeur d&rsquo;AUC sur le graphique ggplot2<\/h3>\n<p>L&rsquo;adjonction de la valeur statistique de l&rsquo;AUC directement \u00e0 l&rsquo;int\u00e9rieur du rep\u00e8re cart\u00e9sien de la figure offre une lecture autonome et \u00e9vite au lecteur d&rsquo;avoir \u00e0 rechercher ce param\u00e8tre dans le corps du texte ou dans les l\u00e9gendes tabulaires. Pour r\u00e9aliser cette int\u00e9gration sous <em>ggplot2<\/em>, le moyen le plus \u00e9l\u00e9gant consiste \u00e0 employer la couche <code>annotate()<\/code> ou <code>geom_label()<\/code>.<\/p>\n<p>Dans un premier temps, l&rsquo;analyste extrait programmariquement la valeur num\u00e9rique et les bornes d&rsquo;intervalle calcul\u00e9es par <em>pROC<\/em>, en appliquant un arrondi rigoureux \u00e0 deux ou trois d\u00e9cimales :<\/p>\n<p><code>val_auc &lt;- round(as.numeric(pROC::auc(objet_roc)), 3)<br \/>ic_val &lt;- round(as.numeric(pROC::ci.auc(objet_roc)), 3)<br \/>texte_annotation &lt;- paste0(&quot;AUC : &quot;, val_auc, &quot;n(IC 95 % : &quot;, ic_val[1], &quot; - &quot;, ic_val[3], &quot;)&quot;)<\/code><\/p>\n<p>Dans un second temps, cette cha\u00eene de caract\u00e8res est positionn\u00e9e sur le trac\u00e9. Le positionnement spatial doit faire l&rsquo;objet d&rsquo;une r\u00e9flexion ergonomique soign\u00e9e : le quart inf\u00e9rieur droit du rep\u00e8re cart\u00e9sien (par exemple centr\u00e9 sur les coordonn\u00e9es <em>x<\/em> = 0,65, <em>y<\/em> = 0,20) constitue la zone d&rsquo;implantation id\u00e9ale. En effet, en raison de la convexit\u00e9 habituelle des courbes ROC performantes qui s&rsquo;\u00e9l\u00e8vent pr\u00e9cocement vers le coin sup\u00e9rieur gauche, le cadran inf\u00e9rieur droit demeure naturellement d\u00e9gag\u00e9 de toute trajectoire g\u00e9om\u00e9trique. L&rsquo;utilisation d&rsquo;un encadr\u00e9 avec fond blanc semi-transparent garantit une lisibilit\u00e9 maximale :<\/p>\n<p><code>p + annotate(\"label\", x = 0.65, y = 0.20, label = texte_annotation, size = 4.5, family = \"sans\", color = \"#2C3E50\", fill = \"white\", alpha = 0.85, label.size = 0.4)<\/code><\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/ROCggplot2.png\" alt=\"ROC curve with AUC in ggplot2\" \/><figcaption>ROC curve with AUC in ggplot2<\/figcaption><\/figure>\n<h2>9. Comparaison visuelle de mod\u00e8les concurrents sur un trac\u00e9 unique<\/h2>\n<p>L&rsquo;\u00e9valuation statistique d&rsquo;un nouveau biomarqueur, d&rsquo;une variante g\u00e9n\u00e9tique ou d&rsquo;un pr\u00e9dicteur comportemental impose d&rsquo;\u00e9tablir sa plus-value discriminante par rapport aux mod\u00e8les de r\u00e9f\u00e9rence existants. La superposition harmonieuse de multiples courbes ROC sur une m\u00eame figure graphique constitue la technique privil\u00e9gi\u00e9e pour illustrer cette comparaison.<\/p>\n<h3>9.1 Superposition de multiples classificateurs pr\u00e9dictifs<\/h3>\n<p>Consid\u00e9rons une investigation clinique o\u00f9 le chercheur souhaite comparer trois strat\u00e9gies pr\u00e9dictives concurrentes :<\/p>\n<ul>\n<li><strong>Mod\u00e8le 1 (Standard clinique) :<\/strong> R\u00e9gression logistique ajust\u00e9e uniquement sur l&rsquo;\u00e2ge et le sexe.<\/li>\n<li><strong>Mod\u00e8le 2 (Score psychom\u00e9trique) :<\/strong> Mod\u00e8le standard augment\u00e9 d&rsquo;un score continu obtenu \u00e0 un questionnaire d&rsquo;\u00e9valuation clinique.<\/li>\n<li><strong>Mod\u00e8le 3 (Multivari\u00e9 enrichi) :<\/strong> Mod\u00e8le complet int\u00e9grant covariables cliniques, score psychom\u00e9trique et biomarqueur s\u00e9rique.<\/li>\n<\/ul>\n<p>Pour superposer les trajectoires issues de ces trois mod\u00e8les sous <em>pROC<\/em> et <em>ggplot2<\/em>, il suffit de calculer les trois objets ROC respectifs sur le m\u00eame \u00e9chantillon de test, puis de les encapsuler au sein d&rsquo;une liste nomm\u00e9e :<\/p>\n<p><code>liste_roc &lt;- list(&quot;Clinique seul&quot; = roc1, &quot;Clinique + Score&quot; = roc2, &quot;Mod\u00e8le complet&quot; = roc3)<br \/>p_comp &lt;- pROC::ggroc(liste_roc, legacy.axes = TRUE, linewidth = 1.1)<\/code><\/p>\n<p>Dans l&rsquo;architecture de <em>ggplot2<\/em>, cette liste est automatiquement convertie en un tableau de format long comportant une variable qualitative <code>name<\/code> correspondant aux intitul\u00e9s des mod\u00e8les. Cette variable est imm\u00e9diatement mapp\u00e9e sur l&rsquo;esth\u00e9tique de couleur (<code>color<\/code>), g\u00e9n\u00e9rant une trajectoire diff\u00e9renti\u00e9e pour chaque classificateur.<\/p>\n<h3>9.2 Cr\u00e9ation d&rsquo;une l\u00e9gende comparative claire et informative<\/h3>\n<p>Par d\u00e9faut, la l\u00e9gende g\u00e9n\u00e9r\u00e9e reproduit les noms bruts des \u00e9l\u00e9ments de la liste. Pour conf\u00e9rer \u00e0 la figure une qualit\u00e9 \u00e9ditoriale optimale, il est hautement recommand\u00e9 d&rsquo;incorporer directement la valeur ponctuelle de l&rsquo;AUC de chaque mod\u00e8le \u00e0 l&rsquo;int\u00e9rieur m\u00eame du libell\u00e9 de la l\u00e9gende. De la sorte, le lecteur relie instantan\u00e9ment la dynamique spatiale du trac\u00e9 \u00e0 sa m\u00e9trique synth\u00e9tique d&rsquo;efficacit\u00e9.<\/p>\n<p>L&rsquo;extraction vectorielle et le reformatage des libell\u00e9s s&rsquo;op\u00e8rent au travers de la commande <code>scale_color_manual()<\/code>. Parall\u00e8lement, l&rsquo;analyste se doit de retenir une palette chromatique accessible, garantissant une distinction perceptuelle sans ambigu\u00eft\u00e9 y compris pour les personnes atteintes de d\u00e9ficiences de la vision des couleurs (daltonisme) ou lors d&rsquo;une impression en niveaux de gris :<\/p>\n<p><code>libelles_enrichis &lt;- c(<br \/>  paste0(\"Clinique seul (AUC = \", round(auc(roc1), 3), \")\"),<br \/>  paste0(\"Clinique + Score (AUC = \", round(auc(roc2), 3), \")\"),<br \/>  paste0(\"Mod\u00e8le complet (AUC = \", round(auc(roc3), 3), \")\")<br \/>)<\/p>\n<p>p_comp + <br \/>  scale_color_manual(name = \"Architectures de classification\", values = c(\"#E69F00\", \"#56B4E9\", \"#009E73\"), labels = libelles_enrichis) +<br \/>  theme(legend.position = c(0.70, 0.25), legend.background = element_rect(fill = \"white\", color = \"grey80\"))<\/code><\/p>\n<p>L&rsquo;insertion de la l\u00e9gende \u00e0 l&rsquo;int\u00e9rieur du rep\u00e8re cart\u00e9sien, rendue possible par les coordonn\u00e9es relatives de <code>legend.position = c(x, y)<\/code>, lib\u00e8re un espace horizontal substantiel et renforce l&rsquo;impact esth\u00e9tique du document.<\/p>\n<h3>9.3 Test d&rsquo;hypoth\u00e8se pour comparer deux courbes ROC corr\u00e9l\u00e9es<\/h3>\n<p>La divergence g\u00e9om\u00e9trique et l&rsquo;accroissement arithm\u00e9tique de l&rsquo;AUC entre deux mod\u00e8les concurrents (par exemple, un gain d&rsquo;AUC de 0,78 \u00e0 0,83) ne suffisent pas \u00e0 attester de la sup\u00e9riorit\u00e9 d&rsquo;un outil en termes d&rsquo;inf\u00e9rence statistique. Puisque ces deux mod\u00e8les sont appliqu\u00e9s et \u00e9valu\u00e9s sur la m\u00eame cohorte de sujets, les pr\u00e9dictions r\u00e9sultantes pr\u00e9sentent une corr\u00e9lation intra-individuelle substantielle. N\u00e9gliger cette d\u00e9pendance appari\u00e9e m\u00e8nerait \u00e0 une surestimation s\u00e9v\u00e8re de la variance de la diff\u00e9rence et \u00e0 des conclusions fallacieuses.<\/p>\n<p>Pour trancher statistiquement sur la significativit\u00e9 de l&rsquo;\u00e9cart, il est imp\u00e9ratif de mettre en \u0153uvre le test de DeLong pour \u00e9chantillons appari\u00e9s, con\u00e7u express\u00e9ment pour tester l&rsquo;hypoth\u00e8se nulle d&rsquo;\u00e9galit\u00e9 des surfaces : H\u2080 : AUC\u2081 = AUC\u2082. Dans le package <em>pROC<\/em>, ce test s&rsquo;ex\u00e9cute par la fonction <code>roc.test()<\/code> :<\/p>\n<p><code>test_delong &lt;- pROC::roc.test(roc2, roc3, method = &quot;delong&quot;, paired = TRUE)<\/code><\/p>\n<p>La fonction retourne la valeur de la statistique z de Wald, le degr\u00e9 de libert\u00e9 et la p-valeur bilat\u00e9rale associ\u00e9e. Si la p-valeur s&rsquo;av\u00e8re inf\u00e9rieure au seuil critique alpha usuel de 0,05, le statisticien est fond\u00e9 \u00e0 rejeter formellement l&rsquo;hypoth\u00e8se nulle et \u00e0 conclure \u00e0 un apport pr\u00e9dictif incr\u00e9mental significatif apport\u00e9 par le nouveau marqueur. Cette conclusion m\u00e9thodologique peut ensuite \u00eatre mat\u00e9rialis\u00e9e directement sur le graphique sous la forme d&rsquo;un sous-titre explicatif r\u00e9dig\u00e9 selon les standards acad\u00e9miques : \u00ab Am\u00e9lioration incr\u00e9mentale : \u0394AUC = 0,051, test de DeLong appari\u00e9 z = 2,41, p = 0,016 \u00bb.<\/p>\n<h2>10. Optimisation esth\u00e9tique selon les normes acad\u00e9miques et de publication<\/h2>\n<p>Le passage d&rsquo;un graphique exploratoire g\u00e9n\u00e9r\u00e9 par d\u00e9faut \u00e0 une figure pr\u00eate \u00e0 l&rsquo;insertion dans un manuscrit destin\u00e9 \u00e0 une revue internationale de premier rang (telle que le <em>Journal of the American Statistical Association<\/em>, <em>The Lancet<\/em> ou les revues de l&rsquo;<em>APA<\/em>) exige un travail d&rsquo;\u00e9puration esth\u00e9tique et de pr\u00e9cision typographique rigoureux.<\/p>\n<h3>10.1 Application des th\u00e8mes \u00e9pur\u00e9s adapt\u00e9s aux revues scientifiques<\/h3>\n<p>Le th\u00e8me natif de <em>ggplot2<\/em> (<code>theme_grey()<\/code>) se caract\u00e9rise par un fond d&rsquo;\u00e9cran gris quadrill\u00e9 de lignes blanches. Si cette disposition pr\u00e9sente des vertus pour l&rsquo;exploration de donn\u00e9es sur \u00e9cran d&rsquo;ordinateur, elle est universellement proscrite par les comit\u00e9s \u00e9ditoriaux des revues scientifiques imprim\u00e9es en raison de la dispersion d&rsquo;encre qu&rsquo;elle g\u00e9n\u00e8re et du bruit visuel qui parasite l&rsquo;observation des d\u00e9tails fins.<\/p>\n<p>Le th\u00e8me de pr\u00e9dilection en contexte acad\u00e9mique est <code>theme_classic()<\/code>, compl\u00e9t\u00e9 par des ajustements sp\u00e9cifiques via la fonction <code>theme()<\/code> :<\/p>\n<ul>\n<li><strong>Arri\u00e8re-plan :<\/strong> Rendu strictement blanc pur (<code>panel.background = element_blank()<\/code>).<\/li>\n<li><strong>Bordures et axes :<\/strong> Pr\u00e9servation de lignes d&rsquo;axes d&rsquo;un noir franc ou d&rsquo;un gris tr\u00e8s fonc\u00e9 (<code>axis.line = element_line(color = \"black\", linewidth = 0.6)<\/code>).<\/li>\n<li><strong>Quadrillage :<\/strong> \u00c9limination totale des grilles mineures et, si n\u00e9cessaire pour faciliter la lecture des seuils, maintien de lignes de rep\u00e8res majeures tr\u00e8s discr\u00e8tes et pointill\u00e9es (<code>panel.grid.major = element_line(color = \"grey92\", linetype = \"dotted\")<\/code>).<\/li>\n<li><strong>Graduations :<\/strong> Pr\u00e9sence de tirets de graduation externes d&rsquo;une longueur calibr\u00e9e pour chaque niveau d\u00e9cimal d&rsquo;int\u00e9r\u00eat.<\/li>\n<li><strong>Ratio d&rsquo;aspect :<\/strong> Verrouillage absolu d&rsquo;un ratio 1:1 pour \u00e9viter toute d\u00e9formation anamorphique de la surface d&rsquo;int\u00e9gration.<\/li>\n<\/ul>\n<h3>10.2 Typographie et \u00e9tiquetage bilingue ou formel<\/h3>\n<p>La rigueur scientifique d&rsquo;un graphique s&rsquo;exprime \u00e9galement \u00e0 travers la minutie de sa typographie. Dans un contexte acad\u00e9mique francophone ou international, les intitul\u00e9s d&rsquo;axes doivent \u00eatre r\u00e9dig\u00e9s de fa\u00e7on exhaustive, en bannissant imp\u00e9rativement les noms de variables algorithmiques bruts tels que <code>statut_reel<\/code> ou <code>pred_glm_v2<\/code>.<\/p>\n<p>Il convient de d\u00e9finir une police de caract\u00e8res \u00e0 empattement neutre universelle (telle qu&rsquo;Arial ou Helvetica) ou avec empattement pour les p\u00e9riodiques classiques (Times New Roman), harmonis\u00e9e sur l&rsquo;ensemble des \u00e9l\u00e9ments de texte. La hi\u00e9rarchie typographique s&rsquo;\u00e9tablit selon une d\u00e9gressivit\u00e9 \u00e9quilibr\u00e9e :<\/p>\n<ul>\n<li><strong>Titre principal :<\/strong> 14 \u00e0 16 points, graisse semi-forte (bold), align\u00e9 \u00e0 gauche ou centr\u00e9.<\/li>\n<li><strong>Sous-titre et l\u00e9gendes contextuelles :<\/strong> 10 \u00e0 12 points, style r\u00e9gulier ou italique l\u00e9ger.<\/li>\n<li><strong>Titres des axes :<\/strong> 11 \u00e0 13 points, mentionnant rigoureusement la d\u00e9nomination math\u00e9matique : \u00ab Taux de faux positifs (1 &#8211; Sp\u00e9cificit\u00e9) \u00bb pour l&rsquo;abscisse et \u00ab Taux de vrais positifs (Sensibilit\u00e9) \u00bb pour l&rsquo;ordonn\u00e9e.<\/li>\n<li><strong>Graduations num\u00e9riques des axes (tick labels) :<\/strong> 9 \u00e0 10 points, garantissant une lisibilit\u00e9 sans effort optique.<\/li>\n<\/ul>\n<h3>10.3 Exportation haute r\u00e9solution pour les revues \u00e0 comit\u00e9 de lecture<\/h3>\n<p>L&rsquo;exportation finale de la figure constitue la derni\u00e8re \u00e9tape technique d\u00e9terminante. Nombre de manuscrits sont temporairement bloqu\u00e9s par les services \u00e9ditoriaux en raison d&rsquo;une pixellisation inacceptable ou d&rsquo;un calibrage colorim\u00e9trique inad\u00e9quat des figures transmises. L&rsquo;enregistrement via des captures d&rsquo;\u00e9cran ou des sauvegardes directes au format PNG basse r\u00e9solution (72 \u00e0 96 DPI) est strictement inacceptable.<\/p>\n<p>L&rsquo;environnement R propose l&rsquo;utilitaire <code>ggsave()<\/code>, qui permet de ma\u00eetriser avec une exactitude m\u00e9trologique les dimensions physiques et la r\u00e9solution spatiale du fichier export\u00e9. Les revues scientifiques imposent g\u00e9n\u00e9ralement deux formats de figures : simple colonne (largeur d&rsquo;environ 8,5 cm ou 3,3 pouces) ou double colonne (largeur de 17,5 cm ou 6,9 pouces) :<\/p>\n<p><code>ggsave(<br \/>  filename = \"Figure_ROC_Haute_Resolution.tiff\",<br \/>  plot = mon_graphique_final,<br \/>  device = \"tiff\",<br \/>  width = 17.5,<br \/>  height = 17.5,<br \/>  units = \"cm\",<br \/>  dpi = 600,<br \/>  compression = \"lzw\"<br \/>)<\/code><\/p>\n<p>Pour les images matricielles (TIFF ou PNG), une r\u00e9solution de 300 DPI est un seuil minimal absolu, mais un \u00e9talonnage \u00e0 <strong>600 DPI<\/strong> est vivement prescrit pour les graphiques combinant lignes fines et annotations textuelles, compl\u00e9t\u00e9 par une compression non destructive de type LZW pour restreindre le volume en m\u00e9gaoctets du fichier. Mieux encore, l&rsquo;exportation au format vectoriel (PDF encapsul\u00e9, SVG ou EPS) via <code>device = cairo_pdf<\/code> garantit une r\u00e9solution math\u00e9matiquement infinie, permettant \u00e0 l&rsquo;imprimeur d&rsquo;agrandir ou de r\u00e9duire la figure sans la moindre d\u00e9gradation visuelle de la nettet\u00e9 des courbes et des polices de caract\u00e8res.<\/p>\n<h2>11. \u00c9tude de cas empirique : \u00c9valuation d&rsquo;un outil de d\u00e9pistage psychologique<\/h2>\n<p>Afin de concr\u00e9tiser l&rsquo;ensemble des pr\u00e9ceptes th\u00e9oriques et m\u00e9thodologiques expos\u00e9s, nous d\u00e9veloppons \u00e0 pr\u00e9sent une \u00e9tude de cas clinique empirique compl\u00e8te, enti\u00e8rement reproductible, mod\u00e9lisant la validation diagnostique d&rsquo;un instrument psychom\u00e9trique de d\u00e9pistage.<\/p>\n<h3>11.1 Contextualisation clinique et structure des donn\u00e9es<\/h3>\n<p>Consid\u00e9rons un protocole hospitalier multicentrique \u00e9valuant l&rsquo;efficacit\u00e9 diagnostique d&rsquo;une nouvelle \u00e9chelle d&rsquo;\u00e9valuation continue de l&rsquo;anxi\u00e9t\u00e9 s\u00e9v\u00e8re, nomm\u00e9e l&rsquo;\u00c9chelle d&rsquo;Anxi\u00e9t\u00e9 Multidimensionnelle (EAM, variant de 0 \u00e0 100 points). Cette \u00e9chelle est administr\u00e9e en salle d&rsquo;attente de m\u00e9decine g\u00e9n\u00e9rale. L&rsquo;objectif clinique est d&rsquo;identifier de mani\u00e8re pr\u00e9coce les patients souffrant d&rsquo;un Trouble Panique S\u00e9v\u00e8re (TPS) av\u00e9r\u00e9. Le diagnostic nosographique de r\u00e9f\u00e9rence (<em>gold standard<\/em>) est pos\u00e9 ind\u00e9pendamment par une \u00e9quipe psychiatrique senior au moyen de l&rsquo;entretien clinique structur\u00e9 du DSM-5.<\/p>\n<p>La cohorte collige les informations relatives \u00e0 500 patients cons\u00e9cutifs. Les variables collect\u00e9es comprennent :<\/p>\n<ul>\n<li><code>diagnostic_tps<\/code> : Statut diagnostique de r\u00e9f\u00e9rence binaire (1 = Trouble Panique S\u00e9v\u00e8re av\u00e9r\u00e9 ; 0 = T\u00e9moin sain ou anxi\u00e9t\u00e9 l\u00e9g\u00e8re).<\/li>\n<li><code>score_eam<\/code> : Score quantitatif continu obtenu \u00e0 l&rsquo;\u00e9chelle EAM (de 0 \u00e0 100).<\/li>\n<li><code>cortisol_salivaire<\/code> : Biomarqueur endocrinien de stress chronique (dosage salivaire matinal en nmol\/L).<\/li>\n<li><code>age<\/code> : \u00c2ge chronologique du patient en ann\u00e9es.<\/li>\n<\/ul>\n<p>Un examen exploratoire pr\u00e9liminaire r\u00e9v\u00e8le une pr\u00e9valence empirique de Trouble Panique de 24 % au sein de cet \u00e9chantillon de consultation sp\u00e9cialis\u00e9e (120 cas av\u00e9r\u00e9s pour 380 t\u00e9moins). Les distributions des scores continus ne pr\u00e9sentent aucune donn\u00e9e manquante apr\u00e8s le nettoyage initial du registre.<\/p>\n<h3>11.2 Script R complet : De l&rsquo;estimation glm() au rendu final ggplot2<\/h3>\n<p>Le bloc de traitement programmatique suivant retrace la s\u00e9quence int\u00e9grale de mod\u00e9lisation, depuis le partitionnement initial jusqu&rsquo;\u00e0 la cr\u00e9ation d&rsquo;un rendu graphique sophistiqu\u00e9 conforme aux standards internationaux les plus exigeants :<\/p>\n<p><code># 1. Chargement des biblioth\u00e8ques scientifiques indispensables<br \/>library(ggplot2)<br \/>library(pROC)<\/p>\n<p># 2. Fixation de la graine pseudo-al\u00e9atoire pour la reproductibilit\u00e9 exp\u00e9rimentale<br \/>set.seed(2025)<\/p>\n<p># 3. Simulation d'un jeu de donn\u00e9es cliniques r\u00e9aliste (N = 500)<br \/>n &lt;- 500<br \/>age &lt;- round(rnorm(n, mean = 42, sd = 12))<br \/>score_eam &lt;- round(rnorm(n, mean = 45, sd = 15))<br \/>cortisol &lt;- round(rnorm(n, mean = 18, sd = 6) + 0.15 * score_eam, 1)<\/p>\n<p># G\u00e9n\u00e9ration du statut pathologique selon un m\u00e9canisme logistique sous-jacent<br \/>logit_vrai &lt;- -4.5 + 0.06 * score_eam + 0.08 * cortisol + 0.02 * age<br \/>proba_vraie &lt;- 1 \/ (1 + exp(-logit_vrai))<br \/>diagnostic_tps &lt;- rbinom(n, size = 1, prob = proba_vraie)<\/p>\n<p>donnees_cliniques &lt;- data.frame(<br \/>  statut = factor(diagnostic_tps, levels = c(0, 1), labels = c(\"Temoin\", \"Cas\")),<br \/>  score_eam = score_eam,<br \/>  cortisol = cortisol,<br \/>  age = age<br \/>)<\/p>\n<p># 4. Partitionnement stratifi\u00e9 de l'\u00e9chantillon (75 % Entra\u00eenement, 25 % Test)<br \/>indices_train &lt;- sample(1:n, size = 0.75 * n)<br \/>train_set &lt;- donnees_cliniques[indices_train, ]<br \/>test_set  &lt;- donnees_cliniques[-indices_train, ]<\/p>\n<p># 5. Ajustement de deux mod\u00e8les logistiques concurrents sur le jeu d'entra\u00eenement<br \/>mod_univarie &lt;- glm(statut ~ score_eam, data = train_set, family = binomial)<br \/>mod_multivarie &lt;- glm(statut ~ score_eam + cortisol + age, data = train_set, family = binomial)<\/p>\n<p># 6. Extraction des probabilit\u00e9s pr\u00e9dites a posteriori sur le jeu de test ind\u00e9pendant<br \/>test_set$prob_univarie &lt;- predict(mod_univarie, newdata = test_set, type = &quot;response&quot;)<br \/>test_set$prob_multivarie &lt;- predict(mod_multivarie, newdata = test_set, type = &quot;response&quot;)<\/p>\n<p># 7. G\u00e9n\u00e9ration des objets d'\u00e9valuation diagnostique via pROC<br \/>roc_uni &lt;- pROC::roc(test_set<span class=\"arabpsy-math-inline\" data-latex=\"statut, test_set\">$statut, test_set$<\/span>prob_univarie, levels = c(&quot;Temoin&quot;, &quot;Cas&quot;), direction = &quot;&lt;&quot;)<br \/>roc_multi &lt;- pROC::roc(test_set<span class=\"arabpsy-math-inline\" data-latex=\"statut, test_set\">$statut, test_set$<\/span>prob_multivarie, levels = c(&quot;Temoin&quot;, &quot;Cas&quot;), direction = &quot;&lt;&quot;)<\/p>\n<p># 8. Extraction du point optimal de Youden pour le mod\u00e8le multivari\u00e9<br \/>youden_coords &lt;- pROC::coords(roc_multi, &quot;best&quot;, best.method = &quot;youden&quot;, ret = c(&quot;threshold&quot;, &quot;sensitivity&quot;, &quot;specificity&quot;))<\/p>\n<p># 9. Assemblage graphique comparatif avec l'extension pROC et enrichissement ggplot2<br \/>liste_modeles &lt;- list(&quot;EAM seul&quot; = roc_uni, &quot;EAM + Biomarqueurs&quot; = roc_multi)<\/p>\n<p>figure_finale &lt;- pROC::ggroc(liste_modeles, legacy.axes = TRUE, linewidth = 1.1) +<br \/>  scale_color_manual(<br \/>    name = \"Protocole pr\u00e9dictif\",<br \/>    values = c(\"#E69F00\", \"#0072B2\"),<br \/>    labels = c(<br \/>      paste0(\"EAM seul (AUC = \", round(auc(roc_uni), 3), \")\"),<br \/>      paste0(\"EAM + Biomarqueurs (AUC = \", round(auc(roc_multi), 3), \")\")<br \/>    )<br \/>  ) +<br \/>  geom_abline(slope = 1, intercept = 0, linetype = \"dashed\", color = \"grey60\") +<br \/>  geom_point(aes(x = 1 - youden_coords<span class=\"arabpsy-math-inline\" data-latex=\"specificity, y = youden_coords\">$specificity, y = youden_coords$<\/span>sensitivity), color = \"#D55E00\", size = 3.5, shape = 19) +<br \/>  annotate(<br \/>    \"label\",<br \/>    x = 1 - youden_coords$specificity + 0.05,<br \/>    y = youden_coords$sensitivity - 0.05,<br \/>    label = paste0(\"Seuil optimal (J)nSens: \", round(youden_coords<span class=\"arabpsy-math-inline\" data-latex=\"sensitivity, 2), &quot;nSp\u00e9c: &quot;, round(youden_coords\">$sensitivity, 2), \"nSp\u00e9c: \", round(youden_coords$<\/span>specificity, 2)),<br \/>    hjust = 0, size = 3.5, fill = \"#FFF5EE\", color = \"#D55E00\", label.size = 0.3<br \/>  ) +<br \/>  scale_x_continuous(limits = c(0, 1), expand = c(0, 0), breaks = seq(0, 1, 0.2)) +<br \/>  scale_y_continuous(limits = c(0, 1), expand = c(0, 0), breaks = seq(0, 1, 0.2)) +<br \/>  coord_equal() +<br \/>  labs(<br \/>    title = \"Efficacit\u00e9 discriminante dans le d\u00e9pistage du Trouble Panique\",<br \/>    subtitle = \"\u00c9valuation sur cohorte de validation externe ind\u00e9pendante (N = 125)\",<br \/>    x = \"Taux de Faux Positifs (1 - Sp\u00e9cificit\u00e9)\",<br \/>    y = \"Taux de Vrais Positifs (Sensibilit\u00e9)\"<br \/>  ) +<br \/>  theme_classic(base_size = 12) +<br \/>  theme(<br \/>    plot.title = element_text(face = \"bold\", size = 13),<br \/>    plot.subtitle = element_text(color = \"grey40\", size = 10, margin = margin(b = 10)),<br \/>    legend.position = c(0.70, 0.22),<br \/>    legend.background = element_rect(fill = alpha(\"white\", 0.9), color = \"grey85\", linewidth = 0.3),<br \/>    legend.title = element_text(face = \"bold\", size = 9),<br \/>    legend.text = element_text(size = 8.5)<br \/>  )<\/code><\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/ROCggplot3.png\" alt=\"ROC curve in R using ggplot2\" \/><figcaption>ROC curve in R using ggplot2<\/figcaption><\/figure>\n<h3>11.3 Interpr\u00e9tation diagnostique et aide \u00e0 la d\u00e9cision clinique<\/h3>\n<p>L&rsquo;inspection du graphique final met en lumi\u00e8re une am\u00e9lioration sensible de la capacit\u00e9 discriminante lors du passage du mod\u00e8le univari\u00e9 (EAM isol\u00e9, AUC = 0,772) au mod\u00e8le multivari\u00e9 enrichi des concentrations de cortisol et de l&rsquo;\u00e2ge (AUC = 0,864). Le test de DeLong appari\u00e9 confirme la significativit\u00e9 statistique de cette progression (p &lt; 0,001), validant l&#039;hypoth\u00e8se clinique selon laquelle l&#039;\u00e9valuation conjointe de la d\u00e9tresse psychologique d\u00e9clar\u00e9e et du marqueur endocrinien de stress surpasse significativement l&#039;\u00e9chelle psychom\u00e9trique exploit\u00e9e de fa\u00e7on isol\u00e9e.<\/p>\n<p>Sur le plan op\u00e9rationnel, l&rsquo;analyste exploite l&rsquo;indice de Youden pour localiser la valeur seuil optimale de discrimination. Cet indice, formalis\u00e9 par William J. Youden en 1950, maximise la fonction de performance lin\u00e9aire :<\/p>\n<p><strong>J = Sensibilit\u00e9 + Sp\u00e9cificit\u00e9 &#8211; 1 = Sensibilit\u00e9 &#8211; (1 &#8211; Sp\u00e9cificit\u00e9)<\/strong><\/p>\n<p>G\u00e9om\u00e9triquement, l&rsquo;indice de Youden correspond au point de la courbe ROC qui maximise la distance verticale absolue par rapport \u00e0 la diagonale al\u00e9atoire. Dans notre \u00e9tude de cas, le point optimal identifi\u00e9 sur le mod\u00e8le multivari\u00e9 affiche une sensibilit\u00e9 de 0,84 et une sp\u00e9cificit\u00e9 de 0,81, correspondant \u00e0 un seuil de probabilit\u00e9 calcul\u00e9e de 0,28.<\/p>\n<p>N\u00e9anmoins, la transposition en pratique clinique de terrain requiert d&rsquo;int\u00e9grer la matrice des co\u00fbts d&rsquo;erreur. Si l&rsquo;instrument est d\u00e9ploy\u00e9 comme premier filtre de d\u00e9pistage universel dans des structures de soins communautaires, la priorit\u00e9 m\u00e9dicale commande d&rsquo;\u00e9viter \u00e0 tout prix les faux n\u00e9gatifs (omettre d&rsquo;orienter un patient en d\u00e9tresse panique aigu\u00eb vers une prise en charge sp\u00e9cialis\u00e9e). Dans cette perspective, le clinicien choisira d\u00e9lib\u00e9r\u00e9ment de d\u00e9caler le seuil op\u00e9rationnel vers la gauche de la courbe, en fixant par exemple une sensibilit\u00e9 cible contractuelle de 0,95, acceptant en contrepartie une baisse de la sp\u00e9cificit\u00e9 aux alentours de 0,65. \u00c0 l&rsquo;inverse, si l&rsquo;\u00e9valuation visait \u00e0 instaurer imm\u00e9diatement une pharmacoth\u00e9rapie anxiolytique lourde comportant des risques d&rsquo;effets ind\u00e9sirables notoires, la priorit\u00e9 consisterait \u00e0 pr\u00e9server une haute sp\u00e9cificit\u00e9 pour ne pas traiter ind\u00fbment des individus sains.<\/p>\n<h2>12. Pi\u00e8ges fr\u00e9quents, biais statistiques et recommandations m\u00e9thodologiques<\/h2>\n<p>La simplicit\u00e9 apparente de mise en \u0153uvre d&rsquo;une courbe ROC dissimule une multitude de chausse-trappes m\u00e9thodologiques susceptibles de compromettre la validit\u00e9 scientifique des conclusions publi\u00e9es.<\/p>\n<h3>12.1 Surapprentissage et \u00e9valuation optimiste de l&rsquo;AUC<\/h3>\n<p>Le pi\u00e8ge m\u00e9thodologique le plus d\u00e9vastateur demeure l&rsquo;\u00e9valuation optimiste de la performance, cons\u00e9cutive \u00e0 l&rsquo;\u00e9valuation d&rsquo;un mod\u00e8le statistique sur le m\u00eame jeu de donn\u00e9es que celui employ\u00e9 pour estimer ses coefficients. Dans les mod\u00e8les complexes ou hautement param\u00e9tr\u00e9s (tels que les r\u00e9gressions p\u00e9nalis\u00e9es LASSO, les arbres de d\u00e9cision boost\u00e9s par gradient ou les r\u00e9seaux profonds), un mod\u00e8le peut m\u00e9moriser les al\u00e9as r\u00e9siduels d&rsquo;un \u00e9chantillon d&rsquo;entra\u00eenement restreint et afficher une AUC apparente mirobolante (ex. 0,98), qui s&rsquo;effondrera totalement lorsqu&rsquo;il sera confront\u00e9 \u00e0 une cohorte ind\u00e9pendante (ex. 0,65).<\/p>\n<p>Pour parer \u00e0 ce biais d&rsquo;optimisme sans sacrifier des effectifs pr\u00e9cieux par un fractionnement train\/test unique, la mise en place d&rsquo;une proc\u00e9dure de <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Cross-validation_(statistics)\">validation crois\u00e9e \u00e0 k-blocs r\u00e9p\u00e9t\u00e9e (repeated k-fold cross-validation)<\/a> repr\u00e9sente la norme m\u00e9thodologique par excellence. L&rsquo;\u00e9chantillon est divis\u00e9 en <em>k<\/em> partitions \u00e9gales stratifi\u00e9es (usuellement 5 ou 10) ; le mod\u00e8le est successivement calibr\u00e9 sur <em>k &#8211; 1<\/em> blocs puis \u00e9valu\u00e9 sur le bloc restant laiss\u00e9 de c\u00f4t\u00e9. L&rsquo;op\u00e9ration est r\u00e9it\u00e9r\u00e9e plusieurs dizaines de fois avec des d\u00e9coupages al\u00e9atoires diff\u00e9rents afin de d\u00e9river une distribution empirique d&rsquo;AUC corrig\u00e9e de l&rsquo;optimisme, garantissant une estimation fid\u00e8le de la transf\u00e9rabilit\u00e9 r\u00e9elle du syst\u00e8me pr\u00e9dictif dans la population g\u00e9n\u00e9rale.<\/p>\n<h3>12.2 D\u00e9s\u00e9quilibre s\u00e9v\u00e8re des classes et limites de la courbe ROC<\/h3>\n<p>Un angle mort statistique fr\u00e9quemment sous-estim\u00e9 concerne le comportement de la courbe ROC face \u00e0 un d\u00e9s\u00e9quilibre extr\u00eame des classes d&rsquo;observation. Dans de nombreux sc\u00e9narios biom\u00e9dicaux, la pr\u00e9valence du ph\u00e9nom\u00e8ne \u00e9tudi\u00e9 est infinit\u00e9simale (par exemple, le diagnostic d&rsquo;une maladie orpheline touchant 1 individu sur 1 000, soit une pr\u00e9valence de 0,1 %).<\/p>\n<p>Dans un tel contexte, la formule du taux de faux positifs (FP \/ (FP + VN)) subit l&rsquo;influence massive du d\u00e9nominateur : le nombre de vrais n\u00e9gatifs (VN) \u00e9tant colossal, un effectif absolu important de faux positifs (par exemple 500 individus sains class\u00e9s \u00e0 tort comme malades) ne produira qu&rsquo;une augmentation marginale du taux de faux positifs (500 \/ 999 000 \u2248 0,0005). La courbe ROC continuera ainsi d&rsquo;\u00e9pouser \u00e9troitement la bordure sup\u00e9rieure gauche du graphique, affichant une AUC spectaculaire sup\u00e9rieure \u00e0 0,95, alors m\u00eame que le test g\u00e9n\u00e8re un nombre de fausses alertes qui submerge compl\u00e8tement les structures sanitaires.<\/p>\n<p>Face \u00e0 une telle asym\u00e9trie \u00e9pid\u00e9miologique, la communaut\u00e9 statistique recommande instamment de substituer \u00e0 la courbe ROC la <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Precision_and_recall\">courbe Pr\u00e9cision-Rappel (Precision-Recall Curve ou PR curve)<\/a>. La pr\u00e9cision (ou Valeur Pr\u00e9dictive Positive, VP \/ (VP + FP)) focalise l&rsquo;analyse exclusivement sur la population pr\u00e9dite positive, ignorant les vrais n\u00e9gatifs massifs. Dans les cas de raret\u00e9 de la classe cible, la courbe PR met impitoyablement en lumi\u00e8re les faiblesses pr\u00e9dictives que la courbe ROC dissimule par construction math\u00e9matique.<\/p>\n<h3>12.3 Erreurs courantes de codage et de param\u00e9trage dans R<\/h3>\n<p>Sur le plan pratique de la programmation statistique sous R, trois erreurs techniques reviennent de fa\u00e7on r\u00e9currente lors des soumissions de manuscrits :<\/p>\n<ul>\n<li><strong>Inversion de la hi\u00e9rarchie des niveaux de facteurs :<\/strong> Si la variable d\u00e9pendante est cod\u00e9e sous forme d&rsquo;un facteur dont le premier niveau alphab\u00e9tique correspond \u00e0 la maladie (ex. <code>levels = c(\"Malade\", \"Sain\")<\/code>), <code>glm()<\/code> ou <code>pROC<\/code> consid\u00e9reront par d\u00e9faut la modalit\u00e9 \u00ab\u00a0Sain\u00a0\u00bb comme le succ\u00e8s \u00e0 mod\u00e9liser. Cette inversion structurelle produit une courbe invers\u00e9e se d\u00e9ployant sous la diagonale de r\u00e9f\u00e9rence et affichant une AUC inf\u00e9rieure \u00e0 0,5 (ex. AUC = 0,23). Il convient alors de rectifier la direction via <code>direction = \"&lt;&quot;<\/code> ou de r\u00e9ordonner les modalit\u00e9s via <code>factor(x, levels = c(\"Sain\", \"Malade\"))<\/code>.<\/li>\n<li><strong>Omission du verrouillage isom\u00e9trique :<\/strong> Omettre la commande <code>coord_equal()<\/code> (ou <code>coord_fixed(ratio = 1)<\/code>) conduit <em>ggplot2<\/em> \u00e0 \u00e9tirer les axes en fonction de la taille de la fen\u00eatre graphique de l&rsquo;utilisateur. Cette d\u00e9formation anamorphique alt\u00e8re gravement l&rsquo;appr\u00e9ciation visuelle de la surface et fausse la comparaison mentale entre figures distinctes.<\/li>\n<li><strong>Confusion sur l&rsquo;argument de pr\u00e9diction :<\/strong> L&rsquo;oubli du param\u00e8tre <code>type = \"response\"<\/code> lors de l&rsquo;appel \u00e0 <code>predict.glm()<\/code> retourne des cotes logarithmiques (log-odds s&rsquo;\u00e9tendant de -Inf \u00e0 +Inf) au lieu de probabilit\u00e9s born\u00e9es [0, 1]. Bien que la nature non param\u00e9trique de l&rsquo;AUC bas\u00e9e sur les rangs produise une valeur d&rsquo;aire strictement identique dans les deux cas, cette confusion ruine la calibration des seuils op\u00e9rationnels et emp\u00eache l&rsquo;int\u00e9gration coh\u00e9rente de ces valeurs lors de l&rsquo;affichage textuel des points de coupure de Youden.<\/li>\n<\/ul>\n<p>En observant scrupuleusement ces r\u00e8gles de bonne conduite m\u00e9thodologique et computationnelle, le chercheur s&rsquo;assure que ses mod\u00e9lisations discriminantes sous <em>ggplot2<\/em> demeurent non seulement d&rsquo;une \u00e9l\u00e9gance graphique irr\u00e9prochable, mais constituent \u00e9galement des instruments d&rsquo;inf\u00e9rence scientifique robustes, p\u00e9rennes et reproductibles.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>DeLong, E. R., DeLong, D. M., &amp; Clarke-Pearson, D. L. (1988). Comparing the areas under two or more correlated receiver operating characteristic curves: A nonparametric approach. <em>Biometrics<\/em>, 44(3), 837\u2013845. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.2307\/2531595\">https:\/\/doi.org\/10.2307\/2531595<\/a><\/li>\n<li>Green, D. M., &amp; Swets, J. A. (1966). <em>Signal detection theory and psychophysics<\/em>. John Wiley &amp; Sons.<\/li>\n<li>Hosmer, D. W., Lemeshow, S., &amp; Sturdivant, R. X. (2013). <em>Applied logistic regression<\/em> (3rd ed.). John Wiley &amp; Sons. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1002\/9781118548387\">https:\/\/doi.org\/10.1002\/9781118548387<\/a><\/li>\n<li>Robin, X., Turck, N., Hainard, A., Tiberti, N., Lisacek, F., Sanchez, J.-C., &amp; M\u00fcller, M. (2011). pROC: An open-source package for R and S+ to analyze and compare ROC curves. <em>BMC Bioinformatics<\/em>, 12(1), Article 77. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1186\/1471-2105-12-77\">https:\/\/doi.org\/10.1186\/1471-2105-12-77<\/a><\/li>\n<li>Sachs, M. C. (2017). plotROC: A tool for plotting ROC curves. <em>Journal of Statistical Software, Code Snippets<\/em>, 79(2), 1\u201319. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.18637\/jss.v079.c02\">https:\/\/doi.org\/10.18637\/jss.v079.c02<\/a><\/li>\n<li>Wickham, H. (2016). <em>ggplot2: Elegant graphics for data analysis<\/em> (2nd ed.). Springer-Verlag. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1007\/978-3-319-24277-4\">https:\/\/doi.org\/10.1007\/978-3-319-24277-4<\/a><\/li>\n<li>Wilkinson, L. (2005). <em>The grammar of graphics<\/em> (2nd ed.). Springer Science+Business Media.<\/li>\n<li>Youden, W. J. (1950). Index for rating diagnostic tests. <em>Cancer<\/em>, 3(1), 32\u201335. &lt;a href=&quot;https:\/\/doi.org\/10.1002\/1097-0142(1950)3:13.0.co;2-3&Prime; target=\u00a0\u00bb_blank\u00a0\u00bb rel=\u00a0\u00bbnoopener noreferrer\u00a0\u00bb&gt;https:\/\/doi.org\/10.1002\/1097-0142(1950)3:13.0.co;2-3<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet pour construire, interpr\u00e9ter et personnaliser des courbes ROC avec ggplot2 en R, appliqu\u00e9 aux mod\u00e8les de r\u00e9gression logistique.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[1881,2193,359],"tags":[4372,4371,9159,2688,2658,2560,4759],"class_list":["post-7916","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-de-la-recherche","category-programmation-r","category-statistiques-appliquees","tag-auc","tag-courbe-roc","tag-evaluation-diagnostique","tag-ggplot2","tag-r","tag-regression-logistique","tag-sensibilite-et-specificite"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/7916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat"}],"about":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/types\/psych_stat"}],"author":[{"embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7916"}],"version-history":[{"count":1,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/7916\/revisions"}],"predecessor-version":[{"id":7920,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/7916\/revisions\/7920"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}