{"id":2930,"date":"2026-10-14T18:00:55","date_gmt":"2026-10-14T18:00:55","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-calculer-et-tracer-une-cdf-dans-r\/"},"modified":"2026-10-14T18:00:55","modified_gmt":"2026-10-14T18:00:55","slug":"comment-calculer-et-tracer-une-cdf-dans-r","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-calculer-et-tracer-une-cdf-dans-r","title":{"rendered":"Comment calculer et tracer une CDF dans R"},"content":{"rendered":"<p>L&rsquo;analyse des distributions quantitatives constitue le socle fondamental de l&rsquo;inf\u00e9rence statistique moderne, de la psychom\u00e9trie exp\u00e9rimentale et de la mod\u00e9lisation des sciences du comportement. Lorsqu&rsquo;un chercheur est confront\u00e9 \u00e0 un \u00e9chantillon empirique ou \u00e0 un mod\u00e8le stochastique th\u00e9orique, la tentation premi\u00e8re consiste fr\u00e9quemment \u00e0 condenser la r\u00e9alit\u00e9 observ\u00e9e sous la forme d&rsquo;un histogramme de fr\u00e9quences ou d&rsquo;une estimation de densit\u00e9 par noyau. Pourtant, ces repr\u00e9sentations courantes souffrent d&rsquo;imperfections m\u00e9thodologiques intrins\u00e8ques : la sensibilit\u00e9 arbitraire au d\u00e9coupage en intervalles de classes pour le premier, et la d\u00e9pendance critique au choix d&rsquo;une fen\u00eatre de lissage pour la seconde. Face \u00e0 ces limites, la fonction de r\u00e9partition cumulative, universellement d\u00e9sign\u00e9e par le sigle anglophone <em>CDF<\/em> pour <em>Cumulative Distribution Function<\/em>, s&rsquo;impose comme l&rsquo;outil analytique le plus robuste, le plus \u00e9l\u00e9gant et le plus rigoureux sur le plan math\u00e9matique.<\/p>\n<p>Dans l&rsquo;\u00e9cosyst\u00e8me du logiciel statistique R, v\u00e9ritable r\u00e9f\u00e9rence pour le calcul scientifique international, la fonction de r\u00e9partition b\u00e9n\u00e9ficie d&rsquo;une impl\u00e9mentation matricielle et fonctionnelle native d&rsquo;une rare puissance. Qu&rsquo;il s&rsquo;agisse de formaliser le comportement th\u00e9orique de lois de probabilit\u00e9 continues et discr\u00e8tes, ou de quantifier pas \u00e0 pas les rangs percentiles au sein d&rsquo;une cohorte exp\u00e9rimentale gr\u00e2ce \u00e0 la fonction de r\u00e9partition empirique (<em>eCDF<\/em>), R propose une dialectique compl\u00e8te alliant calcul analytique, calcul num\u00e9rique et rendu graphique vectoriel haute r\u00e9solution. La ma\u00eetrise de ces m\u00e9canismes ouvre des perspectives consid\u00e9rables pour l&rsquo;\u00e9valuation diagnostique, l&rsquo;\u00e9talonnage d&rsquo;\u00e9chelles de mesure psychologiques et la validation formelle d&rsquo;hypoth\u00e8ses distributionnelles via des tests d&rsquo;ad\u00e9quation non param\u00e9triques.<\/p>\n<p>Ce trait\u00e9 exhaustif a pour vocation d&rsquo;explorer l&rsquo;ensemble des dimensions conceptuelles, math\u00e9matiques, computationnelles et appliqu\u00e9es entourant le calcul et la visualisation des fonctions de r\u00e9partition dans R. Depuis les axiomes probabilistes fondateurs de Kolmogorov jusqu&rsquo;aux personnalisations graphiques avanc\u00e9es sous l&rsquo;environnement <em>ggplot2<\/em>, en passant par le traitement des ex &aelig;quo, l&rsquo;estimation des bandes de confiance non param\u00e9triques de Dvoretzky-Kiefer-Wolfowitz et la comparaison factorielle de protocoles cliniques, ce guide fournit aux chercheurs et analystes de donn\u00e9es un cadre op\u00e9ratoire complet, reproductible et fond\u00e9 sur les standards m\u00e9thodologiques les plus exigeants de la recherche contemporaine.<\/p>\n<h2>1. Introduction fondamentale \u00e0 la fonction de r\u00e9partition (CDF) en statistique<\/h2>\n<h3>1.1 D\u00e9finition math\u00e9matique et propri\u00e9t\u00e9s axiomatiques de la CDF<\/h3>\n<p>Sur le plan formel de la th\u00e9orie de la mesure et des probabilit\u00e9s, la fonction de r\u00e9partition d&rsquo;une variable al\u00e9atoire r\u00e9elle (X), not\u00e9e classiquement (F(x)) ou (F_X(x)), est d\u00e9finie sur l&rsquo;ensemble des nombres r\u00e9els (mathbb{R}) \u00e0 valeurs dans l&rsquo;intervalle unit\u00e9 ferm\u00e9 ([0, 1]). Elle exprime rigoureusement la probabilit\u00e9 que la variable al\u00e9atoire prenne une valeur inf\u00e9rieure ou \u00e9gale \u00e0 un seuil r\u00e9el d\u00e9termin\u00e9 (x), ce qui s&rsquo;\u00e9crit math\u00e9matiquement sous la forme : (F(x) = mathbb{P}(X le x)). Cette d\u00e9finition est universelle et s&rsquo;applique avec une \u00e9gale rigueur conceptuelle aux variables discr\u00e8tes, continues ou mixtes, conf\u00e9rant \u00e0 la fonction de r\u00e9partition une universalit\u00e9 que ne poss\u00e8de pas la fonction de densit\u00e9.<\/p>\n<p>Pour \u00eatre qualifi\u00e9e de fonction de r\u00e9partition au sens des axiomes probabilistes formalis\u00e9s par le math\u00e9maticien <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/encyclopediaofmath.org\/wiki\/Kolmogorov_axioms\">Andre\u00ef Kolmogorov<\/a>, toute fonction (F) doit imp\u00e9rativement satisfaire trois propri\u00e9t\u00e9s fondamentales. Premi\u00e8rement, (F) est une fonction monotone croissante au sens large, ce qui implique que pour tout couple de r\u00e9els ((x_1, x_2)) tel que (x_1 &lt; x_2), nous avons obligatoirement (F(x_1) le F(x_2)). Deuxi\u00e8mement, la fonction est continue \u00e0 droite en tout point de son domaine de d\u00e9finition, signifiant que la limite de (F(x + epsilon)) lorsque (epsilon) tend vers z\u00e9ro par valeurs positives est rigoureusement \u00e9gale \u00e0 (F(x)). Troisi\u00e8mement, la fonction ob\u00e9it \u00e0 des limites asymptotiques strictes \u00e0 l&#039;infini : la limite de (F(x)) lorsque (x) tend vers moins l&#039;infini est \u00e9gale \u00e0 z\u00e9ro, tandis que sa limite lorsque (x) tend vers plus l&#039;infini est \u00e9gale \u00e0 un.<\/p>\n<p>Dans le cadre d&rsquo;une variable al\u00e9atoire continue admettant une fonction de densit\u00e9 de probabilit\u00e9 (f(x)), la fonction de r\u00e9partition correspond \u00e0 l&rsquo;int\u00e9grale de cette densit\u00e9 calcul\u00e9e depuis l&rsquo;infini n\u00e9gatif jusqu&rsquo;au point d&rsquo;\u00e9valuation : (F(x) = int_{-infty}^{x} f(t) , mathrm{d}t). Inversement, lorsque la variable \u00e9tudi\u00e9e est discr\u00e8te, la fonction de r\u00e9partition prend la forme d&rsquo;une fonction en escalier obtenue par la sommation des probabilit\u00e9s ponctuelles : (F(x) = sum_{x_i le x} mathbb{P}(X = x_i)). Cette formulation garantit une tra\u00e7abilit\u00e9 int\u00e9grale de la masse de probabilit\u00e9 accumul\u00e9e \u00e0 travers l&rsquo;ensemble du domaine de support.<\/p>\n<h3>1.2 Importance de la CDF dans l&rsquo;analyse quantitative et psychom\u00e9trique<\/h3>\n<p>Dans les sciences comportementales, la psychologie diff\u00e9rentielle et la psychom\u00e9trie contemporaine, la fonction de r\u00e9partition joue un r\u00f4le structurel pr\u00e9pond\u00e9rant dans l&rsquo;\u00e9talonnage et la standardisation des instruments d&rsquo;\u00e9valuation. L&rsquo;interpr\u00e9tation d&rsquo;un score brut issu d&rsquo;une \u00e9chelle d&rsquo;anxi\u00e9t\u00e9, d&rsquo;un test d&rsquo;efficience intellectuelle ou d&rsquo;un inventaire de personnalit\u00e9 est d\u00e9nu\u00e9e de sens clinique en l&rsquo;absence de r\u00e9f\u00e9rentiel normatif. En convertissant directement un score continu ou discret en un rang percentile via l&rsquo;expression (100 times F(x)), la fonction de r\u00e9partition permet de situer instantan\u00e9ment un sujet au sein d&rsquo;une population de r\u00e9f\u00e9rence, identifiant avec exactitude le pourcentage d&rsquo;individus obtenant une performance inf\u00e9rieure ou \u00e9gale \u00e0 la sienne.<\/p>\n<p>Au-del\u00e0 de la simple conversion en percentiles ou en d\u00e9ciles, l&rsquo;analyse de la morphologie de la fonction de r\u00e9partition offre une lecture imm\u00e9diate et globale des propri\u00e9t\u00e9s distributionnelles sans subir les d\u00e9formations visuelles inh\u00e9rentes aux d\u00e9coupages d&rsquo;histogrammes. La pente locale de la courbe informe directement sur la dispersion et la concentration des observations : une pente abrupte signale une densit\u00e9 \u00e9lev\u00e9e d&rsquo;observations autour d&rsquo;une valeur centrale, tandis qu&rsquo;un aplatissement prolong\u00e9 trahit la pr\u00e9sence de queues de distribution \u00e9paisses ou d&rsquo;une forte variabilit\u00e9 interindividuelle. Cette caract\u00e9ristique est cruciale pour \u00e9valuer l&rsquo;asym\u00e9trie (<em>skewness<\/em>) et l&rsquo;aplatissement (<em>kurtosis<\/em>) des profils de scores sans imposer a priori une hypoth\u00e8se de normalit\u00e9.<\/p>\n<p>Dans le champ de la chronom\u00e9trie mentale et de la psychologie cognitive, o\u00f9 l&rsquo;on \u00e9tudie les latences cognitives et les temps de r\u00e9action \u00e0 des t\u00e2ches d&rsquo;attention soutenue ou de discrimination perceptive, les distributions pr\u00e9sentent presque syst\u00e9matiquement une asym\u00e9trie positive marqu\u00e9e. La fonction de r\u00e9partition empirique permet d&rsquo;extraire fid\u00e8lement les quantiles critiques sans recourir \u00e0 des transformations logarithmiques parfois trompeuses, facilitant l&rsquo;\u00e9valuation pr\u00e9cise des m\u00e9canismes sous-jacents de traitement de l&rsquo;information et la d\u00e9tection d&rsquo;alt\u00e9rations ex\u00e9cutives subtiles.<\/p>\n<h3>1.3 Pr\u00e9sentation des outils disponibles dans l&rsquo;\u00e9cosyst\u00e8me R<\/h3>\n<p>L&rsquo;environnement statistique R offre une architecture particuli\u00e8rement riche et coh\u00e9rente pour le traitement des fonctions de r\u00e9partition, structur\u00e9e autour du package de base <em>stats<\/em> ainsi que d&rsquo;extensions graphiques modernes. Le moteur natif repose sur un pr\u00e9fixe conventionnel d\u00e9di\u00e9 : la lettre <code>p<\/code> (pour <em>probability<\/em>). Associ\u00e9e aux noms abr\u00e9g\u00e9s des lois th\u00e9oriques, elle donne naissance \u00e0 un ensemble standardis\u00e9 d&rsquo;outils analytiques tels que <code>pnorm()<\/code> pour la loi normale, <code>pt()<\/code> pour la distribution de Student, <code>pchisq()<\/code> pour le Chi-deux, ou encore <code>pexp()<\/code> et <code>pgamma()<\/code> pour les lois exponentielles et gamma. Ces fonctions calculent de mani\u00e8re instantan\u00e9e et hautement optimis\u00e9e la valeur exacte de (F(x)) pour n&rsquo;importe quel vecteur de quantiles.<\/p>\n<p>Pour le versant empirique, R int\u00e8gre la puissante fonction d&rsquo;ordre sup\u00e9rieur <code>ecdf()<\/code>, qui prend en argument un vecteur num\u00e9rique de donn\u00e9es brutes pour renvoyer un objet fonctionnel de premi\u00e8re classe appartenant \u00e0 la cat\u00e9gorie des <code>stepfun<\/code> (fonctions en escalier). Cet objet encapsule l&rsquo;int\u00e9gralit\u00e9 de la fonction de r\u00e9partition empirique de l&rsquo;\u00e9chantillon et peut lui-m\u00eame \u00eatre interrog\u00e9 comme n&rsquo;importe quelle fonction R standard pour \u00e9valuer la probabilit\u00e9 cumul\u00e9e associ\u00e9e \u00e0 des valeurs arbitraires, qu&rsquo;elles soient ou non pr\u00e9sentes dans le jeu de donn\u00e9es initial.<\/p>\n<p>Sur le plan de la visualisation, l&rsquo;utilisateur a le choix entre deux paradigmes compl\u00e9mentaires : le syst\u00e8me graphique de base (<em>base R<\/em>), qui autorise des rendus rapides, l\u00e9gers et hautement param\u00e9trables via la m\u00e9thode <code>plot.ecdf()<\/code> et la fonction <code>curve()<\/code>, et la grammaire des graphiques d\u00e9ploy\u00e9e par le package <em>ggplot2<\/em>. Ce dernier propose la couche statistique d\u00e9di\u00e9e <code>stat_ecdf()<\/code>, permettant une int\u00e9gration fluide au sein de flux de manipulation de donn\u00e9es complexes, avec une gestion native du facettage multi-groupes et une personnalisation esth\u00e9tique conforme aux standards des publications scientifiques internationales.<\/p>\n<h2>2. Distinction math\u00e9matique et analytique entre PDF et CDF<\/h2>\n<h3>2.1 Diff\u00e9rences conceptuelles entre densit\u00e9 (PDF) et probabilit\u00e9 cumul\u00e9e (CDF)<\/h3>\n<p>Pour comprendre pleinement la port\u00e9e m\u00e9thodologique de la fonction de r\u00e9partition, il est imp\u00e9ratif d&rsquo;\u00e9tablir une distinction sans \u00e9quivoque entre la fonction de densit\u00e9 de probabilit\u00e9, d\u00e9sign\u00e9e par le sigle <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/mathworld.wolfram.com\/ProbabilityDensityFunction.html\">PDF (Probability Density Function)<\/a>, et la fonction de r\u00e9partition cumulative (CDF). Pour une variable continue, la densit\u00e9 (f(x)) repr\u00e9sente le taux d&rsquo;accumulation instantan\u00e9 de probabilit\u00e9 au voisinage imm\u00e9diat du point (x). Sur le plan infinit\u00e9simal, la densit\u00e9 est d\u00e9finie comme la d\u00e9riv\u00e9e premi\u00e8re de la fonction de r\u00e9partition : (f(x) = frac{mathrm{d}F(x)}{mathrm{d}x}). Par cons\u00e9quent, la valeur ponctuelle (f(x)) ne correspond en aucun cas \u00e0 une probabilit\u00e9 directe, mais \u00e0 une intensit\u00e9 de probabilit\u00e9 par unit\u00e9 de mesure, pouvant parfaitement d\u00e9passer la valeur 1 lorsque la variance du ph\u00e9nom\u00e8ne est tr\u00e8s faible.<\/p>\n<p>\u00c0 l&rsquo;inverse, l&rsquo;ordonn\u00e9e de la fonction de r\u00e9partition (F(x)) repr\u00e9sente une mesure probabiliste authentique, born\u00e9e sans exception entre 0 et 1. G\u00e9om\u00e9triquement, alors que l&rsquo;\u00e9valuation d&rsquo;une densit\u00e9 requiert le calcul d&rsquo;une surface sous la courbe entre deux bornes pour obtenir une probabilit\u00e9 exploitable, la fonction de r\u00e9partition d\u00e9livre imm\u00e9diatement cette probabilit\u00e9 sous la forme d&rsquo;une simple coordonn\u00e9e verticale. Ainsi, la probabilit\u00e9 cumul\u00e9e correspond \u00e0 l&rsquo;int\u00e9grale d\u00e9finie de la densit\u00e9 depuis l&rsquo;origine du support jusqu&rsquo;au point d&rsquo;int\u00e9r\u00eat, transformant une op\u00e9ration de quadrature g\u00e9om\u00e9trique complexe en une simple lecture ponctuelle d&rsquo;ordonn\u00e9e.<\/p>\n<p>Cette divergence conceptuelle se traduit par une sup\u00e9riorit\u00e9 technique notable de la CDF lorsqu&rsquo;il s&rsquo;agit d&rsquo;analyser des donn\u00e9es d&rsquo;\u00e9chantillonnage. L&rsquo;estimation non param\u00e9trique d&rsquo;une densit\u00e9 par noyau (<em>Kernel Density Estimation<\/em>, accessible sous R via la fonction <code>density()<\/code>) n\u00e9cessite de param\u00e9trer arbitrairement une forme de noyau (gaussien, \u00e9panechnikov) et surtout une largeur de bande (<em>bandwidth<\/em>). Un sous-lissage engendre une courbe parasit\u00e9e par de multiples artefacts locaux, tandis qu&rsquo;un sur-lissage masque des bimodalit\u00e9s r\u00e9elles. La fonction de r\u00e9partition empirique s&rsquo;affranchit totalement de cette subjectivit\u00e9 en conservant une objectivit\u00e9 num\u00e9rique absolue.<\/p>\n<h3>2.2 Avantages m\u00e9thodologiques de la CDF sur l&rsquo;histogramme<\/h3>\n<p>Bien que l&rsquo;histogramme demeure la m\u00e9thode la plus populaire pour explorer visuellement une distribution univari\u00e9e, il constitue l&rsquo;un des estimateurs les plus fragiles et les plus trompeurs sur le plan statistique. Sa g\u00e9om\u00e9trie d\u00e9pend intimement de deux param\u00e8tres arbitrairement fix\u00e9s par l&rsquo;utilisateur ou par les algorithmes par d\u00e9faut du logiciel : la largeur des classes (le pas de d\u00e9coupage) et le positionnement pr\u00e9cis de l&rsquo;origine de la premi\u00e8re classe. Une simple translation de la fronti\u00e8re des bacs de quelques unit\u00e9s peut radicalement m\u00e9tamorphoser l&rsquo;allure g\u00e9n\u00e9rale de la distribution, cr\u00e9ant des faux pics de fr\u00e9quence ou dissimulant des asym\u00e9tries cruciales.<\/p>\n<p>La fonction de r\u00e9partition empirique \u00e9limine int\u00e9gralement cette source d&rsquo;erreur m\u00e9thodologique. Puisqu&rsquo;elle ne proc\u00e8de \u00e0 aucun regroupement artificiel en classes d&rsquo;intervalles, elle pr\u00e9serve l&rsquo;int\u00e9gralit\u00e9 de l&rsquo;information contenue dans le jeu de donn\u00e9es initial, point par point. Chaque observation individuelle (x_i) est rigoureusement prise en compte sous la forme d&rsquo;un saut de discontinuit\u00e9 d&rsquo;amplitude (1\/n), o\u00f9 (n) d\u00e9signe la taille totale de l&rsquo;\u00e9chantillon. Aucune hypoth\u00e8se d&rsquo;agr\u00e9gation n&rsquo;est requise, ce qui garantit une neutralit\u00e9 analytique totale.<\/p>\n<p>De surcro\u00eet, la robustesse statistique de la CDF s&rsquo;av\u00e8re nettement sup\u00e9rieure face aux \u00e9chantillons de taille modeste ou hautement asym\u00e9triques. Alors qu&rsquo;un histogramme appliqu\u00e9 \u00e0 un effectif de 30 observations produit un trac\u00e9 hach\u00e9, erratique et difficilement interpr\u00e9table, la fonction de r\u00e9partition empirique g\u00e9n\u00e8re une trajectoire monotone ordonn\u00e9e, facilitant la comparaison visuelle avec des mod\u00e8les th\u00e9oriques et limitant les erreurs d&rsquo;interpr\u00e9tation dues \u00e0 la variance d&rsquo;\u00e9chantillonnage.<\/p>\n<h3>2.3 Passage analytique entre probabilit\u00e9 ponctuelle et cumul\u00e9e<\/h3>\n<p>Le formalisme de la fonction de r\u00e9partition offre un cadre de calcul analytique extr\u00eamement direct pour d\u00e9terminer les probabilit\u00e9s d&rsquo;appartenance \u00e0 n&rsquo;importe quel intervalle de l&rsquo;axe r\u00e9el. En vertu des axiomes de finie additivit\u00e9 des probabilit\u00e9s, la probabilit\u00e9 qu&rsquo;une observation se situe strictement au-dessus d&rsquo;une borne inf\u00e9rieure (a) et en de\u00e7\u00e0 ou au niveau d&rsquo;une borne sup\u00e9rieure (b) est donn\u00e9e par la diff\u00e9rence exacte entre les valeurs prises par la fonction de r\u00e9partition en ces deux bornes :<\/p>\n<p>[mathbb{P}(a &lt; X le b) = F(b) &#8211; F(a)]<\/p>\n<p>Pour calculer la probabilit\u00e9 de survie, c&rsquo;est-\u00e0-dire la probabilit\u00e9 que la variable d\u00e9passe un seuil critique (x), l&rsquo;expression d\u00e9coule directement du principe de compl\u00e9mentarit\u00e9 : (mathbb{P}(X &gt; x) = 1 &#8211; F(x)). Dans le langage R, ces op\u00e9rations s&rsquo;effectuent sans aucune d\u00e9rivation complexe gr\u00e2ce aux arguments vectoris\u00e9s des fonctions de r\u00e9partition. Par exemple, l&rsquo;\u00e9valuation de (mathbb{P}(-1.96 &lt; X le 1.96)) pour une loi normale centr\u00e9e r\u00e9duite s&#039;ex\u00e9cute nativement par la soustraction <code>pnorm(1.96) - pnorm(-1.96)<\/code>, d\u00e9livrant avec une extr\u00eame pr\u00e9cision le r\u00e9sultat classique de 0.95 (soit 95 % de l&rsquo;aire sous la courbe).<\/p>\n<p>Un autre passage analytique primordial r\u00e9side dans l&rsquo;inversion de la fonction de r\u00e9partition, couramment d\u00e9nomm\u00e9e fonction quantile ou fonction de r\u00e9partition inverse, not\u00e9e (Q(p) = F^{-1}(p)) pour (p in ]0, 1[). Si la CDF prend en entr\u00e9e une valeur m\u00e9trique et renvoie une probabilit\u00e9 cumul\u00e9e, la fonction quantile r\u00e9alise le chemin inverse en associant \u00e0 chaque niveau de probabilit\u00e9 la borne num\u00e9rique exacte correspondante. Dans R, ces fonctions inverses sont pr\u00e9fix\u00e9es par la lettre <code>q<\/code>, \u00e0 l&rsquo;image de <code>qnorm()<\/code> ou <code>qchisq()<\/code>, cr\u00e9ant une bijection fonctionnelle indispensable pour l&rsquo;inf\u00e9rence param\u00e9trique et non param\u00e9trique.<\/p>\n<h2>3. Pr\u00e9paration de l&rsquo;environnement de travail et g\u00e9n\u00e9ration des donn\u00e9es<\/h2>\n<h3>3.1 Configuration de session R et gestion des d\u00e9pendances<\/h3>\n<p>Pour garantir la reproductibilit\u00e9 totale des proc\u00e9dures analytiques et des rendus graphiques d\u00e9velopp\u00e9s tout au long de cette \u00e9tude, il est fondamental de structurer rigoureusement la session R d\u00e8s son initialisation. Les bonnes pratiques imposent de s&rsquo;assurer de la coh\u00e9rence de l&rsquo;environnement de travail, de documenter la version active du moteur R et de charger les biblioth\u00e8ques logicielles sp\u00e9cialis\u00e9es requises pour la manipulation des donn\u00e9es et la visualisation avanc\u00e9e.<\/p>\n<p>Trois packages principaux enrichissent l&rsquo;\u00e9cosyst\u00e8me de base de R pour notre propos : <em>ggplot2<\/em> pour la construction modulaire de visualisations de haute tenue acad\u00e9mique, <em>scales<\/em> pour le formatage pr\u00e9cis des axes et des \u00e9tiquettes probabilistes en pourcentages, et <em>dplyr<\/em> pour le filtrage et la restructuration matricielle des jeux de donn\u00e9es d&rsquo;observation. L&rsquo;installation de ces modules s&rsquo;effectue via les m\u00e9canismes standards du CRAN, et leur chargement en m\u00e9moire est encapsul\u00e9 au d\u00e9but du script d&rsquo;analyse. Par ailleurs, la gestion des g\u00e9n\u00e9rateurs de nombres pseudo-al\u00e9atoires constitue une exigence de premier ordre pour tout protocole computationnel impliquant des simulations stochastiques.<\/p>\n<p>Le code d&rsquo;initialisation suivant \u00e9tablit les fondations de l&rsquo;espace de travail en fixant la graine al\u00e9atoire via l&rsquo;instruction <code>set.seed(42)<\/code>, garantissant que chaque tirage probabiliste sera rigoureusement identique sur n&rsquo;importe quel ordinateur r\u00e9ex\u00e9cutant le script :<\/p>\n<p><code># Configuration reproductible de la session R<br \/>\noptions(scipen = 999, stringsAsFactors = FALSE)<\/p>\n<p># Chargement des biblioth\u00e8ques scientifiques<br \/>\nif (!requireNamespace(\"ggplot2\", quietly = TRUE)) install.packages(\"ggplot2\")<br \/>\nif (!requireNamespace(\"scales\", quietly = TRUE)) install.packages(\"scales\")<br \/>\nif (!requireNamespace(\"dplyr\", quietly = TRUE)) install.packages(\"dplyr\")<\/p>\n<p>library(ggplot2)<br \/>\nlibrary(scales)<br \/>\nlibrary(dplyr)<\/p>\n<p># Fixation de la graine pour reproductibilit\u00e9 absolue<br \/>\nset.seed(42)<\/code><\/p>\n<h3>3.2 G\u00e9n\u00e9ration de jeux de donn\u00e9es simul\u00e9s selon des lois connues<\/h3>\n<p>Afin d&rsquo;\u00e9prouver la validit\u00e9 des m\u00e9thodes d&rsquo;estimation empirique par rapport aux trajectoires th\u00e9oriques exactes, la simulation num\u00e9rique repr\u00e9sente un paradigme d&rsquo;une redoutable efficacit\u00e9 p\u00e9dagogique et m\u00e9thodologique. Nous allons g\u00e9n\u00e9rer trois vecteurs num\u00e9riques distincts simulant des contextes exp\u00e9rimentaux fr\u00e9quemment rencontr\u00e9s en neurosciences cognitives et en psychom\u00e9trie : une distribution sym\u00e9trique gaussienne, une distribution asym\u00e9trique log-normale et une distribution exponentielle.<\/p>\n<p>Le premier vecteur, baptis\u00e9 <code>scores_qi<\/code>, simule les scores composites d&rsquo;efficience intellectuelle d&rsquo;une cohorte de 200 individus selon une loi normale d&rsquo;esp\u00e9rance (mu = 100) et d&rsquo;\u00e9cart-type (sigma = 15). Le second vecteur, nomm\u00e9 <code>latences_ms<\/code>, mod\u00e9lise les temps de r\u00e9action (en millisecondes) de 300 participants soumis \u00e0 une t\u00e2che d&rsquo;inhibition attentionnelle, suivant une distribution log-normale d\u00e9finie par un param\u00e8tre moyen sur l&rsquo;\u00e9chelle log de (mu_{log} = 6.2) et une variabilit\u00e9 (sigma_{log} = 0.35). Le troisi\u00e8me vecteur, <code>temps_attente<\/code>, illustre les intervalles inter-r\u00e9ponses sous une loi exponentielle de param\u00e8tre de taux (lambda = 0.05).<\/p>\n<p>L&rsquo;impl\u00e9mentation sous R s&rsquo;articule directement autour des fonctions de simulation pr\u00e9fix\u00e9es par <code>r<\/code> (pour <em>random<\/em>) :<\/p>\n<p><code># Simulation d'\u00e9chantillons selon des mod\u00e8les distributionnels contrast\u00e9s<br \/>\ntaille_echantillon &lt;- 250<\/p>\n<p># 1. Distribution Gaussienne sym\u00e9trique (ex: Scores standardis\u00e9s)<br \/>\nscores_qi &lt;- rnorm(n = taille_echantillon, mean = 100, sd = 15)<\/p>\n<p># 2. Distribution Log-Normale asym\u00e9trique positive (ex: Latences cognitives)<br \/>\nlatences_ms &lt;- rlnorm(n = taille_echantillon, meanlog = 6.2, sdlog = 0.35)<\/p>\n<p># 3. Distribution Exponentielle d\u00e9croissante (ex: Temps de survie \/ vigilance)<br \/>\ntemps_attente &lt;- rexp(n = taille_echantillon, rate = 0.05)<\/p>\n<p># Contr\u00f4le typologique de l'int\u00e9grit\u00e9 num\u00e9rique des vecteurs g\u00e9n\u00e9r\u00e9s<br \/>\nstr(scores_qi)<br \/>\nsummary(scores_qi)<\/code><\/p>\n<h3>3.3 Importation et nettoyage de donn\u00e9es r\u00e9elles d&rsquo;observation<\/h3>\n<p>L&rsquo;analyse de donn\u00e9es r\u00e9elles impose des pr\u00e9cautions m\u00e9thodologiques substantielles, en raison de la pr\u00e9sence in\u00e9vitable de valeurs manquantes (<em>missing data<\/em>, repr\u00e9sent\u00e9es par <code>NA<\/code> dans R), de doublons ou de scores aberrants r\u00e9sultant d&rsquo;erreurs de saisie ou de dysfonctionnements de capteurs de mesure. Pour illustrer ce sc\u00e9nario de terrain, nous concevons un protocole d&rsquo;importation et d&rsquo;assainissement appliqu\u00e9 \u00e0 des donn\u00e9es tabulaires repr\u00e9sentatives d&rsquo;une enqu\u00eate clinique en sant\u00e9 mentale.<\/p>\n<p>Avant d&rsquo;ex\u00e9cuter le calcul de la fonction de r\u00e9partition empirique, le traitement des valeurs manquantes doit \u00eatre conduit avec un discernement critique. La fonction <code>ecdf()<\/code> de base rejette par d\u00e9faut les vecteurs corrompus par des valeurs non d\u00e9finies, rendant l&rsquo;extraction impossible sans purge ou imputation pr\u00e9alable. Deux approches s&rsquo;offrent alors au chercheur : une suppression par liste (<em>pairwise\/listwise deletion<\/em>) via l&rsquo;instruction <code>na.omit()<\/code> ou un filtrage explicite au sein d&rsquo;une cha\u00eene d&rsquo;op\u00e9rations vectoris\u00e9es.<\/p>\n<p><code># Simulation d'un jeu de donn\u00e9es brut avec art\u00e9facts et valeurs manquantes<br \/>\ndf_clinique_brut &lt;- data.frame(<br \/>\n&nbsp;&nbsp;id_patient = 1:120,<br \/>\n&nbsp;&nbsp;score_depression = c(rnorm(115, mean = 24, sd = 6), rep(NA, 5)),<br \/>\n&nbsp;&nbsp;groupe = rep(c(\"Temoin\", \"Therapie\"), each = 60)<br \/>\n)<\/p>\n<p># Proc\u00e9dure de nettoyage rigoureux et d'exclusion des observations invalides<br \/>\ndf_clinique_nettoye %<br \/>\n&nbsp;&nbsp;filter(!is.na(score_depression)) %&gt;%<br \/>\n&nbsp;&nbsp;filter(score_depression &gt;= 0 &amp; score_depression &lt;= 60) # Bornage m\u00e9trique th\u00e9orique<\/p>\n<p># Extraction du vecteur atomique \u00e9pur\u00e9 pour traitement statistique ult\u00e9rieur<br \/>\nvecteur_scores &lt;- df_clinique_nettoye$score_depression<br \/>\ncat(\"Nombre d'observations valides exploitables :\", length(vecteur_scores), \"n\")<\/code><\/p>\n<h2>4. Calcul de la fonction de r\u00e9partition empirique avec ecdf()<\/h2>\n<h3>4.1 Fonctionnement interne et structure de l&rsquo;objet ecdf<\/h3>\n<p>Au c\u0153ur du dispositif computationnel de R r\u00e9side la fonction <code>ecdf()<\/code>, abr\u00e9viation directe de <em>Empirical Cumulative Distribution Function<\/em>. L&rsquo;algorithme ex\u00e9cut\u00e9 par cette primitive statistique repose sur un ordonnancement initial strict du vecteur d&rsquo;entr\u00e9e (x). Soit un \u00e9chantillon de (n) observations r\u00e9elles ordonn\u00e9es de mani\u00e8re croissante : (x_{(1)} le x_{(2)} le dots le x_{(n)}). La fonction de r\u00e9partition empirique, conventionnellement not\u00e9e (F_n(x)), assigne \u00e0 chaque observation ordonn\u00e9e un incr\u00e9ment probabiliste fixe \u00e9gal \u00e0 (1\/n). Elle est formellement d\u00e9finie par l&rsquo;expression math\u00e9matique suivante :<\/p>\n<p>[F_n(x) = frac{1}{n} sum_{i=1}^{n} mathbb{I}_{(-infty, x]}(x_i)]<\/p>\n<p>o\u00f9 (mathbb{I}_{A}) d\u00e9signe la fonction indicatrice prenant la valeur 1 lorsque l&rsquo;\u00e9v\u00e9nement (x_i le x) est v\u00e9rifi\u00e9, et 0 dans le cas contraire.<\/p>\n<p>Lorsque l&rsquo;utilisateur ex\u00e9cute l&rsquo;instruction <code>fn &lt;- ecdf(vecteur_scores)<\/code>, R ne produit pas un simple tableau de donn\u00e9es statique, mais instancie un v\u00e9ritable objet fonctionnel dot\u00e9 d&rsquo;attributs sp\u00e9cifiques. L&rsquo;objet ainsi g\u00e9n\u00e9r\u00e9 h\u00e9rite simultan\u00e9ment de trois classes d&rsquo;objets : <code>ecdf<\/code>, <code>stepfun<\/code> et <code>function<\/code>. Cette architecture permet \u00e0 l&rsquo;objet <code>fn<\/code> d&rsquo;\u00eatre invoqu\u00e9 directement avec la syntaxe standard d&rsquo;une fonction R : en passant une valeur quelconque (t) en param\u00e8tre (par exemple <code>fn(25)<\/code>), le moteur ex\u00e9cute une recherche dichotomique ultrarapide sur le vecteur tri\u00e9 en m\u00e9moire et renvoie la proportion empirique d&rsquo;observations inf\u00e9rieures ou \u00e9gales \u00e0 cette valeur.<\/p>\n<p><code># Instanciation de l'objet de r\u00e9partition empirique<br \/>\nfonction_repartition_empirique &lt;- ecdf(vecteur_scores)<\/p>\n<p># Examen de la nature structurelle et des classes de l'objet<br \/>\nclass(fonction_repartition_empirique)<br \/>\ntypeof(fonction_repartition_empirique)<\/p>\n<p># \u00c9valuation dynamique pour une valeur seuil clinique arbitraire (ex: score de 20)<br \/>\nprobabilite_score_20 &lt;- fonction_repartition_empirique(20)<br \/>\ncat(\"Proportion cumul\u00e9e observ\u00e9e sous le score 20 :\", round(probabilite_score_20, 4), \"n\")<\/code><\/p>\n<h3>4.2 Extraction des caract\u00e9ristiques math\u00e9matiques de l&rsquo;objet<\/h3>\n<p>En tant que fonction en escalier d\u00e9riv\u00e9e de la classe <code>stepfun<\/code>, un objet <code>ecdf<\/code> encapsule des composantes math\u00e9matiques intrins\u00e8ques qu&rsquo;il est possible d&rsquo;extraire de mani\u00e8re programmatique \u00e0 des fins d&rsquo;inspection fine ou de mod\u00e9lisation math\u00e9matique. La caract\u00e9ristique fondamentale r\u00e9side dans l&rsquo;ensemble des points de saut, d\u00e9sign\u00e9s sous le terme de n\u0153uds ou <em>knots<\/em>. La fonction R <code>knots()<\/code> permet d&rsquo;extraire directement le vecteur tri\u00e9 des valeurs uniques observ\u00e9es qui provoquent une discontinuit\u00e9 sur la courbe cumul\u00e9e.<\/p>\n<p>En l&rsquo;absence d&rsquo;ex &aelig;quo au sein de l&rsquo;\u00e9chantillon, le nombre de n\u0153uds correspond rigoureusement \u00e0 la taille d&rsquo;\u00e9chantillon (n). En pr\u00e9sence de valeurs identiques r\u00e9p\u00e9t\u00e9es, le nombre de n\u0153uds se r\u00e9duit au nombre de valeurs distinctes, chaque n\u0153ud concentrant une hauteur de marche proportionnelle \u00e0 sa multiplicit\u00e9. \u00c0 chaque point de saut correspond une valeur de proportion cumul\u00e9e. Les bornes extr\u00eames de l&rsquo;objet ob\u00e9issent strictement aux propri\u00e9t\u00e9s limites universelles : pour toute valeur strictement inf\u00e9rieure au minimum de l&rsquo;\u00e9chantillon (x_{(1)}), la fonction renvoie exactement 0 ; pour le minimum lui-m\u00eame, elle prend la valeur (1\/n) ; et pour toute valeur sup\u00e9rieure ou \u00e9gale au maximum observ\u00e9 (x_{(n)}), la fonction se verrouille sur la valeur asymptotique absolue de 1.<\/p>\n<p><code># Extraction des points de discontinuit\u00e9 (n\u0153uds de saut)<br \/>\nnoeuds_saut &lt;- knots(fonction_repartition_empirique)<br \/>\ncat(\"Nombre total de n\u0153uds identifi\u00e9s :\", length(noeuds_saut), \"n\")<\/p>\n<p># Calcul des probabilit\u00e9s cumul\u00e9es exactes associ\u00e9es \u00e0 chaque n\u0153ud<br \/>\nproportions_cumulees &lt;- fonction_repartition_empirique(noeuds_saut)<\/p>\n<p># V\u00e9rification computationnelle des conditions aux limites d'\u00e9chantillonnage<br \/>\nvaleur_min &lt;- min(vecteur_scores)<br \/>\nvaleur_max &lt;- max(vecteur_scores)<\/p>\n<p>cat(\"Fn(min - 1)  =\", fonction_repartition_empirique(valeur_min - 1), \"n\") # Doit renvoyer 0<br \/>\ncat(\"Fn(min)      =\", fonction_repartition_empirique(valeur_min), \"n\")     # Doit renvoyer 1\/n (ou k\/n)<br \/>\ncat(\"Fn(max)      =\", fonction_repartition_empirique(valeur_max), \"n\")     # Doit renvoyer 1.0<\/code><\/p>\n<h3>4.3 Interrogation probabiliste et calcul de percentiles empiriques<\/h3>\n<p>L&rsquo;exploitation pratique de l&rsquo;objet <code>ecdf<\/code> s&rsquo;av\u00e8re particuli\u00e8rement puissante lors des d\u00e9marches diagnostiques et d&rsquo;interpr\u00e9tation normative. Dans un protocole clinique, l&rsquo;analyste cherche continuellement \u00e0 r\u00e9pondre \u00e0 deux questions compl\u00e9mentaires : d&rsquo;une part, quelle est la proportion de la population pr\u00e9sentant un niveau de s\u00e9v\u00e9rit\u00e9 symptomatique inf\u00e9rieur ou \u00e9gal \u00e0 un score pivot donn\u00e9 ? D&rsquo;autre part, quel est le score plancher correspondant aux 10 % ou aux 5 % des individus les plus s\u00e9v\u00e8rement atteints ?<\/p>\n<p>La premi\u00e8re interrogation se r\u00e9sout par simple passage d&rsquo;un scalaire ou d&rsquo;un vecteur num\u00e9rique \u00e0 l&rsquo;objet fonctionnel. La seconde interrogation mobilise l&rsquo;op\u00e9ration inverse, \u00e0 savoir la fonction <code>quantile()<\/code>. En R, la fonction <code>quantile()<\/code> accepte un vecteur de probabilit\u00e9s cibles compris entre 0 et 1 (argument <code>probs<\/code>) et applique par d\u00e9faut l&rsquo;un des neuf algorithmes d&rsquo;interpolation quantile document\u00e9s par Hyndman et Fan (le type 7 \u00e9tant le standard de base sous R). La combinaison synchronis\u00e9e de <code>ecdf()<\/code> et de <code>quantile()<\/code> offre une boucle d&rsquo;analyse compl\u00e8te, reliant sans friction l&rsquo;espace m\u00e9trique des scores au continuum probabiliste unitaire.<\/p>\n<p><code># 1. \u00c9valuation probabiliste : Interrogation directe de scores pivots<br \/>\nscores_seuils &lt;- c(15, 20, 25, 30)<br \/>\npourcentages_cumules &lt;- fonction_repartition_empirique(scores_seuils) * 100<\/p>\n<p>resultats_eval &lt;- data.frame(<br \/>\n&nbsp;&nbsp;Score_Brut = scores_seuils,<br \/>\n&nbsp;&nbsp;Rang_Percentile = round(pourcentages_cumules, 2)<br \/>\n)<br \/>\nprint(resultats_eval)<\/p>\n<p># 2. Inversion quantile : Identification des seuils correspondant aux d\u00e9ciles cliniques<br \/>\ndeciles_cibles &lt;- seq(0.10, 0.90, by = 0.10)<br \/>\nvaleurs_deciles &lt;- quantile(vecteur_scores, probs = deciles_cibles)<br \/>\nprint(valeurs_deciles)<\/code><\/p>\n<h2>5. Visualisation graphique de base de la CDF empirique avec plot()<\/h2>\n<h3>5.1 Syntaxe fondamentale et rendu par d\u00e9faut de plot.ecdf()<\/h3>\n<p>Le syst\u00e8me graphique de base de R int\u00e8gre une m\u00e9thode polymorphique sp\u00e9cifiquement assign\u00e9e \u00e0 la classe <code>ecdf<\/code> : la fonction <code>plot.ecdf()<\/code>, invoqu\u00e9e automatiquement d\u00e8s lors que la commande g\u00e9n\u00e9rique <code>plot()<\/code> re\u00e7oit en argument principal un objet issu de <code>ecdf()<\/code>. Cette m\u00e9thode de trac\u00e9 g\u00e9n\u00e8re instantan\u00e9ment une repr\u00e9sentation graphique vectorielle de la fonction de r\u00e9partition empirique sans n\u00e9cessiter l&rsquo;\u00e9criture d&rsquo;une seule ligne d&rsquo;algorithme g\u00e9om\u00e9trique suppl\u00e9mentaire.<\/p>\n<p>Par d\u00e9faut, le trac\u00e9 g\u00e9n\u00e9r\u00e9 adopte fid\u00e8lement la morphologie en escalier prescrite par la th\u00e9orie probabiliste. Des segments horizontaux traduisent la constance de la probabilit\u00e9 cumul\u00e9e entre deux observations successives, tandis que de petits cercles ouverts ou pleins sont dessin\u00e9s au niveau des n\u0153uds pour expliciter la continuit\u00e9 \u00e0 droite de l&rsquo;op\u00e9rateur math\u00e9matique. Le syst\u00e8me configure automatiquement l&rsquo;axe des ordonn\u00e9es sur l&rsquo;intervalle ([0, 1]), offrant un cadrage sans distorsion de l&rsquo;ensemble de la masse d&rsquo;\u00e9chantillonnage.<\/p>\n<p><code># Trac\u00e9 \u00e9l\u00e9mentaire par d\u00e9faut sous le moteur graphique de base R<br \/>\nplot(fonction_repartition_empirique)<\/code><\/p>\n<figure class=\"wpt-preserved-image\"><img fetchpriority=\"high\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/cdfR1.png\" alt=\"\" \/><\/figure>\n<p>Bien que ce rendu brut soit d&rsquo;une rigueur math\u00e9matique irr\u00e9prochable, son esth\u00e9tique initiale est volontairement \u00e9pur\u00e9e et s&rsquo;av\u00e8re insuffisante pour l&rsquo;\u00e9laboration de documents de recherche formels. Les titres d&rsquo;axes adoptent par d\u00e9faut la syntaxe brute des variables R, le titre principal reprend le nom de l&rsquo;objet d&rsquo;appel, et l&rsquo;\u00e9paisseur du trait peut para\u00eetre trop menue sur des \u00e9crans ou impressions haute densit\u00e9. Une personnalisation minutieuse des arguments graphiques s&rsquo;av\u00e8re donc indispensable.<\/p>\n<h3>5.2 Personnalisation des param\u00e8tres graphiques de base<\/h3>\n<p>Pour hisser le trac\u00e9 graphique aux standards des publications acad\u00e9miques, la m\u00e9thode <code>plot.ecdf()<\/code> met \u00e0 disposition un riche \u00e9ventail d&rsquo;arguments de contr\u00f4le esth\u00e9tique et structurel. Les arguments fondamentaux d&rsquo;habillage textuel comprennent <code>xlab<\/code> pour la l\u00e9gende m\u00e9trique de l&rsquo;axe horizontal, <code>ylab<\/code> pour l&rsquo;ordonn\u00e9e probabiliste, <code>main<\/code> pour le titre g\u00e9n\u00e9ral de l&rsquo;illustration et <code>sub<\/code> pour d&rsquo;\u00e9ventuelles notes m\u00e9thodologiques de bas de page.<\/p>\n<p>Un enjeu visuel majeur concerne le traitement des transitions de marche d&rsquo;escalier. L&rsquo;argument bool\u00e9en <code>verticals<\/code> permet de d\u00e9cider si les lignes verticales reliant les paliers doivent \u00eatre rendues visibles (<code>verticals = TRUE<\/code>) ou laiss\u00e9es invisibles (<code>verticals = FALSE<\/code>). Dans les travaux appliqu\u00e9s, l&rsquo;activation des lignes verticales est largement pl\u00e9biscit\u00e9e car elle conf\u00e8re une lisibilit\u00e9 imm\u00e9diate \u00e0 la trajectoire globale de la courbe, en particulier lorsque la taille d&rsquo;\u00e9chantillon est cons\u00e9quente. Par ailleurs, la pr\u00e9sence des marqueurs circulaires aux n\u0153uds de discontinuit\u00e9 peut \u00eatre d\u00e9sactiv\u00e9e gr\u00e2ce \u00e0 l&rsquo;option <code>do.points = FALSE<\/code>, \u00e9vitant ainsi la saturation visuelle g\u00e9n\u00e9r\u00e9e par l&rsquo;accumulation de dizaines de points noirs superpos\u00e9s.<\/p>\n<p><code># Personnalisation structurelle avanc\u00e9e du trac\u00e9 de base<br \/>\nplot(<br \/>\n&nbsp;&nbsp;fonction_repartition_empirique,<br \/>\n&nbsp;&nbsp;verticals = TRUE,<br \/>\n&nbsp;&nbsp;do.points = FALSE,<br \/>\n&nbsp;&nbsp;main = \"Fonction de R\u00e9partition Empirique (eCDF) des Scores Cliniques\",<br \/>\n&nbsp;&nbsp;xlab = \"Score brut \u00e0 l'inventaire d'\u00e9valuation\",<br \/>\n&nbsp;&nbsp;ylab = \"Probabilit\u00e9 cumul\u00e9e F_n(x)\",<br \/>\n&nbsp;&nbsp;col.01line = \"gray70\", # Couleur des asymptotes horizontales \u00e0 0 et 1<br \/>\n&nbsp;&nbsp;lty.01line = 2         # Type de tiret pour les lignes asymptotiques<br \/>\n)<\/code><\/p>\n<h3>5.3 Ajustement du style de trac\u00e9, couleurs et axes<\/h3>\n<p>L&rsquo;affinement final du trac\u00e9 sous le syst\u00e8me de base R implique la modification des propri\u00e9t\u00e9s stylistiques de la courbe, l&rsquo;insertion de lignes de guidage orthogonales et le calibrage strict des limites d&rsquo;\u00e9chelles. L&rsquo;\u00e9paisseur du trait de la fonction de r\u00e9partition est calibr\u00e9e via le param\u00e8tre num\u00e9rique <code>lwd<\/code> (<em>line width<\/em>), la coloration de la courbe est ajust\u00e9e via <code>col<\/code>, et la texture du trac\u00e9 est modul\u00e9e par <code>lty<\/code> (<em>line type<\/em>).<\/p>\n<p>Pour faciliter le d\u00e9codage quantitatif des percentiles fondamentaux, l&rsquo;adjonction de rep\u00e8res horizontaux s&rsquo;effectue ais\u00e9ment via la primitive <code>abline()<\/code>. Le positionnement de lignes pointill\u00e9es aux ordonn\u00e9es 0.25 (premier quartile), 0.50 (m\u00e9diane) et 0.75 (troisi\u00e8me quartile) offre un syst\u00e8me de rep\u00e9rage imm\u00e9diat pour \u00e9valuer l&rsquo;\u00e9talement interquartile du ph\u00e9nom\u00e8ne observ\u00e9. De surcro\u00eet, le param\u00e9trage explicite des arguments <code>xlim<\/code> et <code>ylim<\/code> garantit que la fen\u00eatre graphique se concentre exclusivement sur l&rsquo;\u00e9tendue des donn\u00e9es d&rsquo;int\u00e9r\u00eat, \u00e9liminant tout espacement blanc p\u00e9riph\u00e9rique superflu.<\/p>\n<p><code># Script complet de mise en forme esth\u00e9tique de haut niveau sous base R<br \/>\nplot(<br \/>\n&nbsp;&nbsp;fonction_repartition_empirique,<br \/>\n&nbsp;&nbsp;verticals = TRUE,<br \/>\n&nbsp;&nbsp;do.points = FALSE,<br \/>\n&nbsp;&nbsp;col = \"#1B4F72\",       # Teinte bleu nuit acad\u00e9mique<br \/>\n&nbsp;&nbsp;lwd = 2.5,<br \/>\n&nbsp;&nbsp;xlim = c(5, 45),<br \/>\n&nbsp;&nbsp;ylim = c(0, 1),<br \/>\n&nbsp;&nbsp;main = \"Profil Distributionnel Cumul\u00e9 des Performances\",<br \/>\n&nbsp;&nbsp;xlab = \"\u00c9chelle m\u00e9trique standardis\u00e9e\",<br \/>\n&nbsp;&nbsp;ylab = \"Fonction de r\u00e9partition F_n(x)\",<br \/>\n&nbsp;&nbsp;panel.first = grid(col = \"gray90\", lty = 1) # Grille d'arri\u00e8re-plan discr\u00e8te<br \/>\n)<\/p>\n<p># Ajout des lignes de rep\u00e8re pour les quartiles d'\u00e9chantillon<br \/>\nabline(h = c(0.25, 0.50, 0.75), col = \"#C0392B\", lty = c(3, 2, 3), lwd = 1.2)<br \/>\nabline(v = quantile(vecteur_scores, probs = c(0.25, 0.50, 0.75)),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col = \"#C0392B\", lty = c(3, 2, 3), lwd = 1.2)<\/p>\n<p># Insertion d'une l\u00e9gende explicative normalis\u00e9e<br \/>\nlegend(<br \/>\n&nbsp;&nbsp;\"bottomright\",<br \/>\n&nbsp;&nbsp;legend = c(\"eCDF empirique\", \"Quartiles (Q1, M\u00e9diane, Q3)\"),<br \/>\n&nbsp;&nbsp;col = c(\"#1B4F72\", \"#C0392B\"),<br \/>\n&nbsp;&nbsp;lty = c(1, 2),<br \/>\n&nbsp;&nbsp;lwd = c(2.5, 1.2),<br \/>\n&nbsp;&nbsp;bty = \"o\",<br \/>\n&nbsp;&nbsp;bg = \"white\"<br \/>\n)<\/code><\/p>\n<h2>6. Trac\u00e9 de la CDF th\u00e9orique pour des distributions param\u00e9triques<\/h2>\n<h3>6.1 Utilisation de curve() pour tracer la fonction pnorm<\/h3>\n<p>L&rsquo;analyse distributionnelle ne prend tout son sens que lorsqu&rsquo;elle confronte la r\u00e9alit\u00e9 des donn\u00e9es collect\u00e9es \u00e0 un mod\u00e8le math\u00e9matique id\u00e9alis\u00e9. Pour \u00e9valuer la pertinence de l&rsquo;hypoth\u00e8se selon laquelle une variable d\u00e9coule d&rsquo;un processus stochastique sous-jacent connu, le trac\u00e9 de la CDF th\u00e9orique constitue une \u00e9tape incontournable. Dans le syst\u00e8me graphique natif de R, l&rsquo;outil par excellence pour repr\u00e9senter une fonction math\u00e9matique continue sur un intervalle donn\u00e9 est la primitive <code>curve()<\/code>.<\/p>\n<p>La fonction <code>curve()<\/code> prend en premier argument une expression vectoris\u00e9e de la variable symbolique <code>x<\/code> ou directement le nom d&rsquo;une fonction R pr\u00e9existante prenant un vecteur num\u00e9rique en entr\u00e9e. Pour tracer la sigmo\u00efde classique d&rsquo;une loi normale centr\u00e9e r\u00e9duite (mathcal{N}(0, 1)), il suffit de sp\u00e9cifier <code>curve(pnorm(x), from = -3.5, to = 3.5)<\/code>. La courbe obtenue adopte une allure caract\u00e9ristique en S, pr\u00e9sentant une stricte sym\u00e9trie par rapport \u00e0 son point d&rsquo;inflexion situ\u00e9 exactement au point de coordonn\u00e9es ((mu, 0.5)). Pour une distribution normale g\u00e9n\u00e9rale d&rsquo;esp\u00e9rance (mu) et de variance (sigma^2), les param\u00e8tres de position et d&rsquo;\u00e9chelle sont pass\u00e9s sans difficult\u00e9 \u00e0 la fonction <code>pnorm()<\/code> via <code>mean<\/code> et <code>sd<\/code>.<\/p>\n<p><code># Trac\u00e9 autonome d'une CDF th\u00e9orique gaussienne param\u00e9tr\u00e9e<br \/>\nmu_theorique &lt;- 100<br \/>\nsigma_theorique &lt;- 15<\/p>\n<p>curve(<br \/>\n&nbsp;&nbsp;pnorm(x, mean = mu_theorique, sd = sigma_theorique),<br \/>\n&nbsp;&nbsp;from = 50,<br \/>\n&nbsp;&nbsp;to = 150,<br \/>\n&nbsp;&nbsp;lwd = 2,<br \/>\n&nbsp;&nbsp;col = \"#27AE60\",<br \/>\n&nbsp;&nbsp;main = \"CDF Th\u00e9orique d'une Loi Normale N(100, 15^2)\",<br \/>\n&nbsp;&nbsp;xlab = \"Quantiles th\u00e9oriques\",<br \/>\n&nbsp;&nbsp;ylab = \"Probabilit\u00e9 cumul\u00e9e P(X &lt;= x)&quot;<br \/>\n)<\/code><\/p>\n<h3>6.2 Superposition de la CDF th\u00e9orique sur la CDF empirique<\/h3>\n<p>L&rsquo;int\u00e9r\u00eat diagnostique majeur du trac\u00e9 th\u00e9orique r\u00e9side dans sa superposition directe sur la courbe de r\u00e9partition empirique calcul\u00e9e \u00e0 partir des donn\u00e9es de l&rsquo;\u00e9chantillon. Cette mise en regard visuelle permet de d\u00e9tecter instantan\u00e9ment d&rsquo;\u00e9ventuels \u00e9carts au mod\u00e8le param\u00e9trique postul\u00e9 : un d\u00e9calage horizontal signale une discordance de tendance centrale, une diff\u00e9rence de pente trahit une sous-estimation ou sur-estimation de la variance, tandis que des \u00e9carts situ\u00e9s aux extr\u00e9mit\u00e9s r\u00e9v\u00e8lent des anomalies d&rsquo;aplatissement ou la pr\u00e9sence d&rsquo;asym\u00e9tries non prises en charge par une distribution sym\u00e9trique.<\/p>\n<p>Pour superposer une courbe th\u00e9orique sur un trac\u00e9 de base pr\u00e9existant g\u00e9n\u00e9r\u00e9 par <code>plot(ecdf(...))<\/code>, la fonction <code>curve()<\/code> dispose de l&rsquo;argument fondamental <code>add = TRUE<\/code>. Lorsqu&rsquo;il est configur\u00e9 sur le mode actif, cet argument neutralise la cr\u00e9ation d&rsquo;un nouveau syst\u00e8me de coordonn\u00e9es et force le trac\u00e9 \u00e0 s&rsquo;inscrire rigoureusement dans l&rsquo;espace g\u00e9om\u00e9trique en cours d&rsquo;utilisation, sous r\u00e9serve d&rsquo;harmoniser les intervalles d&rsquo;abscisses.<\/p>\n<p><code># Estimation empirique des param\u00e8tres gaussiens sur l'\u00e9chantillon de QI simul\u00e9<br \/>\nm_estime &lt;- mean(scores_qi)<br \/>\ns_estime &lt;- sd(scores_qi)<\/p>\n<p># \u00c9tape 1 : Trac\u00e9 de la fonction empirique sous base R<br \/>\nplot(<br \/>\n&nbsp;&nbsp;ecdf(scores_qi),<br \/>\n&nbsp;&nbsp;verticals = TRUE,<br \/>\n&nbsp;&nbsp;do.points = FALSE,<br \/>\n&nbsp;&nbsp;col = \"black\",<br \/>\n&nbsp;&nbsp;lwd = 2,<br \/>\n&nbsp;&nbsp;xlim = c(55, 145),<br \/>\n&nbsp;&nbsp;main = \"Ajustement de l'\u00c9chantillon \u00e0 la Loi Normale Th\u00e9orique\",<br \/>\n&nbsp;&nbsp;xlab = \"Score de quotient intellectuel\",<br \/>\n&nbsp;&nbsp;ylab = \"Probabilit\u00e9 cumul\u00e9e\"<br \/>\n)<\/p>\n<p># \u00c9tape 2 : Superposition directe de la CDF th\u00e9orique ajust\u00e9e<br \/>\ncurve(<br \/>\n&nbsp;&nbsp;pnorm(x, mean = m_estime, sd = s_estime),<br \/>\n&nbsp;&nbsp;col = \"#E74C3C\",<br \/>\n&nbsp;&nbsp;lwd = 2.5,<br \/>\n&nbsp;&nbsp;lty = 2,<br \/>\n&nbsp;&nbsp;add = TRUE<br \/>\n)<\/p>\n<p># L\u00e9gende explicative de l'ad\u00e9quation<br \/>\nlegend(<br \/>\n&nbsp;&nbsp;\"topleft\",<br \/>\n&nbsp;&nbsp;legend = c(\"eCDF empirique observ\u00e9e\", \"Mod\u00e8le th\u00e9orique N(m, s)\"),<br \/>\n&nbsp;&nbsp;col = c(\"black\", \"#E74C3C\"),<br \/>\n&nbsp;&nbsp;lty = c(1, 2),<br \/>\n&nbsp;&nbsp;lwd = c(2, 2.5),<br \/>\n&nbsp;&nbsp;bty = \"n\"<br \/>\n)<\/code><\/p>\n<h3>6.3 Trac\u00e9 d&rsquo;autres lois th\u00e9oriques courantes (Student, Gamma, Log-Normale)<\/h3>\n<p>La bo\u00eete \u00e0 outils probabiliste de R s&rsquo;\u00e9tend bien au-del\u00e0 de la seule loi normale. Les donn\u00e9es empiriques issues des neurosciences, de l&rsquo;\u00e9conomie exp\u00e9rimentale ou de la psycholinguistique n\u00e9cessitent fr\u00e9quemment le recours \u00e0 des distributions asym\u00e9triques \u00e0 support strictement positif ou \u00e0 des lois poss\u00e9dant des queues particuli\u00e8rement lourdes. Les fonctions <code>pt()<\/code>, <code>plnorm()<\/code> et <code>pgamma()<\/code> permettent de mod\u00e9liser avec pr\u00e9cision ces comportements sp\u00e9cifiques.<\/p>\n<p>Par exemple, la loi de Student est particuli\u00e8rement pr\u00e9cieuse pour mod\u00e9liser des distributions sujettes \u00e0 des observations extr\u00eames fr\u00e9quentes, o\u00f9 les queues de distribution d\u00e9croissent plus lentement que celles d&rsquo;une gaussienne. La loi log-normale mod\u00e9lise id\u00e9alement les temps de traitement de l&rsquo;information, caract\u00e9ris\u00e9s par une borne inf\u00e9rieure stricte (les limites physiologiques de transmission synaptique) et une queue \u00e9tir\u00e9e vers la droite refl\u00e9tant des lapsus attentionnels. La comparaison multi-mod\u00e8les sur un m\u00eame syst\u00e8me d&rsquo;axes permet d&rsquo;arbitrer visuellement entre plusieurs hypoth\u00e8ses d&rsquo;ajustement avant d&rsquo;engager des tests formels de s\u00e9lection de mod\u00e8le tels que le crit\u00e8re d&rsquo;information d&rsquo;Akaike (AIC).<\/p>\n<p><code># Comparaison visuelle multi-mod\u00e8les sur une fen\u00eatre graphique unifi\u00e9e<br \/>\ncurve(pnorm(x, mean = 0, sd = 1), from = -4, to = 4, lwd = 2, col = \"black\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main = \"Comparaison de Lois Th\u00e9oriques Sym\u00e9triques et \u00e0 Queues Lourdes\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xlab = \"Quantiles standardis\u00e9s (z)\", ylab = \"Probabilit\u00e9 cumul\u00e9e F(x)\")<\/p>\n<p># Superposition de la loi de Student \u00e0 2 degr\u00e9s de libert\u00e9 (queues tr\u00e8s \u00e9paisses)<br \/>\ncurve(pt(x, df = 2), col = \"#2980B9\", lwd = 2, lty = 2, add = TRUE)<\/p>\n<p># Superposition de la loi de Student \u00e0 10 degr\u00e9s de libert\u00e9 (convergence vers la normale)<br \/>\ncurve(pt(x, df = 10), col = \"#E67E22\", lwd = 2, lty = 3, add = TRUE)<\/p>\n<p>legend(\"topleft\", legend = c(\"Normale standard N(0,1)\", \"Student (df = 2)\", \"Student (df = 10)\"),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;col = c(\"black\", \"#2980B9\", \"#E67E22\"), lty = c(1, 2, 3), lwd = 2)<\/code><\/p>\n<h2>7. Repr\u00e9sentation avanc\u00e9e d&rsquo;une CDF avec ggplot2<\/h2>\n<h3>7.1 Trac\u00e9 de la CDF empirique via stat_ecdf()<\/h3>\n<p>Dans le paradigme moderne de l&rsquo;analyse de donn\u00e9es sous R, le package <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/ggplot2.tidyverse.org\/\">ggplot2<\/a>, fond\u00e9 sur la th\u00e9orie de la grammaire des graphiques formul\u00e9e par Leland Wilkinson, constitue le standard incontest\u00e9 pour la production de figures scientifiques. Plut\u00f4t que de calculer manuellement un objet <code>ecdf<\/code> au pr\u00e9alable, <em>ggplot2<\/em> automatise int\u00e9gralement cette op\u00e9ration gr\u00e2ce \u00e0 sa couche de transformation statistique int\u00e9gr\u00e9e : <code>stat_ecdf()<\/code>.<\/p>\n<p>La syntaxe canonique requiert d&rsquo;encapsuler les donn\u00e9es dans un <em>data frame<\/em>, de d\u00e9clarer la variable num\u00e9rique d&rsquo;int\u00e9r\u00eat au sein de la fonction d&rsquo;esth\u00e9tique globale <code>aes(x = variable)<\/code>, puis d&rsquo;adjoindre la couche <code>stat_ecdf()<\/code>. Par d\u00e9faut, cette couche emploie une g\u00e9om\u00e9trie de type marche d&rsquo;escalier (<code>geom = \"step\"<\/code>), calculant de mani\u00e8re transparente les proportions d&rsquo;\u00e9chantillon associ\u00e9es \u00e0 chaque point d&rsquo;observation. Alternativement, le chercheur peut forcer la g\u00e9om\u00e9trie en ligne continue (<code>geom = \"line\"<\/code>), bien que ce choix implique une interpolation liss\u00e9e reliant directement les points sans respecter rigoureusement la discontinuit\u00e9 axiomatique en escalier.<\/p>\n<p><code># Construction d'un trac\u00e9 de CDF empirique \u00e9l\u00e9mentaire sous ggplot2<br \/>\ndf_simulation &lt;- data.frame(Scores = scores_qi)<\/p>\n<p>p_ecdf &lt;- ggplot(df_simulation, aes(x = Scores)) +<br \/>\n&nbsp;&nbsp;stat_ecdf(geom = \"step\", color = \"#2C3E50\", linewidth = 1) +<br \/>\n&nbsp;&nbsp;labs(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;title = \"Fonction de R\u00e9partition Empirique sous ggplot2\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;x = \"Score standardis\u00e9\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;y = \"Probabilit\u00e9 cumul\u00e9e F_n(x)\"<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;theme_minimal()<\/p>\n<p>print(p_ecdf)<\/code><\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/cdfR2.png\" alt=\"\" \/><\/figure>\n<h3>7.2 Repr\u00e9sentation d&rsquo;une CDF th\u00e9orique continue via stat_function()<\/h3>\n<p>L&rsquo;un des atouts majeurs de l&rsquo;architecture de <em>ggplot2<\/em> r\u00e9side dans sa capacit\u00e9 \u00e0 superposer sur un m\u00eame graphique des donn\u00e9es observ\u00e9es discr\u00e9tis\u00e9es et des fonctions math\u00e9matiques th\u00e9oriques continues, gr\u00e2ce \u00e0 la couche statistique <code>stat_function()<\/code>. Cette primitive s&rsquo;av\u00e8re particuli\u00e8rement puissante pour formaliser un mod\u00e8le th\u00e9orique sans avoir \u00e0 g\u00e9n\u00e9rer manuellement un vecteur dense de coordonn\u00e9es artificielles.<\/p>\n<p>Pour superposer une loi normale ajust\u00e9e sur la fonction de r\u00e9partition empirique, <code>stat_function()<\/code> re\u00e7oit en argument le pointeur vers la fonction distributionnelle (en l&rsquo;occurrence <code>fun = pnorm<\/code>) et une liste de param\u00e8tres pass\u00e9s via <code>args = list(mean = ..., sd = ...)<\/code>. Afin d&rsquo;assurer une restitution visuelle parfaitement fluide de la courbe th\u00e9orique, l&rsquo;argument <code>n<\/code> peut \u00eatre rehauss\u00e9 (par exemple \u00e0 1000 points d&rsquo;\u00e9valuation), emp\u00eachant l&rsquo;apparition de facettes polygonales visibles sur des \u00e9crans haute r\u00e9solution.<\/p>\n<p><code># Combinaison harmonieuse de stat_ecdf() et stat_function() sur un jeu de donn\u00e9es<br \/>\nm_empirique &lt;- mean(df_simulation$Scores)<br \/>\ns_empirique &lt;- sd(df_simulation$Scores)<\/p>\n<p>p_comparaison &lt;- ggplot(df_simulation, aes(x = Scores)) +<br \/>\n&nbsp;&nbsp;# Couche 1 : Courbe empirique en escalier<br \/>\n&nbsp;&nbsp;stat_ecdf(aes(color = \"Empirique (Observ\u00e9e)\"), geom = \"step\", linewidth = 0.9) +<br \/>\n&nbsp;&nbsp;# Couche 2 : Courbe th\u00e9orique param\u00e9tr\u00e9e continue<br \/>\n&nbsp;&nbsp;stat_function(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;fun = pnorm,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;args = list(mean = m_empirique, sd = s_empirique),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;aes(color = \"Mod\u00e8le Gaussien\"),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;linewidth = 1.1,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;linetype = \"dashed\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;n = 1000<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;scale_color_manual(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;name = \"Distribution :\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;values = c(\"Empirique (Observ\u00e9e)\" = \"#2C3E50\", \"Mod\u00e8le Gaussien\" = \"#E74C3C\")<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;labs(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;title = \"Confrontation Graphique de l'eCDF au Mod\u00e8le Th\u00e9orique Gaussien\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;subtitle = \"Param\u00e8tres estim\u00e9s par maximum de vraisemblance sur l'\u00e9chantillon\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;x = \"Score d'efficience cognitive\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;y = \"Probabilit\u00e9 cumul\u00e9e F(x)\"<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;theme_minimal()<\/p>\n<p>print(p_comparaison)<\/code><\/p>\n<h3>7.3 Habillage esth\u00e9tique et th\u00e8mes de publication avec ggplot2<\/h3>\n<p>Pour destiner une figure \u00e0 une publication scientifique r\u00e9pondant aux normes de l&rsquo;<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/apastyle.apa.org\/\">American Psychological Association (APA)<\/a> ou des revues de biom\u00e9trie de premier rang, l&rsquo;habillage esth\u00e9tique doit se conformer \u00e0 des principes de sobri\u00e9t\u00e9, de clart\u00e9 typographique et de pr\u00e9cision d&rsquo;\u00e9chelle. L&rsquo;utilisation du package <em>scales<\/em> permet notamment de transformer les \u00e9tiquettes de l&rsquo;axe vertical en pourcentages stricts (par exemple 0 %, 25 %, 50 %, 75 %, 100 %), \u00e9liminant les ambigu\u00eft\u00e9s de lecture pour les cliniciens et praticiens.<\/p>\n<p>Le choix d&rsquo;un th\u00e8me sans fioritures comme <code>theme_classic()<\/code> ou <code>theme_bw()<\/code> combin\u00e9 \u00e0 un contr\u00f4le explicite de la taille des polices de caract\u00e8res, des marges int\u00e9rieures et de l&rsquo;\u00e9paisseur des axes garantit une lisibilit\u00e9 maximale lors des r\u00e9ductions de colonnes dans les maquettes d&rsquo;\u00e9dition. L&rsquo;int\u00e9gration de lignes de quadrillage majeures tr\u00e8s p\u00e2les guide le regard sans surcharger la densit\u00e9 d&rsquo;encre visuelle (respect du principe d&rsquo;optimisation du ratio encre-donn\u00e9e formul\u00e9 par Edward Tufte).<\/p>\n<p><code># Finalisation esth\u00e9tique selon les normes acad\u00e9miques internationales<br \/>\np_academique &lt;- ggplot(df_simulation, aes(x = Scores)) +<br \/>\n&nbsp;&nbsp;stat_ecdf(geom = \"step\", color = \"#1A5276\", linewidth = 1) +<br \/>\n&nbsp;&nbsp;scale_y_continuous(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;labels = scales::percent_format(accuracy = 1),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;breaks = seq(0, 1, by = 0.20),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;limits = c(0, 1),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;expand = expansion(mult = c(0, 0.02))<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;scale_x_continuous(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;breaks = seq(50, 150, by = 15),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;limits = c(50, 150)<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;labs(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;title = \"Distribution Cumulative des Scores de Quotient Intellectuel\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;x = \"Score standardis\u00e9 (M = 100, SD = 15)\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;y = \"Rang percentile cumul\u00e9\"<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;theme_classic(base_size = 12, base_family = \"sans\") +<br \/>\n&nbsp;&nbsp;theme(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;plot.title = element_text(face = \"bold\", size = 13, hjust = 0.5),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;axis.title = element_text(face = \"bold\"),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;axis.line = element_line(color = \"black\", linewidth = 0.6),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;panel.grid.major.y = element_line(color = \"gray92\", linetype = \"dotted\")<br \/>\n&nbsp;&nbsp;)<\/p>\n<p>print(p_academique)<\/code><\/p>\n<h2>8. Comparaison simultan\u00e9e de plusieurs groupes et conditions exp\u00e9rimentales<\/h2>\n<h3>8.1 Stratification par facteur dans ggplot2<\/h3>\n<p>L&rsquo;un des apports majeurs de la fonction de r\u00e9partition r\u00e9side dans la comparaison directe de sous-populations ou de bras d&rsquo;essais cliniques (par exemple : groupe contr\u00f4le versus groupe traitement, ou comparaison de sous-groupes diagnostiques). Contrairement aux histogrammes superpos\u00e9s, qui g\u00e9n\u00e8rent une illisibilit\u00e9 imm\u00e9diate en raison de l&rsquo;occultation mutuelle des barres, et aux bo\u00eetes \u00e0 moustaches, qui r\u00e9duisent l&rsquo;information \u00e0 de simples r\u00e9sum\u00e9s \u00e0 cinq nombres, les courbes cumul\u00e9es superpos\u00e9es offrent une vision exhaustive et limpide des divergences distributionnelles.<\/p>\n<p>Sous <em>ggplot2<\/em>, cette stratification s&rsquo;op\u00e8re de fa\u00e7on native en mappant une variable cat\u00e9gorielle (un facteur) sur l&rsquo;argument esth\u00e9tique <code>color<\/code> ou <code>linetype<\/code> au sein de l&rsquo;instruction <code>stat_ecdf()<\/code>. Le moteur regroupe alors automatiquement les donn\u00e9es par modalit\u00e9 et calcule ind\u00e9pendamment chaque fonction empirique avec son effectif propre (n_k). L&rsquo;int\u00e9gration de palettes de couleurs adapt\u00e9es aux personnes daltoniennes (telles que <em>viridis<\/em> ou <em>ColorBrewer<\/em>) assure une accessibilit\u00e9 visuelle sans faille.<\/p>\n<p><code># Simulation d'un essai randomis\u00e9 \u00e0 trois bras exp\u00e9rimentaux<br \/>\nset.seed(101)<br \/>\nn_groupe &lt;- 100<\/p>\n<p>df_groupes &lt;- data.frame(<br \/>\n&nbsp;&nbsp;Score = c(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;rnorm(n_groupe, mean = 50, sd = 10), # Groupe T\u00e9moin \/ Placebo<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;rnorm(n_groupe, mean = 46, sd = 10), # Th\u00e9rapie Standard<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;rnorm(n_groupe, mean = 38, sd = 9)   # Nouvelle Th\u00e9rapie Exp\u00e9rimentale<br \/>\n&nbsp;&nbsp;),<br \/>\n&nbsp;&nbsp;Condition = factor(rep(c(\"Placebo\", \"Standard\", \"Innovant\"), each = n_groupe),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;levels = c(\"Placebo\", \"Standard\", \"Innovant\"))<br \/>\n)<\/p>\n<p># Visualisation comparative multigroupes avec palette Viridis<br \/>\np_multigroupes &lt;- ggplot(df_groupes, aes(x = Score, color = Condition)) +<br \/>\n&nbsp;&nbsp;stat_ecdf(geom = \"step\", linewidth = 1.1) +<br \/>\n&nbsp;&nbsp;scale_color_viridis_d(option = \"plasma\", end = 0.85) +<br \/>\n&nbsp;&nbsp;scale_y_continuous(labels = scales::percent_format()) +<br \/>\n&nbsp;&nbsp;labs(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;title = \"Comparaison de l'Efficacit\u00e9 Th\u00e9rapeutique selon les Groupes\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;subtitle = \"D\u00e9calage vers la gauche traduisant une r\u00e9duction significative des sympt\u00f4mes\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;x = \"Score de s\u00e9v\u00e9rit\u00e9 pathologique\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;y = \"Proportion cumul\u00e9e de patients\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;color = \"Bras de l'essai :\"<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;theme_minimal() +<br \/>\n&nbsp;&nbsp;theme(legend.position = \"bottom\")<\/p>\n<p>print(p_multigroupes)<\/code><\/p>\n<h3>8.2 Facettage multi-panneaux pour plans factoriels complexes<\/h3>\n<p>Lorsque le plan exp\u00e9rimental croise plusieurs facteurs de classification (par exemple le type d&rsquo;intervention th\u00e9rapeutique combin\u00e9 \u00e0 la tranche d&rsquo;\u00e2ge des sujets ou \u00e0 leur statut biologique), la superposition de l&rsquo;ensemble des courbes sur un unique syst\u00e8me d&rsquo;axes engendre un enchev\u00eatrement difficilement d\u00e9chiffrable. Le m\u00e9canisme de facettage (<em>small multiples<\/em>) d\u00e9ploy\u00e9 par <em>ggplot2<\/em> apporte une r\u00e9ponse visuelle optimale en partitionnant la grille de trac\u00e9 selon les combinaisons de facteurs.<\/p>\n<p>Les fonctions <code>facet_wrap()<\/code> (pour une disposition unidimensionnelle flexible) et <code>facet_grid()<\/code> (pour une matrice factorielle stricte en lignes et colonnes) permettent d&rsquo;isoler chaque sous-groupe dans son panneau d\u00e9di\u00e9, tout en pr\u00e9servant une synchronisation parfaite des \u00e9chelles horizontales et verticales. Cette harmonisation m\u00e9trique rigoureuse permet \u00e0 l&rsquo;\u0153il d&rsquo;effectuer des comparaisons spatiales directes et fiables entre les panneaux sans subir de distorsions d&rsquo;axes.<\/p>\n<p><code># Simulation d'un plan factoriel 2x2 : Traitement x Tranche d'\u00c2ge<br \/>\ndf_factoriel %<br \/>\n&nbsp;&nbsp;filter(Condition %in% c(\"Placebo\", \"Innovant\")) %&gt;%<br \/>\n&nbsp;&nbsp;mutate(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;Age_Classe = rep(rep(c(\"Jeunes Adultes\", \"Seniors\"), each = 50), 2)<br \/>\n&nbsp;&nbsp;)<\/p>\n<p>p_facettes &lt;- ggplot(df_factoriel, aes(x = Score, color = Condition)) +<br \/>\n&nbsp;&nbsp;stat_ecdf(geom = \"step\", linewidth = 1) +<br \/>\n&nbsp;&nbsp;facet_wrap(~ Age_Classe) +<br \/>\n&nbsp;&nbsp;scale_color_manual(values = c(\"Placebo\" = \"#7F8C8D\", \"Innovant\" = \"#2980B9\")) +<br \/>\n&nbsp;&nbsp;scale_y_continuous(labels = scales::percent_format()) +<br \/>\n&nbsp;&nbsp;labs(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;title = \"\u00c9valuation Factorielle de la R\u00e9ponse Th\u00e9rapeutique selon l'\u00c2ge\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;x = \"Score symptomatique\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;y = \"Probabilit\u00e9 cumul\u00e9e\"<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;theme_bw() +<br \/>\n&nbsp;&nbsp;theme(legend.position = \"bottom\", strip.background = element_rect(fill = \"gray95\"))<\/p>\n<p>print(p_facettes)<\/code><\/p>\n<h3>8.3 Calcul et affichage des \u00e9carts maximaux intergroupes<\/h3>\n<p>L&rsquo;analyse comparative de deux fonctions de r\u00e9partition empiriques d\u00e9bouche directement sur le concept fondamental de <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/www.sciencedirect.com\/topics\/economics-econometrics-and-finance\/stochastic-dominance\">dominance stochastique<\/a>. Si la courbe de r\u00e9partition d&rsquo;une condition (A) se situe en tout point strictement au-dessus de celle d&rsquo;une condition (B) (ce qui s&rsquo;\u00e9crit (F_A(x) ge F_B(x)) pour tout (x)), on affirme que la condition (B) domine stochastiquement la condition (A) au premier ordre. Dans notre contexte clinique, une courbe situ\u00e9e \u00e0 gauche indique que les scores sont syst\u00e9matiquement plus faibles, ce qui traduit une sup\u00e9riorit\u00e9 d&rsquo;un traitement visant la baisse des sympt\u00f4mes.<\/p>\n<p>L&rsquo;\u00e9cart vertical maximal s\u00e9parant deux fonctions de r\u00e9partition empiriques constitue la statistique de test fondamentale de Kolmogorov-Smirnov \u00e0 deux \u00e9chantillons, not\u00e9e (D) :<\/p>\n<p>[D = sup_{x} |F_A(x) &#8211; F_B(x)|]<\/p>\n<p>L&rsquo;identification de la localisation exacte de cet \u00e9cart critique sur l&rsquo;axe des abscisses permet de cibler le niveau de score pr\u00e9cis o\u00f9 la divergence d&rsquo;action entre deux protocoles th\u00e9rapeutiques est la plus prononc\u00e9e sur le plan clinique.<\/p>\n<p><code># Calcul algorithmique de l'\u00e9cart vertical maximal entre Placebo et Innovant<br \/>\nscores_placebo &lt;- df_groupes<span class=\"arabpsy-math-inline\" data-latex=\"Score[df_groupes\">$Score[df_groupes$<\/span>Condition == &quot;Placebo&quot;]<br \/>\nscores_innovant &lt;- df_groupes<span class=\"arabpsy-math-inline\" data-latex=\"Score[df_groupes\">$Score[df_groupes$<\/span>Condition == &quot;Innovant&quot;]<\/p>\n<p>fn_placebo &lt;- ecdf(scores_placebo)<br \/>\nfn_innovant &lt;- ecdf(scores_innovant)<\/p>\n<p># Grille d'\u00e9valuation commune fine<br \/>\ngrille_x &lt;- sort(unique(c(scores_placebo, scores_innovant)))<br \/>\ndifferences_absolues &lt;- abs(fn_placebo(grille_x) - fn_innovant(grille_x))<\/p>\n<p>indice_max &lt;- which.max(differences_absolues)<br \/>\nx_critique &lt;- grille_x[indice_max]<br \/>\ny_placebo &lt;- fn_placebo(x_critique)<br \/>\ny_innovant &lt;- fn_innovant(x_critique)<br \/>\nvaleur_d_max &lt;- differences_absolues[indice_max]<\/p>\n<p>cat(\"Statistique de divergence maximale D :\", round(valeur_d_max, 4), \"n\")<br \/>\ncat(\"Localisation du score d'\u00e9cart maximal :\", round(x_critique, 2), \"n\")<\/code><\/p>\n<h2>9. Personnalisation technique avanc\u00e9e et annotations scientifiques<\/h2>\n<h3>9.1 Ajout de segments et d&rsquo;intervalles critiques<\/h3>\n<p>Pour conf\u00e9rer \u00e0 une figure de publication une haute valeur explicative, il est recommand\u00e9 d&rsquo;incorporer directement sur la trajectoire de la courbe des segments de projection orthogonale mat\u00e9rialisant des valeurs charni\u00e8res, telles que la m\u00e9diane d&rsquo;\u00e9chantillon ou des seuils de significativit\u00e9 diagnostique. Ces segments permettent au lecteur d&rsquo;appr\u00e9hender d&rsquo;un seul coup d&rsquo;\u0153il l&rsquo;articulation entre l&rsquo;espace des mesures brutes et l&rsquo;\u00e9chelle des probabilit\u00e9s cumul\u00e9es.<\/p>\n<p>Sous <em>ggplot2<\/em>, cette contextualisation graphique s&rsquo;\u00e9labore gr\u00e2ce \u00e0 la couche <code>geom_segment()<\/code>, combin\u00e9e \u00e0 des instructions textuelles via <code>annotate(\"text\", ...)<\/code> ou <code>annotate(\"label\", ...)<\/code>. L&rsquo;utilisation d&rsquo;annotations int\u00e9gr\u00e9es permet de s&rsquo;affranchir de l\u00e9gendes p\u00e9riph\u00e9riques parfois d\u00e9connect\u00e9es de la g\u00e9om\u00e9trie des donn\u00e9es, am\u00e9liorant l&rsquo;efficience cognitive de la lecture de la figure.<\/p>\n<p><code># Construction d'un graphique annot\u00e9 mettant en exergue la m\u00e9diane empirique<br \/>\nmediane_score &lt;- median(df_simulation$Scores)<\/p>\n<p>p_annote &lt;- ggplot(df_simulation, aes(x = Scores)) +<br \/>\n&nbsp;&nbsp;stat_ecdf(geom = \"step\", color = \"#34495E\", linewidth = 1) +<br \/>\n&nbsp;&nbsp;# Segment horizontal de l'axe y = 0.50 jusqu'\u00e0 la m\u00e9diane<br \/>\n&nbsp;&nbsp;geom_segment(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;aes(x = 50, xend = mediane_score, y = 0.50, yend = 0.50),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;color = \"#E74C3C\", linetype = \"dashed\", linewidth = 0.8<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;# Segment vertical de la m\u00e9diane jusqu'\u00e0 l'axe x<br \/>\n&nbsp;&nbsp;geom_segment(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;aes(x = mediane_score, xend = mediane_score, y = 0, yend = 0.50),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;color = \"#E74C3C\", linetype = \"dashed\", linewidth = 0.8<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;# Point marquant l'intersection exacte sur la courbe<br \/>\n&nbsp;&nbsp;annotate(\"point\", x = mediane_score, y = 0.50, color = \"#E74C3C\", size = 3) +<br \/>\n&nbsp;&nbsp;# \u00c9tiquette descriptive<br \/>\n&nbsp;&nbsp;annotate(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;\"label\", x = mediane_score + 8, y = 0.45,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;label = paste(\"M\u00e9diane =\", round(mediane_score, 1)),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;color = \"#E74C3C\", fill = \"white\", fontface = \"bold\", size = 3.8<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;scale_y_continuous(labels = scales::percent_format(), limits = c(0, 1)) +<br \/>\n&nbsp;&nbsp;labs(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;title = \"Mise en \u00c9vidence de la M\u00e9diane sur la Courbe de R\u00e9partition\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;x = \"Score d'efficience\", y = \"Probabilit\u00e9 cumul\u00e9e\"<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;theme_classic()<\/code><\/p>\n<figure class=\"wpt-preserved-image\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/french.arabpsychology.com\/wp-content\/uploads\/2026\/09\/cdfR3.png\" alt=\"\" \/><\/figure>\n<h3>9.2 Int\u00e9gration d&rsquo;intervalles de confiance de Dvoretzky-Kiefer-Wolfowitz (DKW)<\/h3>\n<p>L&rsquo;un des d\u00e9fis les plus cruciaux de l&rsquo;inf\u00e9rence non param\u00e9trique concerne la quantification de l&rsquo;incertitude d&rsquo;\u00e9chantillonnage entourant la fonction de r\u00e9partition empirique. Si la loi forte des grands nombres et le th\u00e9or\u00e8me central limite garantissent la convergence ponctuelle de (F_n(x)) vers (F(x)), le th\u00e9or\u00e8me de Glivenko-Cantelli \u00e9tablit une convergence presque s\u00fbre uniforme sur l&rsquo;ensemble de l&rsquo;axe r\u00e9el :<\/p>\n<p>[lim_{n to infty} sup_{x in mathbb{R}} |F_n(x) &#8211; F(x)| = 0]<\/p>\n<p>Pour construire une bande de confiance simultan\u00e9e rigoureuse couvrant la v\u00e9ritable fonction de r\u00e9partition inconnue (F(x)) sur l&rsquo;ensemble de son domaine avec un niveau de confiance garanti (1 &#8211; alpha), l&rsquo;<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/projecteuclid.org\/journals\/annals-of-mathematical-statistics\/volume-27\/issue-3\/Asymptotic-Minimax-Character-of-the-Sample-Distribution-Function-and\/10.1214\/aoms\/1177728174.xhtml\">in\u00e9galit\u00e9 de Dvoretzky-Kiefer-Wolfowitz (DKW)<\/a>, dont la constante optimale a \u00e9t\u00e9 \u00e9tablie par Pascal Massart en 1990, fournit la relation exacte :<\/p>\n<p>[mathbb{P}left(sup_{x in mathbb{R}} |F_n(x) &#8211; F(x)| &gt; epsilonright) le 2e^{-2nepsilon^2}]<\/p>\n<p>En fixant le risque d&rsquo;erreur \u00e0 (alpha) (par exemple 0.05 pour une bande de confiance \u00e0 95 %), la marge d&rsquo;erreur uniforme (epsilon) s&rsquo;obtient directement par inversion de l&rsquo;in\u00e9galit\u00e9 :<\/p>\n<p>[epsilon = sqrt{frac{ln(2 \/ alpha)}{2n}}]<\/p>\n<p>La bande de confiance sup\u00e9rieure et inf\u00e9rieure s&rsquo;en d\u00e9duit imm\u00e9diatement : (L(x) = max(F_n(x) &#8211; epsilon, 0)) et (U(x) = min(F_n(x) + epsilon, 1)). Sous <em>ggplot2<\/em>, cette enveloppe non param\u00e9trique se mat\u00e9rialise avec une remarquable \u00e9l\u00e9gance g\u00e9om\u00e9trique via la couche <code>geom_ribbon()<\/code>.<\/p>\n<p><code># Calcul de la bande de confiance non param\u00e9trique de DKW (Massart, 1990)<br \/>\nalpha_dkw &lt;- 0.05<br \/>\nn_obs &lt;- length(scores_qi)<br \/>\nepsilon_dkw &lt;- sqrt(log(2 \/ alpha_dkw) \/ (2 * n_obs))<\/p>\n<p># Construction du jeu de donn\u00e9es pour l'enveloppe de confiance<br \/>\ndf_dkw %<br \/>\n&nbsp;&nbsp;mutate(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;Fn = ecdf(scores_qi)(Scores),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;Borne_Inf = pmax(Fn - epsilon_dkw, 0),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;Borne_Sup = pmin(Fn + epsilon_dkw, 1)<br \/>\n&nbsp;&nbsp;)<\/p>\n<p># Trac\u00e9 sous ggplot2 int\u00e9grant le ruban de confiance DKW<br \/>\np_dkw &lt;- ggplot(df_dkw, aes(x = Scores)) +<br \/>\n&nbsp;&nbsp;geom_ribbon(aes(ymin = Borne_Inf, ymax = Borne_Sup), fill = \"#BDC3C7\", alpha = 0.4) +<br \/>\n&nbsp;&nbsp;geom_step(aes(y = Borne_Inf), color = \"#7F8C8D\", linetype = \"dotted\", linewidth = 0.7) +<br \/>\n&nbsp;&nbsp;geom_step(aes(y = Borne_Sup), color = \"#7F8C8D\", linetype = \"dotted\", linewidth = 0.7) +<br \/>\n&nbsp;&nbsp;geom_step(aes(y = Fn), color = \"#2C3E50\", linewidth = 1) +<br \/>\n&nbsp;&nbsp;scale_y_continuous(labels = scales::percent_format(), limits = c(0, 1)) +<br \/>\n&nbsp;&nbsp;labs(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;title = \"Fonction de R\u00e9partition Empirique et Bande de Confiance DKW \u00e0 95 %\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;subtitle = \"Garantie simultan\u00e9e non param\u00e9trique sur l'int\u00e9gralit\u00e9 du domaine r\u00e9el\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;x = \"Score standardis\u00e9\", y = \"Probabilit\u00e9 cumul\u00e9e F(x)\"<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;theme_minimal()<\/p>\n<p>print(p_dkw)<\/code><\/p>\n<h3>9.3 Exportation haute r\u00e9solution pour manuscrits acad\u00e9miques<\/h3>\n<p>L&rsquo;\u00e9tape ultime du processus de visualisation consiste \u00e0 exporter l&rsquo;objet graphique produit vers des formats de fichiers conformes aux directives de soumission des maisons d&rsquo;\u00e9dition scientifiques (Springer, Elsevier, APA). La commande centrale de l&rsquo;\u00e9cosyst\u00e8me <em>ggplot2<\/em> est <code>ggsave()<\/code>, qui prend en charge une gestion rigoureuse de la rast\u00e9risation, de la vectorisation, des dimensions physiques et de la r\u00e9solution d&rsquo;impression.<\/p>\n<p>Deux familles de formats coexistent dans la pratique \u00e9ditoriale : les formats vectoriels (PDF et SVG), \u00e0 privil\u00e9gier absolument dans la mesure o\u00f9 ils conservent la d\u00e9finition infinie des trac\u00e9s et du texte sans aucune pixellisation lors des redimensionnements typographiques ; et les formats matriciels non compress\u00e9s ou compress\u00e9s sans perte (TIFF, PNG), qui doivent imp\u00e9rativement satisfaire \u00e0 un standard minimal de 300 \u00e0 600 DPI (<em>dots per inch<\/em>). La ma\u00eetrise explicite des unit\u00e9s physiques (centim\u00e8tres ou pouces) emp\u00eache toute d\u00e9formation du ratio d&rsquo;aspect.<\/p>\n<p><code># Exportation vectorielle haute d\u00e9finition pour manuscrit de recherche<br \/>\nggsave(<br \/>\n&nbsp;&nbsp;filename = \"Figure_CDF_Cognitive_DKW.pdf\",<br \/>\n&nbsp;&nbsp;plot = p_dkw,<br \/>\n&nbsp;&nbsp;device = \"pdf\",<br \/>\n&nbsp;&nbsp;width = 18,<br \/>\n&nbsp;&nbsp;height = 12,<br \/>\n&nbsp;&nbsp;units = \"cm\",<br \/>\n&nbsp;&nbsp;dpi = 600<br \/>\n)<\/p>\n<p># Exportation matricielle de contr\u00f4le au format PNG (300 DPI)<br \/>\nggsave(<br \/>\n&nbsp;&nbsp;filename = \"Figure_CDF_Cognitive_DKW.png\",<br \/>\n&nbsp;&nbsp;plot = p_dkw,<br \/>\n&nbsp;&nbsp;device = \"png\",<br \/>\n&nbsp;&nbsp;width = 18,<br \/>\n&nbsp;&nbsp;height = 12,<br \/>\n&nbsp;&nbsp;units = \"cm\",<br \/>\n&nbsp;&nbsp;dpi = 300<br \/>\n)<\/code><\/p>\n<h2>10. Inf\u00e9rence statistique et tests d&rsquo;ad\u00e9quation bas\u00e9s sur la CDF<\/h2>\n<h3>10.1 Le test de Kolmogorov-Smirnov \u00e0 un \u00e9chantillon (ks.test)<\/h3>\n<p>La mise en regard visuelle de la fonction de r\u00e9partition empirique et d&rsquo;un mod\u00e8le th\u00e9orique constitue une d\u00e9marche exploratoire incontournable, mais elle doit \u00eatre \u00e9tay\u00e9e par un test d&rsquo;hypoth\u00e8se formel d&rsquo;ad\u00e9quation (<em>goodness-of-fit<\/em>). Le test non param\u00e9trique le plus c\u00e9l\u00e8bre fond\u00e9 directement sur la CDF est le <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/online.stat.psu.edu\/stat415\/lesson\/17\/17.1\">test de Kolmogorov-Smirnov<\/a> \u00e0 un \u00e9chantillon. Il \u00e9value l&rsquo;hypoth\u00e8se nulle (H_0 : F(x) = F_0(x)) contre l&rsquo;hypoth\u00e8se alternative selon laquelle la v\u00e9ritable distribution sous-jacente s&rsquo;\u00e9carte de la loi postul\u00e9e (F_0).<\/p>\n<p>La statistique de test, not\u00e9e (D), correspond \u00e0 la distance supr\u00e9mum (l&rsquo;\u00e9cart vertical absolu le plus grand) mesur\u00e9e entre la fonction empirique d&rsquo;\u00e9chantillon (F_n(x)) et la CDF th\u00e9orique sp\u00e9cifi\u00e9e (F_0(x)) :<\/p>\n<p>[D = sup_{x in mathbb{R}} |F_n(x) &#8211; F_0(x)|]<\/p>\n<p>Dans R, ce test est ex\u00e9cut\u00e9 via la fonction g\u00e9n\u00e9rique <code>ks.test()<\/code>. Cependant, une mise en garde m\u00e9thodologique fondamentale s&rsquo;impose : la th\u00e9orie asymptotique standard du test de Kolmogorov-Smirnov exige que la distribution th\u00e9orique (F_0) soit int\u00e9gralement sp\u00e9cifi\u00e9e <em>a priori<\/em>, de mani\u00e8re totalement ind\u00e9pendante de l&rsquo;\u00e9chantillon. Si les param\u00e8tres de la distribution cible (comme la moyenne et l&rsquo;\u00e9cart-type d&rsquo;une gaussienne) sont directement estim\u00e9s \u00e0 partir de l&rsquo;\u00e9chantillon sous \u00e9tude, le test standard devient excessivement conservateur (les p-valeurs sont artificiellement gonfl\u00e9es). Dans ce sc\u00e9nario de param\u00e8tres estim\u00e9s, il est imp\u00e9ratif d&rsquo;utiliser la variante de Lilliefors, impl\u00e9ment\u00e9e dans le package <em>nortest<\/em> via <code>lillie.test()<\/code>.<\/p>\n<p><code># Ex\u00e9cution du test de Kolmogorov-Smirnov standard \u00e0 un \u00e9chantillon<br \/>\n# Hypoth\u00e8se nulle : Les donn\u00e9es de QI suivent exactement une loi N(100, 15^2)<br \/>\nresultat_ks_un &lt;- ks.test(scores_qi, &quot;pnorm&quot;, mean = 100, sd = 15)<br \/>\nprint(resultat_ks_un)<\/p>\n<p># D\u00e9monstration du test de Lilliefors en cas de param\u00e8tres estim\u00e9s sur l'\u00e9chantillon<br \/>\nif (requireNamespace(\"nortest\", quietly = TRUE)) {<br \/>\n&nbsp;&nbsp;resultat_lilliefors &lt;- nortest::lillie.test(scores_qi)<br \/>\n&nbsp;&nbsp;print(resultat_lilliefors)<br \/>\n}<\/code><\/p>\n<h3>10.2 Le test de Kolmogorov-Smirnov \u00e0 deux \u00e9chantillons<\/h3>\n<p>Dans une perspective clinique ou exp\u00e9rimentale comparant deux groupes ind\u00e9pendants, le test de Kolmogorov-Smirnov \u00e0 deux \u00e9chantillons \u00e9value l&rsquo;hypoth\u00e8se nulle selon laquelle deux ensembles d&rsquo;observations continues sont issus d&rsquo;une m\u00eame population parente ind\u00e9termin\u00e9e, ce qui s&rsquo;\u00e9crit formellement (H_0 : F_1(x) = F_2(x)) pour tout r\u00e9el (x). La statistique de test repose sur l&rsquo;\u00e9cart supr\u00e9mum absolu mesur\u00e9 entre les deux fonctions de r\u00e9partition empiriques (F_{n_1}(x)) et (F_{n_2}(x)) :<\/p>\n<p>[D = sup_{x in mathbb{R}} |F_{n_1}(x) &#8211; F_{n_2}(x)|]<\/p>\n<p>Il est critique de souligner la diff\u00e9rence m\u00e9thodologique fondamentale s\u00e9parant le test de Kolmogorov-Smirnov du classique test des rangs de Wilcoxon-Mann-Whitney. Alors que le test de Wilcoxon est essentiellement sensible \u00e0 un d\u00e9placement de la tendance centrale (diff\u00e9rence de position ou de m\u00e9diane sous hypoth\u00e8se d&rsquo;homosc\u00e9dasticit\u00e9), le test de Kolmogorov-Smirnov est un test de morphologie globale. Il r\u00e9agit \u00e0 n&rsquo;importe quelle disparit\u00e9 distributionnelle : un d\u00e9calage de moyenne, une alt\u00e9ration de la variance, une dissym\u00e9trie locale ou encore une bimodalit\u00e9 latente.<\/p>\n<p><code># Comparaison non param\u00e9trique globale des conditions Th\u00e9rapeutique vs T\u00e9moin<br \/>\nresultat_ks_deux &lt;- ks.test(scores_placebo, scores_innovant)<br \/>\nprint(resultat_ks_deux)<\/p>\n<p># Interpr\u00e9tation de la statistique D et de la p-valeur associ\u00e9e<br \/>\ncat(\"Statistique D calcul\u00e9e :\", resultat_ks_deux$statistic, \"n\")<br \/>\ncat(\"Degr\u00e9 de signification p-valeur :\", resultat_ks_deux$p.value, \"n\")<\/code><\/p>\n<h3>10.3 Approches compl\u00e9mentaires : Cramer-von Mises et Anderson-Darling<\/h3>\n<p>Bien que le test de Kolmogorov-Smirnov soit d&rsquo;une simplicit\u00e9 conceptuelle remarquable, il souffre d&rsquo;une faiblesse m\u00e9thodologique notoire largement document\u00e9e dans la litt\u00e9rature statistique : sa sensibilit\u00e9 d\u00e9cro\u00eet consid\u00e9rablement \u00e0 mesure que l&rsquo;on s&rsquo;\u00e9loigne du centre de la distribution pour se rapprocher des queues extr\u00eames. En effet, la variance de la statistique empirique (F_n(x)) s&rsquo;annule aux asymptotes 0 et 1, rendant le test KS relativement aveugle aux d\u00e9viations structurelles intervenant sur les percentiles marginaux (les 5 % les plus bas ou les plus \u00e9lev\u00e9s).<\/p>\n<p>Pour pallier ce d\u00e9ficit de puissance statistique, les tests de la famille quadratique apportent une solution de premier ordre. Le test de Cram&eacute;r-von Mises int\u00e8gre l&rsquo;\u00e9cart quadratique sur l&rsquo;ensemble de la distribution. Quant au test d&rsquo;<a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/www.jstor.org\/stable\/2236440\">Anderson-Darling<\/a>, il introduit une fonction de pond\u00e9ration hyperbolique qui accorde un poids pr\u00e9pond\u00e9rant aux queues de distribution :<\/p>\n<p>[A^2 = n int_{-infty}^{+infty} frac{left(F_n(x) &#8211; F_0(x)right)^2}{F_0(x)(1 &#8211; F_0(x))} , mathrm{d}F_0(x)]<\/p>\n<p>Ces tests sp\u00e9cialis\u00e9s sont mis en \u0153uvre sous R via les packages <em>goftest<\/em> et <em>nortest<\/em>, compl\u00e9tant de fa\u00e7on d\u00e9terminante l&rsquo;inf\u00e9rence distributionnelle.<\/p>\n<p><code># Mise en \u0153uvre des tests d'ad\u00e9quation quadratiques pond\u00e9r\u00e9s<br \/>\nif (requireNamespace(\"goftest\", quietly = TRUE)) {<br \/>\n&nbsp;&nbsp;# Test de Cram\u00e9r-von Mises<br \/>\n&nbsp;&nbsp;cvm_res &lt;- goftest::cvm.test(scores_qi, &quot;pnorm&quot;, mean = 100, sd = 15)<br \/>\n&nbsp;&nbsp;cat(\"P-valeur Cram\u00e9r-von Mises :\", cvm_res$p.value, \"n\")<br \/>\n&nbsp;&nbsp;<br \/>\n&nbsp;&nbsp;# Test d'Anderson-Darling (forte sensibilit\u00e9 aux queues de distribution)<br \/>\n&nbsp;&nbsp;ad_res &lt;- goftest::ad.test(scores_qi, &quot;pnorm&quot;, mean = 100, sd = 15)<br \/>\n&nbsp;&nbsp;cat(\"P-valeur Anderson-Darling :\", ad_res$p.value, \"n\")<br \/>\n}<\/code><\/p>\n<h2>11. R\u00e9solution des probl\u00e8mes fr\u00e9quents et optimisation computationnelle<\/h2>\n<h3>11.1 Traitement des ex \u00e6quo (ties) et donn\u00e9es discr\u00e8tes<\/h3>\n<p>L&rsquo;application rigoureuse de la th\u00e9orie des fonctions de r\u00e9partition pr\u00e9suppose conceptuellement que les variables observ\u00e9es soient issues de processus continus, o\u00f9 la probabilit\u00e9 th\u00e9orique d&rsquo;observer deux valeurs rigoureusement identiques est strictement nulle. Dans la r\u00e9alit\u00e9 empirique des sciences humaines et de la biom\u00e9decine, cette assomption est quasi syst\u00e9matiquement viol\u00e9e : les instruments de mesure (\u00e9chelles de Likert, scores de questionnaires, chronom\u00e9trages arrondis au centi\u00e8me) g\u00e9n\u00e8rent une proportion importante de valeurs r\u00e9p\u00e9t\u00e9es, commun\u00e9ment appel\u00e9es <em>ex &aelig;quo<\/em> ou <em>ties<\/em>.<\/p>\n<p>Sur le plan du calcul pur de la fonction <code>ecdf()<\/code>, la pr\u00e9sence de valeurs identiques r\u00e9p\u00e9t\u00e9es n&rsquo;induit aucun blocage algorithmique : le moteur R regroupe les occurrences identiques en un unique n\u0153ud, et la hauteur de la marche d&rsquo;escalier associ\u00e9e est automatiquement multipli\u00e9e par le nombre de doublons constat\u00e9s (hauteur \u00e9gale \u00e0 (k\/n) o\u00f9 (k) d\u00e9signe la fr\u00e9quence absolue de la valeur). En revanche, la pr\u00e9sence d&rsquo;ex &aelig;quo perturbe s\u00e9v\u00e8rement les fondements th\u00e9oriques des tests d&rsquo;ad\u00e9quation de type Kolmogorov-Smirnov. L&rsquo;ex\u00e9cution de <code>ks.test()<\/code> sur un vecteur pr\u00e9sentant des doublons g\u00e9n\u00e8re un avertissement formel signalant que la p-valeur exacte ne peut \u00eatre calcul\u00e9e et repose sur une approximation asymptotique potentiellement biais\u00e9e.<\/p>\n<p>Pour surmonter cet obstacle lors des phases inf\u00e9rentielles, deux protocoles sont valid\u00e9s : l&rsquo;adjonction d&rsquo;un bruit infinit\u00e9simal continu (<em>jittering<\/em> via la fonction <code>jitter()<\/code> de R) afin de disjoindre artificiellement les valeurs sans alt\u00e9rer la topologie de la distribution, ou le recours \u00e0 des tests de permutations exacts non conditionnels.<\/p>\n<p><code># Illustration de l'impact des ex \u00e6quo sur la fonction ecdf<br \/>\nscores_discrets &lt;- c(12, 14, 14, 14, 18, 20, 20, 25)<br \/>\nfn_discrete &lt;- ecdf(scores_discrets)<\/p>\n<p># La valeur 14 appara\u00eet 3 fois sur 8 observations :<br \/>\n# Fn(14) passe instantan\u00e9ment de 1\/8 \u00e0 4\/8 (saut de 3\/8)<br \/>\nknots(fn_discrete)<br \/>\nfn_discrete(14)<\/p>\n<p># Strat\u00e9gie de contr\u00f4le par jittering pour tests non param\u00e9triques sensibles<br \/>\nscores_sans_ties &lt;- jitter(scores_discrets, amount = 0.001)<br \/>\nks_ajuste &lt;- suppressWarnings(ks.test(scores_sans_ties, &quot;pnorm&quot;, mean = 17, sd = 4))<\/code><\/p>\n<h3>11.2 Gestion de jeux de donn\u00e9es massifs (Big Data)<\/h3>\n<p>\u00c0 l&rsquo;\u00e8re des m\u00e9gadonn\u00e9es cognitives, de la g\u00e9nomique comportementale ou de l&rsquo;analyse des traces num\u00e9riques issues d&rsquo;applications mobiles, les jeux de donn\u00e9es peuvent atteindre des millions d&rsquo;enregistrements. Dans un tel contexte, le calcul brut et le rendu graphique na\u00eff d&rsquo;une fonction de r\u00e9partition empirique se heurtent \u00e0 des limitations computationnelles majeures. Si l&rsquo;\u00e9valuation de <code>ecdf()<\/code> sur un vecteur de 5 millions d&rsquo;\u00e9l\u00e9ments s&rsquo;ex\u00e9cute en quelques secondes gr\u00e2ce \u00e0 la v\u00e9locit\u00e9 des algorithmes de tri sous R, le trac\u00e9 graphique direct de 5 millions de marches d&rsquo;escalier sous <em>ggplot2<\/em> sature la m\u00e9moire vid\u00e9o, g\u00e9n\u00e8re des fichiers vectoriels de plusieurs centaines de m\u00e9gaoctets et fige les moteurs de rendu PDF.<\/p>\n<p>Pour optimiser le rendu sans alt\u00e9rer d&rsquo;un iota la fid\u00e9lit\u00e9 de la courbe globale, la strat\u00e9gie computationnelle standard consiste \u00e0 \u00e9valuer l&rsquo;objet <code>ecdf()<\/code> sur une grille r\u00e9guli\u00e8re d&rsquo;abscisses uniform\u00e9ment espac\u00e9es comprenant entre 1 000 et 10 000 points. Sur un \u00e9cran ou une planche d&rsquo;impression standard, la r\u00e9solution physique ne permet pas de discerner un pas g\u00e9om\u00e9trique inf\u00e9rieur \u00e0 1\/1 000 de l&rsquo;espace de coordonn\u00e9es. Cette r\u00e9duction de dimension produit un rendu vectoriel ultral\u00e9ger, instantan\u00e9 et rigoureusement indiscernable du trac\u00e9 exhaustif d&rsquo;origine.<\/p>\n<p><code># Simulation d'une volum\u00e9trie massive (1 million d'observations)<br \/>\ngrand_echantillon &lt;- rnorm(1e6, mean = 50, sd = 10)<\/p>\n<p># Calcul instantan\u00e9 de l'objet fonctionnel complet<br \/>\nfn_massive &lt;- ecdf(grand_echantillon)<\/p>\n<p># Optimisation : Sous-\u00e9chantillonnage d'une grille de coordonn\u00e9es \u00e0 2 000 points<br \/>\ngrille_optimale &lt;- seq(min(grand_echantillon), max(grand_echantillon), length.out = 2000)<br \/>\ndf_optimise &lt;- data.frame(<br \/>\n&nbsp;&nbsp;x = grille_optimale,<br \/>\n&nbsp;&nbsp;y = fn_massive(grille_optimale)<br \/>\n)<\/p>\n<p># Trac\u00e9 haute performance via geom_line sur coordonn\u00e9es condens\u00e9es<br \/>\np_optimise &lt;- ggplot(df_optimise, aes(x = x, y = y)) +<br \/>\n&nbsp;&nbsp;geom_line(color = \"#16A085\", linewidth = 1) +<br \/>\n&nbsp;&nbsp;scale_y_continuous(labels = scales::percent_format()) +<br \/>\n&nbsp;&nbsp;labs(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;title = \"eCDF Haute Performance sur \u00c9chantillon Massif (N = 1 000 000)\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;x = \"Valeur observ\u00e9e\", y = \"Probabilit\u00e9 cumul\u00e9e\"<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;theme_minimal()<\/p>\n<p>print(p_optimise)<\/code><\/p>\n<h3>11.3 Erreurs de syntaxe communes et d\u00e9bogage<\/h3>\n<p>L&rsquo;exploitation pratique des fonctions de r\u00e9partition en langage R est r\u00e9guli\u00e8rement \u00e9maill\u00e9e d&rsquo;erreurs r\u00e9currentes, tant au niveau du typage des donn\u00e9es d&rsquo;entr\u00e9e que du param\u00e9trage des fonctions th\u00e9oriques. L&rsquo;erreur la plus banale concerne le format de l&rsquo;objet transmis \u00e0 <code>ecdf()<\/code>. Cette primitive exige imp\u00e9rativement un vecteur atomique num\u00e9rique (<code>numeric vector<\/code>). Si l&rsquo;utilisateur lui passe par inadvertance une colonne issue d&rsquo;un <em>tibble<\/em> sans extraction vectorielle (par exemple <code>df[\"score\"]<\/code> au lieu de <code>df$score<\/code> ou <code>df[[\"score\"]]<\/code>), R l\u00e8vera une erreur d&rsquo;incompatibilit\u00e9 de type.<\/p>\n<p>Une seconde m\u00e9prise classique r\u00e9side dans la param\u00e9trisation des lois asym\u00e9triques au sein des fonctions <code>curve()<\/code> ou <code>stat_function()<\/code>. Pour la loi exponentielle <code>pexp()<\/code>, le param\u00e8tre par d\u00e9faut est le taux (<code>rate<\/code>), et non la moyenne (qui en constitue l&rsquo;inverse math\u00e9matique (1\/lambda)). Pour la loi gamma <code>pgamma()<\/code>, la confusion entre le param\u00e8tre d&rsquo;\u00e9chelle (<code>scale<\/code>) et son inverse le taux (<code>rate<\/code>) produit des courbes th\u00e9oriques totalement aberrantes. Enfin, lors de l&rsquo;usage conjoint de <code>plot()<\/code> et de <code>curve(add = TRUE)<\/code> sous le moteur graphique de base R, omettre de d\u00e9finir explicitement la borne d&rsquo;abscisse <code>from<\/code> et <code>to<\/code> dans <code>curve()<\/code> peut contraindre la courbe th\u00e9orique \u00e0 adopter l&rsquo;intervalle unitaire par d\u00e9faut ([0, 1]), provoquant son \u00e9crasement hors du champ visuel des donn\u00e9es r\u00e9elles.<\/p>\n<p><code># D\u00e9bogage exemplaire : Pr\u00e9vention des erreurs de typage et de param\u00e9trisation<br \/>\ndf_test &lt;- data.frame(mesure = rgamma(100, shape = 2, scale = 5))<\/p>\n<p># ERREUR COMMUNE : passer un data frame d'une seule colonne<br \/>\n# fn_erreur &lt;- ecdf(df_test[&quot;mesure&quot;]) # D\u00e9clenche un dysfonctionnement<\/p>\n<p># SYNTAXE VALIDE : extraction sous forme de vecteur atomique pur<br \/>\nfn_correcte &lt;- ecdf(df_test$mesure)<\/p>\n<p># CONTR\u00d4LE DES PARAM\u00c8TRES GAMMA : pgamma attend shape et rate par d\u00e9faut<br \/>\nshape_estime &lt;- 2<br \/>\nscale_estime &lt;- 5<br \/>\nrate_equivalent &lt;- 1 \/ scale_estime<\/p>\n<p>curve(pgamma(x, shape = shape_estime, rate = rate_equivalent),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from = 0, to = 30, lwd = 1.5, lty = 2,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main = \"Param\u00e9trisation Rigoureuse d'une Loi Gamma\")<\/code><\/p>\n<h2>12. \u00c9tudes de cas appliqu\u00e9es en psychologie et mise en perspective comparative<\/h2>\n<h3>12.1 \u00c9tude de cas 1 : \u00c9talonnage normatif d&rsquo;un questionnaire d&rsquo;\u00e9valuation cognitive<\/h3>\n<p>Pour concr\u00e9tiser l&rsquo;ensemble des concepts th\u00e9oriques d\u00e9velopp\u00e9s, nous d\u00e9ployons une premi\u00e8re \u00e9tude de cas portant sur l&rsquo;\u00e9talonnage standardis\u00e9 d&rsquo;un instrument psychom\u00e9trique d&rsquo;\u00e9valuation des capacit\u00e9s de m\u00e9moire de travail (score brut sur une \u00e9chelle de 0 \u00e0 50) administr\u00e9 \u00e0 une cohorte normative de (N = 500) adultes sains. L&rsquo;objectif m\u00e9thodologique consiste \u00e0 \u00e9tablir la table de conversion officielle permettant de transposer n&rsquo;importe quel score brut en son rang percentile certifi\u00e9, tout en identifiant les seuils d&rsquo;alerte clinique (d\u00e9ficit cognitif l\u00e9ger fix\u00e9 au percentile 10, et d\u00e9ficit s\u00e9v\u00e8re fix\u00e9 au percentile 2.5).<\/p>\n<p>Apr\u00e8s importation et validation d&rsquo;int\u00e9grit\u00e9 de l&rsquo;\u00e9chantillon, nous calculons la fonction de r\u00e9partition empirique globale. Gr\u00e2ce \u00e0 l&rsquo;interpolation quantile, nous extrayons la grille compl\u00e8te des scores planchers associ\u00e9s \u00e0 l&rsquo;ensemble des d\u00e9ciles et percentiles cardinaux. La visualisation graphique int\u00e8gre les zones de vigilance clinique sous forme d&rsquo;ombrages contextuels discrets, fournissant aux praticiens un support de restitution diagnostique d&rsquo;une clart\u00e9 absolue.<\/p>\n<p><code># Simulation de la cohorte normative psychom\u00e9trique (N = 500)<br \/>\nset.seed(777)<br \/>\nscores_memoire &lt;- round(rnorm(500, mean = 28.5, sd = 6.2))<br \/>\nscores_memoire &lt;- pmin(pmax(scores_memoire, 0), 50) # Bornage strict \u00e0 l&#039;\u00e9chelle [0, 50]<\/p>\n<p># Instanciation fonctionnelle<br \/>\nfn_memoire &lt;- ecdf(scores_memoire)<\/p>\n<p># D\u00e9termination des seuils pathologiques<br \/>\nseuil_deficit_severe &lt;- quantile(scores_memoire, probs = 0.025)<br \/>\nseuil_deficit_leger &lt;- quantile(scores_memoire, probs = 0.10)<\/p>\n<p>cat(\"Seuil de d\u00e9ficit s\u00e9v\u00e8re (Percentile 2.5) : Score &lt;=&quot;, seuil_deficit_severe, &quot;n&quot;)<br \/>\ncat(\"Seuil de d\u00e9ficit l\u00e9ger (Percentile 10)   : Score &lt;=&quot;, seuil_deficit_leger, &quot;n&quot;)<\/p>\n<p># Visualisation norm\u00e9e d'\u00e9talonnage clinique sous ggplot2<br \/>\ndf_memoire &lt;- data.frame(Score = scores_memoire)<\/p>\n<p>p_etalonnage &lt;- ggplot(df_memoire, aes(x = Score)) +<br \/>\n&nbsp;&nbsp;# Zone ombr\u00e9e clinique : D\u00e9ficit cognitif l\u00e9ger et s\u00e9v\u00e8re<br \/>\n&nbsp;&nbsp;annotate(\"rect\", xmin = -Inf, xmax = seuil_deficit_leger, ymin = 0, ymax = 0.10,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fill = \"#FADBD8\", alpha = 0.5) +<br \/>\n&nbsp;&nbsp;stat_ecdf(geom = \"step\", color = \"#1B4F72\", linewidth = 1.1) +<br \/>\n&nbsp;&nbsp;geom_vline(xintercept = c(seuil_deficit_severe, seuil_deficit_leger),<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;color = \"#C0392B\", linetype = \"dashed\", linewidth = 0.8) +<br \/>\n&nbsp;&nbsp;scale_y_continuous(labels = scales::percent_format(), breaks = seq(0, 1, by = 0.10)) +<br \/>\n&nbsp;&nbsp;scale_x_continuous(breaks = seq(0, 50, by = 5)) +<br \/>\n&nbsp;&nbsp;labs(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;title = \"\u00c9talonnage Normatif du Score de M\u00e9moire de Travail (N = 500)\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;subtitle = \"Zone rouge d\u00e9limitant les seuils cliniques conventionnels (P10 et P2.5)\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;x = \"Score brut \u00e0 l'\u00e9preuve\", y = \"Rang percentile normatif\"<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;theme_classic()<\/p>\n<p>print(p_etalonnage)<\/code><\/p>\n<h3>12.2 \u00c9tude de cas 2 : Mod\u00e9lisation des temps de r\u00e9ponse en psychologie exp\u00e9rimentale<\/h3>\n<p>La seconde \u00e9tude de cas explore le domaine de la psychologie cognitive exp\u00e9rimentale \u00e0 travers le paradigme c\u00e9l\u00e8bre de l&rsquo;effet Stroop. Dans cette t\u00e2che, les participants sont soumis \u00e0 deux conditions d&rsquo;affichage : une condition congruente (o\u00f9 le mot \u00ab VERT \u00bb est calligraphi\u00e9 \u00e0 l&rsquo;encre verte) et une condition incongruente cr\u00e9ant un conflit cognitif (le mot \u00ab ROUGE \u00bb est \u00e9crit \u00e0 l&rsquo;encre bleue). La variable d\u00e9pendante continue enregistr\u00e9e correspond au temps de r\u00e9ponse en millisecondes.<\/p>\n<p>En chronom\u00e9trie mentale, l&rsquo;effet d&rsquo;interf\u00e9rence ne se traduit pas uniquement par une augmentation du temps de r\u00e9ponse moyen, mais par une d\u00e9formation profonde de l&rsquo;asym\u00e9trie de la distribution. Alors que les moyennes masquent la dynamique temporelle, la superposition des fonctions de r\u00e9partition empiriques met en \u00e9vidence le ralentissement cognitif sur l&rsquo;int\u00e9gralit\u00e9 de la courbe, et tout particuli\u00e8rement sur la queue de distribution sup\u00e9rieure refl\u00e9tant les \u00e9checs transitoires du contr\u00f4le ex\u00e9cutif inhibiteur.<\/p>\n<p><code># Simulation d'une t\u00e2che de Stroop (N = 200 essais par condition)<br \/>\nset.seed(404)<br \/>\nn_essais &lt;- 200<\/p>\n<p># Mod\u00e9lisation par loi Log-Normale r\u00e9aliste (latences cognitives positives)<br \/>\nlatences_congruentes &lt;- rlnorm(n_essais, meanlog = 6.30, sdlog = 0.22)   # Moyenne g\u00e9om\u00e9trique ~545 ms<br \/>\nlatences_incongruentes &lt;- rlnorm(n_essais, meanlog = 6.48, sdlog = 0.28) # Moyenne g\u00e9om\u00e9trique ~650 ms<\/p>\n<p>df_stroop &lt;- data.frame(<br \/>\n&nbsp;&nbsp;Temps_Reaction = c(latences_congruentes, latences_incongruentes),<br \/>\n&nbsp;&nbsp;Condition = factor(rep(c(\"Congruente\", \"Incongruente\"), each = n_essais))<br \/>\n)<\/p>\n<p># Visualisation dynamique de l'effet d'interf\u00e9rence cognitive via stat_ecdf<br \/>\np_stroop &lt;- ggplot(df_stroop, aes(x = Temps_Reaction, color = Condition)) +<br \/>\n&nbsp;&nbsp;stat_ecdf(geom = \"step\", linewidth = 1.2) +<br \/>\n&nbsp;&nbsp;scale_color_manual(values = c(\"Congruente\" = \"#27AE60\", \"Incongruente\" = \"#8E44AD\")) +<br \/>\n&nbsp;&nbsp;scale_x_continuous(limits = c(300, 1400), breaks = seq(300, 1400, by = 200)) +<br \/>\n&nbsp;&nbsp;scale_y_continuous(labels = scales::percent_format()) +<br \/>\n&nbsp;&nbsp;labs(<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;title = \"Dynamique Distributionnelle de l'Effet Stroop\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;subtitle = \"L'\u00e9cartement croissant vers la droite illustre le co\u00fbt inhibiteur ex\u00e9cutif\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;x = \"Temps de r\u00e9action (millisecondes)\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;y = \"Probabilit\u00e9 cumul\u00e9e d'initiation motrice\",<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;color = \"Condition cognitive :\"<br \/>\n&nbsp;&nbsp;) +<br \/>\n&nbsp;&nbsp;theme_minimal() +<br \/>\n&nbsp;&nbsp;theme(legend.position = \"bottom\")<\/p>\n<p>print(p_stroop)<\/code><\/p>\n<h3>12.3 Mise en perspective : R versus tableurs bureautiques (Excel)<\/h3>\n<p>L&rsquo;analyse comparative des fonctionnalit\u00e9s logicielles souligne avec force la sup\u00e9riorit\u00e9 structurelle du langage R sur les tableurs bureautiques conventionnels de type Microsoft Excel lorsqu&rsquo;il s&rsquo;agit de mod\u00e9liser des fonctions de r\u00e9partition. Dans un tableur, il n&rsquo;existe aucune primitive algorithmique \u00e9quivalente \u00e0 l&rsquo;objet fonctionnel <code>ecdf()<\/code>. Pour construire une courbe cumul\u00e9e sous Excel, l&rsquo;utilisateur est contraint de trier physiquement ses colonnes de donn\u00e9es, de concevoir manuellement une colonne de num\u00e9rotation d&rsquo;incr\u00e9ments, de diviser cette derni\u00e8re par la taille de l&rsquo;\u00e9chantillon, puis de g\u00e9n\u00e9rer un graphique de dispersion de type nuage de points reli\u00e9 par des lignes droites polygonales.<\/p>\n<p>Cette approche manuelle sous tableur pr\u00e9sente de multiples vuln\u00e9rabilit\u00e9s r\u00e9dhibitoires pour la recherche scientifique : un risque colossal d&rsquo;erreur humaine lors des manipulations manuelles de cellules, une absence totale de gestion algorithmique des ex &aelig;quo (qui exigent une formule de rang moyen ou maximum complexe), et l&rsquo;incapacit\u00e9 d&rsquo;automatiser le trac\u00e9 face \u00e0 de nouveaux flux de donn\u00e9es sans redessiner manuellement la plage de cellules source. De surcro\u00eet, Excel ne dispose d&rsquo;aucun m\u00e9canisme natif pour calculer les bandes de confiance simultan\u00e9es de Dvoretzky-Kiefer-Wolfowitz ou pour ex\u00e9cuter des tests de Kolmogorov-Smirnov et d&rsquo;Anderson-Darling.<\/p>\n<p>\u00c0 l&rsquo;inverse, l&rsquo;environnement R assure une reproductibilit\u00e9 scientifique int\u00e9grale : l&rsquo;int\u00e9gralit\u00e9 du pipeline &mdash; depuis le chargement des donn\u00e9es brutes jusqu&rsquo;\u00e0 l&rsquo;exportation vectorielle haute d\u00e9finition, en passant par l&rsquo;interrogation fonctionnelle directe et les tests d&rsquo;ad\u00e9quation param\u00e9trique &mdash; est encapsul\u00e9e au sein d&rsquo;un script textuel auditable, p\u00e9renne et r\u00e9ex\u00e9cutable \u00e0 l&rsquo;identique. Cette rigueur computationnelle fait de R l&rsquo;instrument indispensable pour tout chercheur ou analyste soucieux de valoriser ses donn\u00e9es distributionnelles selon les standards m\u00e9thodologiques les plus \u00e9lev\u00e9s de la science contemporaine.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>Anderson, T. W., &amp; Darling, D. A. (1952). Asymptotic theory of certain \u00ab\u00a0goodness of fit\u00a0\u00bb criteria based on stochastic processes. <em>The Annals of Mathematical Statistics<\/em>, 23(2), 193\u2013212. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1214\/aoms\/1177729382\">https:\/\/doi.org\/10.1214\/aoms\/1177729382<\/a><\/li>\n<li>Dvoretzky, A., Kiefer, J., &amp; Wolfowitz, J. (1956). Asymptotic minimax character of the sample distribution function and of the classical multinomial estimator. <em>The Annals of Mathematical Statistics<\/em>, 27(3), 642\u2013669. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1214\/aoms\/1177728174\">https:\/\/doi.org\/10.1214\/aoms\/1177728174<\/a><\/li>\n<li>Hyndman, R. J., &amp; Fan, Y. (1996). Sample quantiles in statistical packages. <em>The American Statistician<\/em>, 50(4), 361\u2013365. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1080\/00031305.1996.10473566\">https:\/\/doi.org\/10.1080\/00031305.1996.10473566<\/a><\/li>\n<li>Kolmogorov, A. N. (1933). <em>Grundbegriffe der Wahrscheinlichkeitsrechnung<\/em>. Julius Springer.<\/li>\n<li>Massart, P. (1990). The tight constant in the Dvoretzky-Kiefer-Wolfowitz inequality. <em>The Annals of Probability<\/em>, 18(3), 1269\u20131283. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1214\/aop\/1176990746\">https:\/\/doi.org\/10.1214\/aop\/1176990746<\/a><\/li>\n<li>R Core Team. (2023). <em>R: A language and environment for statistical computing<\/em>. R Foundation for Statistical Computing. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/www.R-project.org\/\">https:\/\/www.R-project.org\/<\/a><\/li>\n<li>Wickham, H. (2016). <em>ggplot2: Elegant graphics for data analysis<\/em>. Springer-Verlag New York. <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. <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1007\/0-387-28695-0\">https:\/\/doi.org\/10.1007\/0-387-28695-0<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet pour calculer et tracer une fonction de r\u00e9partition (CDF) empirique et th\u00e9orique dans R avec les fonctions de base et ggplot2.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[2620,4136],"tags":[4742,4946,2688,2658,3961],"class_list":["post-2930","psych_stat","type-psych_stat","status-publish","hentry","category-psychometrie-et-analyse-de-donnees","category-statistiques-en-r","tag-cdf","tag-ecdf","tag-ggplot2","tag-r","tag-visualisation"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/2930","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=2930"}],"version-history":[{"count":1,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/2930\/revisions"}],"predecessor-version":[{"id":16414,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/2930\/revisions\/16414"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}