{"id":8236,"date":"2026-09-17T04:52:16","date_gmt":"2026-09-17T04:52:16","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-calculer-quantiles-par-groupe-dans-r-exemples\/"},"modified":"2026-09-17T04:52:16","modified_gmt":"2026-09-17T04:52:16","slug":"comment-calculer-quantiles-par-groupe-dans-r-exemples","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-calculer-quantiles-par-groupe-dans-r-exemples","title":{"rendered":"Comment calculer des quantiles par groupe dans R (avec exemples)"},"content":{"rendered":"<p>Dans l&rsquo;arsenal contemporain de l&rsquo;analyse exploratoire et inf\u00e9rentielle de donn\u00e9es, l&rsquo;\u00e9valuation de la dispersion et de la morphologie des distributions constitue un imp\u00e9ratif fondamental. Bien que les m\u00e9triques classiques de tendance centrale, telles que l&rsquo;esp\u00e9rance math\u00e9matique ou la moyenne arithm\u00e9tique pond\u00e9r\u00e9e, demeurent largement pl\u00e9biscit\u00e9es en raison de leur tractabilit\u00e9 analytique, elles s&rsquo;av\u00e8rent structurellement d\u00e9ficientes d\u00e8s lors que les donn\u00e9es empiriques s&rsquo;\u00e9cartent des hypoth\u00e8ses restrictives de normalit\u00e9 gaussienne. L&rsquo;asym\u00e9trie marqu\u00e9e, l&rsquo;h\u00e9t\u00e9rosc\u00e9dasticit\u00e9, la pr\u00e9sence de queues de distribution \u00e9paisses et l&rsquo;\u00e9mergence de valeurs aberrantes exigent le recours \u00e0 des approches non param\u00e9triques robustes. Au c\u0153ur de cette m\u00e9thodologie se trouvent les <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Quantile\">quantiles<\/a>, des estimateurs positionnels invariants par transformation monotone croissante, capables de cartographier avec une fid\u00e9lit\u00e9 chirurgicale l&rsquo;architecture interne des variables quantitatives continues ou discr\u00e8tes.<\/p>\n<p>La complexit\u00e9 analytique s&rsquo;accro\u00eet d&rsquo;un ordre de grandeur lorsque l&rsquo;investigateur doit appr\u00e9hender des jeux de donn\u00e9es stratifi\u00e9s, o\u00f9 les observations sont structur\u00e9es en sous-populations ou groupes exp\u00e9rimentaux distincts. Qu&rsquo;il s&rsquo;agisse de comparer des temps de r\u00e9action psychom\u00e9triques sous diverses conditions cognitives, d&rsquo;\u00e9valuer les seuils de biomarqueurs cliniques \u00e0 travers plusieurs cohortes pathologiques, ou d&rsquo;analyser la dynamique des revenus ventil\u00e9s par segments d\u00e9mographiques, la d\u00e9composition des quantiles par groupe constitue le pivot op\u00e9rationnel de l&rsquo;inf\u00e9rence moderne. L&rsquo;environnement statistique <a rel=\"noopener noreferrer\" href=\"https:\/\/www.r-project.org\/\">R<\/a> s&rsquo;impose historiquement comme la plateforme d&rsquo;\u00e9lection pour ex\u00e9cuter ces mod\u00e9lisations, offrant un spectre d&rsquo;outils allant des algorithmes matriciels fondamentaux aux architectures vectorielles hautement optimis\u00e9es.<\/p>\n<p>Ce trait\u00e9 exhaustif a pour vocation de d\u00e9cortiquer, avec une rigueur \u00e0 la fois math\u00e9matique, computationnelle et m\u00e9thodologique, l&rsquo;ensemble des techniques permettant d&rsquo;estimer des quantiles conditionnels au sein du langage R. \u00c0 travers l&rsquo;exploration des neuf formulations algorithmiques de la fonction native, l&rsquo;analyse approfondie des idiomes fonctionnels modernes articul\u00e9s autour de l&rsquo;\u00e9cosyst\u00e8me du tidyverse, l&rsquo;\u00e9valuation des alternatives haute performance offertes par le calcul par r\u00e9f\u00e9rence, et l&rsquo;impl\u00e9mentation de proc\u00e9dures inf\u00e9rentielles par r\u00e9\u00e9chantillonnage bootstrap stratifi\u00e9, ce guide fournit aux chercheurs, data scientists et biostatisticiens un corpus complet pour transformer des donn\u00e9es stratifi\u00e9es brutes en indicateurs d\u00e9cisionnels fiables et reproductibles.<\/p>\n<h2>1. Introduction th\u00e9orique aux quantiles et \u00e0 leur d\u00e9composition par groupe<\/h2>\n<h3>1.1 D\u00e9finition statistique des quantiles et percentiles<\/h3>\n<p>D&rsquo;un point de vue formel, consid\u00e9rons une variable al\u00e9atoire r\u00e9elle <span class=\"arabpsy-math-inline\" data-latex=\"X\">$X$<\/span> d\u00e9finie sur un espace probabilis\u00e9, caract\u00e9ris\u00e9e par sa fonction de r\u00e9partition cumulative <span class=\"arabpsy-math-inline\" data-latex=\"F_X(x) = P(X le x)\">$F_X(x) = P(X le x)$<\/span>. Pour toute probabilit\u00e9 <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span> appartenant \u00e0 l&rsquo;intervalle ouvert <span class=\"arabpsy-math-inline\" data-latex=\"]0, 1[\">$]0, 1[$<\/span>, le quantile d&rsquo;ordre <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span>, traditionnellement not\u00e9 <span class=\"arabpsy-math-inline\" data-latex=\"Q(p)\">$Q(p)$<\/span> ou <span class=\"arabpsy-math-inline\" data-latex=\"x_p\">$x_p$<\/span>, est d\u00e9fini comme la borne inf\u00e9rieure de l&rsquo;ensemble des valeurs r\u00e9elles pour lesquelles la fonction de r\u00e9partition est sup\u00e9rieure ou \u00e9gale \u00e0 ladite probabilit\u00e9 :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"Q(p) = F_X^{-1}(p) = \\inf {x in \\mathbb{R} : F_X(x) ge p}\">$$Q(p) = F_X^{-1}(p) = \\inf {x in \\mathbb{R} : F_X(x) ge p}$$<\/span><\/p>\n<p>Cette formulation par l&rsquo;inverse g\u00e9n\u00e9ralis\u00e9 de la fonction de r\u00e9partition permet d&rsquo;\u00e9tendre la d\u00e9finition aux variables al\u00e9atoires discr\u00e8tes ou pr\u00e9sentant des discontinuit\u00e9s strictes. Lorsque la fonction <span class=\"arabpsy-math-inline\" data-latex=\"F_X\">$F_X$<\/span> est strictement croissante et absolument continue, le quantile correspond simplement \u00e0 la solution unique de l&rsquo;\u00e9quation <span class=\"arabpsy-math-inline\" data-latex=\"F_X(x_p) = p\">$F_X(x_p) = p$<\/span>. Les quantiles segmentent ainsi l&rsquo;espace des r\u00e9alisations en sous-ensembles \u00e9quiprobables.<\/p>\n<p>Sur le plan terminologique, il convient de distinguer les quartiles, qui partitionnent la masse de probabilit\u00e9 en quatre segments \u00e9gaux d\u00e9limit\u00e9s par <span class=\"arabpsy-math-inline\" data-latex=\"p in {0.25, 0.50, 0.75}\">$p in {0.25, 0.50, 0.75}$<\/span>, les d\u00e9ciles, qui op\u00e8rent une division en dix classes (<span class=\"arabpsy-math-inline\" data-latex=\"p in {0.1, 0.2, dots, 0.9}\">$p in {0.1, 0.2, dots, 0.9}$<\/span>), et les centiles ou percentiles, qui d\u00e9coupent la distribution en cent fractions unitaires (<span class=\"arabpsy-math-inline\" data-latex=\"p in {0.01, 0.02, dots, 0.99}\">$p in {0.01, 0.02, dots, 0.99}$<\/span>). Le concept de quantile arbitraire englobe l&rsquo;ensemble de ces d\u00e9clinaisons pour n&rsquo;importe quelle valeur continue de <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span>. La m\u00e9diane correspond rigoureusement au quantile d&rsquo;ordre $0.50$, divisant la distribution en deux moiti\u00e9s d&rsquo;effectifs th\u00e9oriques identiques.<\/p>\n<p>Le r\u00f4le des quantiles dans la caract\u00e9risation non param\u00e9trique s&rsquo;av\u00e8re fondamental. Contrairement aux moments d&rsquo;ordre sup\u00e9rieur de la th\u00e9orie statistique classique \u2014 \u00e0 l&rsquo;instar de la variance, de l&rsquo;asym\u00e9trie de Fisher-Pearson (skewness) et de l&rsquo;aplatissement (kurtosis) \u2014, les quantiles ne d\u00e9pendent pas d&rsquo;hypoth\u00e8ses relatives \u00e0 l&rsquo;int\u00e9grabilit\u00e9 de la loi de probabilit\u00e9 sous-jacente. Ils pr\u00e9sentent une sensibilit\u00e9 minimale, voire nulle, aux valeurs extr\u00eames et aux contaminations par des donn\u00e9es aberrantes, une propri\u00e9t\u00e9 quantifi\u00e9e par leur point de rupture asymptotique \u00e9lev\u00e9 pouvant atteindre 50 % pour la m\u00e9diane.<\/p>\n<h3>1.2 Pertinence de la stratification par groupe dans l&rsquo;analyse empirique<\/h3>\n<p>L&rsquo;analyse distributionnelle globale appliqu\u00e9e \u00e0 une population composite encourt le risque syst\u00e9matique de masquer une h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 latente critique. Dans la d\u00e9marche scientifique exp\u00e9rimentale ou observationnelle, les donn\u00e9es sont quasi syst\u00e9matiquement partitionn\u00e9es selon des facteurs taxonomiques, g\u00e9ographiques, cliniques ou temporels. L&rsquo;\u00e9valuation de l&rsquo;h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 sous-jacente entre diff\u00e9rentes cohortes exige une stratification formelle, car la simple agr\u00e9gation globale op\u00e8re un lissage artificiel des sp\u00e9cificit\u00e9s morphologiques propres \u00e0 chaque strate.<\/p>\n<p>Les m\u00e9triques centrales globales sont particuli\u00e8rement trompeuses en pr\u00e9sence de sous-groupes d\u00e9s\u00e9quilibr\u00e9s ou multimodaux. Par exemple, l&rsquo;estimation d&rsquo;une moyenne g\u00e9n\u00e9rale du niveau de revenu dans une \u00e9tude sociologique int\u00e9grant des disparit\u00e9s r\u00e9gionales aigu\u00ebs masque la polarisation intra-groupe et peut g\u00e9n\u00e9rer des erreurs d&rsquo;inf\u00e9rence relevant du paradoxe de Simpson ou d&rsquo;illusions \u00e9cologiques. L&rsquo;\u00e9valuation conditionnelle des quantiles permet d&rsquo;observer comment les quantiles inf\u00e9rieurs, m\u00e9dians et sup\u00e9rieurs se d\u00e9placent d&rsquo;une sous-population \u00e0 l&rsquo;autre, r\u00e9v\u00e9lant si les disparit\u00e9s observ\u00e9es s&rsquo;exercent uniform\u00e9ment sur l&rsquo;ensemble de l&rsquo;\u00e9chelle de mesure ou si elles se concentrent de mani\u00e8re aigu\u00eb dans les extr\u00e9mit\u00e9s.<\/p>\n<p>En psychom\u00e9trie, en neurosciences computationnelles et dans les sciences du comportement, cette d\u00e9composition par groupe est indispensable. Lorsqu&rsquo;on analyse des scores d&rsquo;anxi\u00e9t\u00e9 ou des latences de traitement de l&rsquo;information cognitive, deux cohortes peuvent pr\u00e9senter des moyennes arithm\u00e9tiques statistiquement indiscernables tout en affichant des structures de dispersion radicalement divergentes. L&rsquo;une des conditions exp\u00e9rimentales peut n&rsquo;engendrer un allongement des temps de r\u00e9ponse que chez les sujets les plus lents \u2014 ce qui se manifeste exclusivement par une \u00e9l\u00e9vation substantielle du 90e centile \u2014, tandis que les 10e et 50e centiles demeurent stables. Seule une estimation syst\u00e9matique et stratifi\u00e9e des quantiles permet d&rsquo;isoler ces dynamiques sous-jacentes avec une r\u00e9solution diagnostique optimale.<\/p>\n<h3>1.3 Distinction entre mesures de tendance centrale et analyse distributionnelle<\/h3>\n<p>La statistique param\u00e9trique conventionnelle s&rsquo;est historiquement construite autour du paradigme de la moyenne et de la variance, en grande partie sous l&rsquo;\u00e9gide du th\u00e9or\u00e8me central limite et de la commodit\u00e9 calculatoire de la loi normale. N\u00e9anmoins, r\u00e9sumer une variable continue \u00e0 son esp\u00e9rance math\u00e9matique postule implicitement une sym\u00e9trie parfaite de la distribution et l&rsquo;absence de tra\u00eenes lourdes. D\u00e8s lors que ces hypoth\u00e8ses sont viol\u00e9es, la moyenne arithm\u00e9tique perd sa qualit\u00e9 de valeur typique, \u00e9tant irr\u00e9m\u00e9diablement tract\u00e9e vers la queue de distribution par les observations isol\u00e9es de magnitude extr\u00eame.<\/p>\n<p>L&rsquo;analyse distributionnelle quantile restaure une vision granulaire de la dispersion. La comparaison entre la m\u00e9diane et les quartiles adjacents (<span class=\"arabpsy-math-inline\" data-latex=\"Q_1\">$Q_1$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"Q_3\">$Q_3$<\/span>) permet d&rsquo;\u00e9valuer directement l&rsquo;asym\u00e9trie locale sans n\u00e9cessiter le calcul de moments d&rsquo;ordre trois. Si l&rsquo;\u00e9cart <span class=\"arabpsy-math-inline\" data-latex=\"(Q_3 - Q_2)\">$(Q_3 &#8211; Q_2)$<\/span> surpasse significativement <span class=\"arabpsy-math-inline\" data-latex=\"(Q_2 - Q_1)\">$(Q_2 &#8211; Q_1)$<\/span>, la distribution exhibe une asym\u00e9trie positive marqu\u00e9e au sein du groupe \u00e9tudi\u00e9. De surcro\u00eet, le comportement des centiles extr\u00eames, tels que le 1er et le 99e centile, renseigne sur l&rsquo;\u00e9paisseur des queues de distribution, offrant un indicateur empirique d&rsquo;aplatissement direct et r\u00e9sistant aux artefacts d&rsquo;\u00e9chantillonnage.<\/p>\n<p>Dans les applications industrielles, \u00e9pid\u00e9miologiques et psychom\u00e9triques, les d\u00e9cisions op\u00e9rationnelles reposent rarement sur des moyennes, mais sur des seuils critiques positionnels. En diagnostic m\u00e9dical, la d\u00e9termination de valeurs biologiques anormales s&rsquo;op\u00e8re par l&rsquo;\u00e9tablissement d&rsquo;intervalles de r\u00e9f\u00e9rence fond\u00e9s sur le 2.5e et le 97.5e centile d&rsquo;une population de contr\u00f4le saine. De m\u00eame, dans les protocoles d&rsquo;\u00e9valuation ergonomique ou de contr\u00f4le qualit\u00e9 de logiciels interactifs, les ing\u00e9nieurs surveillent le 95e ou 99e percentile des latences r\u00e9seau pour garantir la tol\u00e9rance aux pannes. L&rsquo;analyse des quantiles conditionnels par strate factorielle constitue ainsi le fondement m\u00e9thodologique de la prise de d\u00e9cision fond\u00e9e sur les donn\u00e9es r\u00e9elles.<\/p>\n<h2>2. Fondements math\u00e9matiques et algorithmiques de la fonction quantile() dans R<\/h2>\n<h3>2.1 Formulation g\u00e9n\u00e9rale et principe d&rsquo;interpolation continue<\/h3>\n<p>Dans un cadre d&rsquo;\u00e9chantillonnage fini, nous disposons d&rsquo;un vecteur d&rsquo;observations empiriques ordonn\u00e9es <span class=\"arabpsy-math-inline\" data-latex=\"x_{(1)} le x_{(2)} le dots le x_{(n)}\">$x_{(1)} le x_{(2)} le dots le x_{(n)}$<\/span>, d\u00e9sign\u00e9es sous le terme de <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Order_statistic\">statistiques d&rsquo;ordre<\/a> d&rsquo;un \u00e9chantillon de taille <span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span>. Contrairement au cadre continu th\u00e9orique o\u00f9 la fonction de r\u00e9partition est strictement inversible, l&rsquo;\u00e9chantillon discret impose une strat\u00e9gie d&rsquo;estimation pour toute valeur de <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span> ne correspondant pas exactement \u00e0 un rang entier normalis\u00e9 <span class=\"arabpsy-math-inline\" data-latex=\"(k\/n)\">$(k\/n)$<\/span>.<\/p>\n<p>L&rsquo;approche computationnelle moderne repose sur un principe d&rsquo;interpolation lin\u00e9aire continue entre les statistiques d&rsquo;ordre cons\u00e9cutives. L&rsquo;estimation du quantile <span class=\"arabpsy-math-inline\" data-latex=\"\\hat{Q}(p)\">$\\hat{Q}(p)$<\/span> s&rsquo;exprime par la combinaison lin\u00e9aire pond\u00e9r\u00e9e :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"\\hat{Q}(p) = (1 - \\gamma) x_{(j)} + \\gamma x_{(j+1)}\">$$\\hat{Q}(p) = (1 &#8211; \\gamma) x_{(j)} + \\gamma x_{(j+1)}$$<\/span><\/p>\n<p>o\u00f9 <span class=\"arabpsy-math-inline\" data-latex=\"j\">$j$<\/span> repr\u00e9sente la partie enti\u00e8re d&rsquo;un indice r\u00e9el calcul\u00e9 en fonction de la probabilit\u00e9 <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span> et de la taille d&rsquo;\u00e9chantillon <span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span>, tandis que <span class=\"arabpsy-math-inline\" data-latex=\"\\gamma in [0, 1]\">$\\gamma in [0, 1]$<\/span> d\u00e9signe le facteur de pond\u00e9ration d&rsquo;interpolation associ\u00e9 \u00e0 la fraction r\u00e9siduelle. Le comportement asymptotique de cet estimateur empirique converge de mani\u00e8re universelle vers le quantile th\u00e9orique de la population sous des conditions r\u00e9guli\u00e8res de d\u00e9rivabilit\u00e9 de la densit\u00e9, mais les propri\u00e9t\u00e9s \u00e0 \u00e9chantillon fini d\u00e9pendent directement de la param\u00e9trisation exacte de <span class=\"arabpsy-math-inline\" data-latex=\"j\">$j$<\/span> et de <span class=\"arabpsy-math-inline\" data-latex=\"\\gamma\">$\\gamma$<\/span>.<\/p>\n<h3>2.2 Taxonomie des neuf algorithmes de calcul du param\u00e8tre type<\/h3>\n<p>Un aspect souvent m\u00e9connu des praticiens de R r\u00e9side dans l&rsquo;existence de neuf algorithmes distincts impl\u00e9ment\u00e9s au sein de la fonction native <code>quantile()<\/code>, pilot\u00e9s par l&rsquo;argument <code>type = 1:9<\/code>. Cette classification exhaustive d\u00e9coule des travaux fondateurs de Hyndman et Fan (1996), qui ont formalis\u00e9 et standardis\u00e9 les d\u00e9finitions math\u00e9matiques utilis\u00e9es de mani\u00e8re h\u00e9t\u00e9rog\u00e8ne \u00e0 travers les progiciels statistiques internationaux.<\/p>\n<p>Les m\u00e9thodes de type 1 \u00e0 3 constituent des fonctions de r\u00e9partition empiriques discontinues, o\u00f9 aucune interpolation r\u00e9elle n&rsquo;est effectu\u00e9e :<\/p>\n<ul>\n<li><strong>Type 1 :<\/strong> Fonction de r\u00e9partition empirique inverse standard sans interpolation. Si <span class=\"arabpsy-math-inline\" data-latex=\"p = 0\">$p = 0$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"\\hat{Q}(p) = x_{(1)}\">$\\hat{Q}(p) = x_{(1)}$<\/span> ; sinon, <span class=\"arabpsy-math-inline\" data-latex=\"\\hat{Q}(p) = x_{(j)}\">$\\hat{Q}(p) = x_{(j)}$<\/span> avec <span class=\"arabpsy-math-inline\" data-latex=\"j = lceil np rceil\">$j = lceil np rceil$<\/span>.<\/li>\n<li><strong>Type 2 :<\/strong> Identique au type 1, mais int\u00e8gre une moyenne arithm\u00e9tique aux points de discontinuit\u00e9 lorsque <span class=\"arabpsy-math-inline\" data-latex=\"np\">$np$<\/span> est un entier strict, soit <span class=\"arabpsy-math-inline\" data-latex=\"\\hat{Q}(p) = (x_{(j)} + x_{(j+1)}) \/ 2\">$\\hat{Q}(p) = (x_{(j)} + x_{(j+1)}) \/ 2$<\/span>.<\/li>\n<li><strong>Type 3 :<\/strong> Statistiques d&rsquo;ordre les plus proches, fr\u00e9quemment observ\u00e9es dans certaines anciennes biblioth\u00e8ques d&rsquo;analyse num\u00e9rique, o\u00f9 <span class=\"arabpsy-math-inline\" data-latex=\"j = \\text{round}(np)\">$j = \\text{round}(np)$<\/span>.<\/li>\n<\/ul>\n<p>Les m\u00e9thodes de type 4 \u00e0 9 mettent en \u0153uvre une interpolation lin\u00e9aire continue de la forme <span class=\"arabpsy-math-inline\" data-latex=\"\\hat{Q}(p) = x_{(j)} + (np + m - j)(x_{(j+1)} - x_{(j)})\">$\\hat{Q}(p) = x_{(j)} + (np + m &#8211; j)(x_{(j+1)} &#8211; x_{(j)})$<\/span>, o\u00f9 la constante <span class=\"arabpsy-math-inline\" data-latex=\"m in \\mathbb{R}\">$m in \\mathbb{R}$<\/span> conditionne la position relative des points nodaux :<\/p>\n<ul>\n<li><strong>Type 4 :<\/strong> \u00c9quivaut \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"m = 0\">$m = 0$<\/span>, interpolant lin\u00e9airement sur la base de la fonction de r\u00e9partition \u00e9chelonn\u00e9e standard.<\/li>\n<li><strong>Type 5 :<\/strong> Correspond \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"m = -1\/2\">$m = -1\/2$<\/span>, largement pl\u00e9biscit\u00e9 en hydrologie et m\u00e9t\u00e9orologie computationnelle.<\/li>\n<li><strong>Type 6 :<\/strong> Utilise <span class=\"arabpsy-math-inline\" data-latex=\"m = p\">$m = p$<\/span>. Il s&rsquo;agit de la formule standard impl\u00e9ment\u00e9e dans les logiciels propri\u00e9taires commerciaux tels que SPSS, Minitab ou la fonction <code>PERCENTILE.EXC<\/code> de Microsoft Excel. Elle repose sur le fractionnement de l&rsquo;espace ordonn\u00e9 en <span class=\"arabpsy-math-inline\" data-latex=\"n + 1\">$n + 1$<\/span> segments.<\/li>\n<li><strong>Type 7 :<\/strong> Correspond \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"m = 1 - p\">$m = 1 &#8211; p$<\/span>. Il s&rsquo;agit du param\u00e8tre par d\u00e9faut inconditionnel dans le noyau du logiciel R, ainsi que dans Python (fonction <code>numpy.percentile<\/code> avec param\u00e8tre lin\u00e9aire) et dans la fonction <code>PERCENTILE.INC<\/code> d&rsquo;Excel. Bien qu&rsquo;il fournisse des estimations lisses et stables pour les distributions r\u00e9guli\u00e8res, il pr\u00e9sente un biais non nul sur les queues de certaines lois continues asym\u00e9triques.<\/li>\n<li><strong>Type 8 :<\/strong> Repose sur <span class=\"arabpsy-math-inline\" data-latex=\"m = -(p + 1)\/3\">$m = -(p + 1)\/3$<\/span>. Hyndman et Fan d\u00e9montrent qu&rsquo;il s&rsquo;agit du meilleur estimateur lin\u00e9aire sans biais lorsque les statistiques d&rsquo;ordre sont compar\u00e9es aux m\u00e9dianes th\u00e9oriques pour des distributions sous-jacentes quelconques.<\/li>\n<li><strong>Type 9 :<\/strong> Fond\u00e9 sur <span class=\"arabpsy-math-inline\" data-latex=\"m = -p\/4 - 3\/8\">$m = -p\/4 &#8211; 3\/8$<\/span>, con\u00e7u pour fournir une approximation sans biais des esp\u00e9rances des statistiques d&rsquo;ordre sous l&rsquo;hypoth\u00e8se d&rsquo;une loi parente strictement normale.<\/li>\n<\/ul>\n<h3>2.3 Sensibilit\u00e9 aux petits effectifs d&rsquo;\u00e9chantillons<\/h3>\n<p>Lorsque la taille d&rsquo;\u00e9chantillon <span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span> tend vers l&rsquo;infini, l&rsquo;\u00e9cart m\u00e9trique entre ces neuf algorithmes d\u00e9cro\u00eet selon un ordre de convergence en <span class=\"arabpsy-math-inline\" data-latex=\"O(1\/n)\">$O(1\/n)$<\/span> et devient strictement n\u00e9gligeable pour les applications pratiques. En revanche, au sein de sous-groupes restreints ($n < 30$, situation r\u00e9currente lors de stratifications exp\u00e9rimentales pouss\u00e9es en biologie ou en ergonomie cognitive), le choix du param\u00e8tre <code>type<\/code> exerce une influence d\u00e9terminante sur la valeur num\u00e9rique produite.<\/p>\n<p>Consid\u00e9rons un \u00e9chantillon r\u00e9duit compos\u00e9 de cinq observations ordonn\u00e9es : <span class=\"arabpsy-math-inline\" data-latex=\"{10, 12, 15, 18, 25}\">${10, 12, 15, 18, 25}$<\/span>. L&rsquo;\u00e9valuation du premier quartile (<span class=\"arabpsy-math-inline\" data-latex=\"p = 0.25\">$p = 0.25$<\/span>) selon le Type 7 (d\u00e9faut R) calculera l&rsquo;indice <span class=\"arabpsy-math-inline\" data-latex=\"j = 1 + (5 - 1) \\times 0.25 = 2.0\">$j = 1 + (5 &#8211; 1) \\times 0.25 = 2.0$<\/span>, assignant exactement la valeur <span class=\"arabpsy-math-inline\" data-latex=\"x_{(2)} = 12\">$x_{(2)} = 12$<\/span>. \u00c0 l&rsquo;inverse, l&rsquo;application du Type 6 (standard SPSS) calcule l&rsquo;indice continu <span class=\"arabpsy-math-inline\" data-latex=\"p(n + 1) = 0.25 \\times 6 = 1.5\">$p(n + 1) = 0.25 \\times 6 = 1.5$<\/span>, ce qui induit une interpolation stricte \u00e0 mi-chemin entre <span class=\"arabpsy-math-inline\" data-latex=\"x_{(1)}\">$x_{(1)}$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"x_{(2)}\">$x_{(2)}$<\/span>, aboutissant \u00e0 la valeur 11. Cette divergence de pr\u00e8s de 10 % relative souligne la pr\u00e9carit\u00e9 m\u00e9thodologique consistant \u00e0 n\u00e9gliger la param\u00e9trisation interne de la fonction statistique.<\/p>\n<p>Dans une perspective de rigueur m\u00e9thodologique quantitative, il est vivement conseill\u00e9 d&rsquo;expliciter le choix algorithmique dans le protocole de recherche. Pour les distributions inconnues ou mod\u00e9r\u00e9ment asym\u00e9triques issues d&rsquo;effectifs limit\u00e9s, l&rsquo;adoption syst\u00e9matique du <code>type = 8<\/code> constitue la recommandation dominante de la litt\u00e9rature statistique, en raison de son absence quasi totale de biais distributionnel et de son invariance structurelle.<\/p>\n<h2>3. Pr\u00e9paration de l&rsquo;environnement de travail et structuration des donn\u00e9es<\/h2>\n<h3>3.1 Configuration des biblioth\u00e8ques logicielles requises<\/h3>\n<p>L&rsquo;impl\u00e9mentation op\u00e9rationnelle des calculs quantiles au sein de l&rsquo;environnement R n\u00e9cessite le d\u00e9ploiement d&rsquo;un \u00e9cosyst\u00e8me logiciel robuste. Si le moteur de base de R dispose des primitives requises, la manipulation expressive et la transformation matricielle de jeux de donn\u00e9es stratifi\u00e9s b\u00e9n\u00e9ficient grandement de la suite <a rel=\"noopener noreferrer\" href=\"https:\/\/www.tidyverse.org\/\">tidyverse<\/a>, et plus particuli\u00e8rement des paquets <code>dplyr<\/code>, <code>tidyr<\/code>, <code>tibble<\/code> et <code>ggplot2<\/code>. Pour les structures de donn\u00e9es massives exc\u00e9dant les dizaines de millions de lignes, la biblioth\u00e8que <code>data.table<\/code> s&rsquo;av\u00e8re indispensable.<\/p>\n<p>L&rsquo;initialisation d&rsquo;un espace de travail rigoureux commence par l&rsquo;installation et le chargement v\u00e9rifi\u00e9 des biblioth\u00e8ques, accompagn\u00e9s d&rsquo;une fixation explicite des graines pseudomagn\u00e9tiques afin d&rsquo;assurer la reproductibilit\u00e9 int\u00e9grale des calculs :<\/p>\n<p><code>install.packages(c(\"tidyverse\", \"data.table\", \"microbenchmark\", \"boot\"))<\/code><br \/>\n<code>library(dplyr)<\/code><br \/>\n<code>library(tidyr)<\/code><br \/>\n<code>library(ggplot2)<\/code><br \/>\n<code>library(data.table)<\/code><br \/>\n<code>set.seed(42)<\/code><\/p>\n<p>La gestion stricte des versions logicielles et l&rsquo;isolation des d\u00e9pendances constituent un pr\u00e9requis indispensable dans les infrastructures d&rsquo;analyse contemporaines. Le recours \u00e0 des gestionnaires d&rsquo;environnements virtuels tels que <code>renv<\/code> garantit que les comportements internes des algorithmes d&rsquo;interpolation ou de groupement ne subiront aucune alt\u00e9ration lors de la migration du script vers des environnements de calcul haute performance ou des serveurs d&rsquo;int\u00e9gration continue.<\/p>\n<h3>3.2 Cr\u00e9ation et inspection d&rsquo;un jeu de donn\u00e9es factoriel repr\u00e9sentatif<\/h3>\n<p>Afin d&rsquo;ancrer les d\u00e9monstrations dans un r\u00e9alisme exp\u00e9rimental probant, g\u00e9n\u00e9rons un jeu de donn\u00e9es factoriel \u00e9quilibr\u00e9 simulant une investigation neuropsychologique multicentrique. L&rsquo;exp\u00e9rience compare les performances cognitives mesur\u00e9es par une \u00e9chelle de latence attentionnelle continue across plusieurs strates exp\u00e9rimentales : trois groupes de traitement clinique (Contr\u00f4le, Th\u00e9rapie Standard, Mol\u00e9cule Exp\u00e9rimentale) crois\u00e9s avec deux tranches d&rsquo;\u00e2ge (Jeunes Adultes, Seniors).<\/p>\n<p>Le script suivant structure ce tableau de donn\u00e9es en int\u00e9grant d\u00e9lib\u00e9r\u00e9ment une asym\u00e9trie distributionnelle prononc\u00e9e au sein de certains sous-groupes, simulant ainsi les distributions log-normales et gamma caract\u00e9ristiques des mesures chronom\u00e9triques :<\/p>\n<p><code>n_par_groupe &lt;- 200<\/code><br \/>\n<code>facteur_groupe &lt;- rep(c(\"Controle\", \"Therapie\", \"Molecule\"), each = n_par_groupe * 2)<\/code><br \/>\n<code>facteur_age &lt;- rep(rep(c(\"Jeune\", \"Senior\"), each = n_par_groupe), 3)<\/code><br \/>\n<code>valeurs_controle &lt;- c(rnorm(n_par_groupe, mean = 400, sd = 40), rgamma(n_par_groupe, shape = 9, scale = 50))<\/code><br \/>\n<code>valeurs_therapie &lt;- c(rnorm(n_par_groupe, mean = 370, sd = 35), rgamma(n_par_groupe, shape = 8, scale = 48))<\/code><br \/>\n<code>valeurs_molecule &lt;- c(rlnorm(n_par_groupe, meanlog = 5.8, sdlog = 0.25), rlnorm(n_par_groupe, meanlog = 5.9, sdlog = 0.35))<\/code><br \/>\n<code>score_latence &lt;- c(valeurs_controle, valeurs_therapie, valeurs_molecule)<\/code><br \/>\n<code>donnees_cognitives &lt;- tibble(Groupe = factor(facteur_groupe), Age = factor(facteur_age), Latence = score_latence)<\/code><\/p>\n<p>L&rsquo;inspection typologique de l&rsquo;objet s&rsquo;effectue au moyen des fonctions canoniques de diagnostic structurel : <code>glimpse(donnees_cognitives)<\/code> permet de v\u00e9rifier la dimensionnalit\u00e9 (1200 observations pour 3 variables), tandis que <code>summary(donnees_cognitives)<\/code> livre une premi\u00e8re estimation globale et transversale de la variable d\u00e9pendante. La formalisation explicite des variables ind\u00e9pendantes sous forme de facteurs stricts (<code>factor<\/code>) est indispensable pour pr\u00e9venir tout comportement anomal lors de la partition des donn\u00e9es par les fonctions d&rsquo;agr\u00e9gation group\u00e9e.<\/p>\n<h3>3.3 Audit et strat\u00e9gie de gestion des donn\u00e9es manquantes<\/h3>\n<p>Dans tout protocole empirique, l&rsquo;incompl\u00e9tude informationnelle repr\u00e9sente une menace m\u00e9thodologique directe pour l&rsquo;estimation non param\u00e9trique. Introduisons intentionnellement un sch\u00e9ma de donn\u00e9es manquantes al\u00e9atoires (MCAR &#8211; Missing Completely At Random) au sein de notre jeu de donn\u00e9es exp\u00e9rimental afin d&rsquo;examiner son impact :<\/p>\n<p><code>indices_manquants &lt;- sample(1:nrow(donnees_cognitives), size = 45)<\/code><br \/>\n<code>donnees_cognitives$Latence[indices_manquants] &lt;- NA<\/code><\/p>\n<p>L&rsquo;audit des occurrences d&rsquo;incompl\u00e9tude s&rsquo;articule via le d\u00e9compte par strate \u00e0 l&rsquo;aide de la fonction logique <code>is.na()<\/code> :<\/p>\n<p><code>donnees_cognitives %&gt;% group_by(Groupe, Age) %&gt;% summarize(N_Total = n(), N_Manquants = sum(is.na(Latence)), Taux_Perte = mean(is.na(Latence)), .groups = \"drop\")<\/code><\/p>\n<p>Sur le plan inf\u00e9rentiel, la gestion des valeurs non assign\u00e9es exige de distinguer la nature des m\u00e9canismes sous-jacents : un patron purement al\u00e9atoire (MCAR) r\u00e9duit uniquement la puissance statistique et augmente la variance d&rsquo;\u00e9chantillonnage, tandis qu&rsquo;un patron non ignorable (MNAR &#8211; Missing Not At Random), o\u00f9 la probabilit\u00e9 d&rsquo;omission est fonction de la latence elle-m\u00eame (ex. abandons des sujets aux temps de r\u00e9ponse excessivement d\u00e9grad\u00e9s), biaise m\u00e9caniquement l&rsquo;ensemble des estimations des quantiles sup\u00e9rieurs. La formulation des instructions de calcul doit obligatoirement int\u00e9grer une politique explicite de gestion des valeurs nulles sous peine de d\u00e9clencher des interruptions d&rsquo;ex\u00e9cution fatales au sein des fonctions de r\u00e9sum\u00e9.<\/p>\n<h2>4. Calcul \u00e9l\u00e9mentaire des quantiles par groupe avec dplyr<\/h2>\n<h3>4.1 Syntaxe canonique associant group_by() et summarize()<\/h3>\n<p>Le paradigme fondamental d&rsquo;analyse structur\u00e9e promu par le package <code>dplyr<\/code> repose sur le concept th\u00e9orique de d\u00e9composition-application-combinaison (<em>split-apply-combine<\/em>). L&rsquo;op\u00e9ration s&rsquo;articule par l&rsquo;application de <code>group_by()<\/code>, qui convertit virtuellement le tibble standard en une structure partitionn\u00e9e par attributs de m\u00e9tadonn\u00e9es, suivie de l&rsquo;instruction <code>summarize()<\/code> qui agr\u00e8ge chaque strate ind\u00e9pendante en un enregistrement synth\u00e9tique unique.<\/p>\n<p>Dans sa forme canonique \u00e9l\u00e9mentaire, le calcul des trois quartiles fondamentaux (<span class=\"arabpsy-math-inline\" data-latex=\"Q_1\">$Q_1$<\/span> \u00e0 25 %, M\u00e9diane \u00e0 50 %, <span class=\"arabpsy-math-inline\" data-latex=\"Q_3\">$Q_3$<\/span> \u00e0 75 %) pour la variable de latence ventil\u00e9e par groupe exp\u00e9rimental s&rsquo;impl\u00e9mente par l&rsquo;invocation unitaire de la primitive statistique <code>quantile()<\/code> :<\/p>\n<p><code>quartiles_dplyr &lt;- donnees_cognitives %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;group_by(Groupe) %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;summarize(<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;N_Valide = sum(!is.na(Latence)),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Q1 = quantile(Latence, probs = 0.25, na.rm = TRUE, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Mediane = quantile(Latence, probs = 0.50, na.rm = TRUE, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Q3 = quantile(Latence, probs = 0.75, na.rm = TRUE, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;IQR_Empirique = Q3 - Q1,<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;.groups = \"drop\"<\/code><br \/>\n<code>&nbsp;&nbsp;)<\/code><\/p>\n<p>Dans ce pipeline, l&rsquo;argument scalaire <code>probs<\/code> re\u00e7oit la valeur num\u00e9rique exacte du centile requis. L&rsquo;explicitation du param\u00e8tre <code>na.rm = TRUE<\/code> assure l&rsquo;\u00e9lagage pr\u00e9alable des valeurs manquantes au sein de chaque sous-groupe, emp\u00eachant la propagation des valeurs <code>NA<\/code> dans le r\u00e9sultat r\u00e9capitulatif final. Le tibble renvoy\u00e9 pr\u00e9sente une structure tabulaire parfaitement plane, ad\u00e9quate pour la restitution imm\u00e9diate des r\u00e9sultats descriptifs.<\/p>\n<h3>4.2 Formatage et d\u00e9nomination rigoureuse des colonnes r\u00e9sultantes<\/h3>\n<p>La p\u00e9rennit\u00e9 analytique et l&rsquo;automatisation des cha\u00eenes de traitement exigent une standardisation s\u00e9mantique stricte des m\u00e9tadonn\u00e9es de sortie. L&rsquo;utilisation d&rsquo;identifiants g\u00e9n\u00e9riques non normalis\u00e9s (tels que <code>q<\/code>, <code>val1<\/code>, <code>temp<\/code>) compromet la tra\u00e7abilit\u00e9 des scripts lors de l&rsquo;int\u00e9gration dans des pipelines de mod\u00e9lisation pr\u00e9dictive ou d&rsquo;\u00e9dition de rapports automatis\u00e9s via Quarto ou R Markdown.<\/p>\n<p>Il est pr\u00e9conis\u00e9 d&rsquo;adopter une nomenclature explicite int\u00e9grant syst\u00e9matiquement le pr\u00e9fixe de la variable d&rsquo;int\u00e9r\u00eat ainsi que l&rsquo;indice centile associ\u00e9, par exemple <code>Latence_P25<\/code>, <code>Latence_P50<\/code> et <code>Latence_P75<\/code>. L&rsquo;application de prefixes permet en outre de mobiliser ais\u00e9ment les s\u00e9lecteurs lexicaux de <code>dplyr<\/code>, tels que <code>starts_with(\"Latence_\")<\/code>, lors des \u00e9tapes ult\u00e9rieures de manipulation tabulaire :<\/p>\n<p><code>resume_normalise &lt;- donnees_cognitives %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;group_by(Groupe, Age) %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;summarize(<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Latence_P10 = quantile(Latence, probs = 0.10, na.rm = TRUE, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Latence_P50 = quantile(Latence, probs = 0.50, na.rm = TRUE, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Latence_P90 = quantile(Latence, probs = 0.90, na.rm = TRUE, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;.groups = \"drop\"<\/code><br \/>\n<code>&nbsp;&nbsp;)<\/code><\/p>\n<p>Cette rigueur lexicale assure la transparence de la structure de donn\u00e9es et \u00e9limine toute ambigu\u00eft\u00e9 sur la nature de la statistique r\u00e9sum\u00e9e lors de l&rsquo;exportation vers des formats d&rsquo;\u00e9change plats tels que les fichiers CSV ou les bases de donn\u00e9es SQL relationnelles.<\/p>\n<h3>4.3 Gestion de la structure de groupement post-agr\u00e9gation<\/h3>\n<p>Un comportement critique au sein des versions contemporaines de <code>dplyr<\/code> concerne la conservation latente des attributs de groupement apr\u00e8s l&rsquo;ex\u00e9cution de <code>summarize()<\/code>. Historiquement, l&rsquo;op\u00e9ration \u00e9liminait syst\u00e9matiquement le dernier niveau d&rsquo;imbrication factorielle tout en conservant les strates sup\u00e9rieures, induisant des effets de bord silencieux et pr\u00e9judiciables lors de calculs subs\u00e9quents.<\/p>\n<p>Afin de conjurer tout comportement ind\u00e9termin\u00e9, il convient de ma\u00eetriser l&rsquo;argument d&rsquo;arbitrage <code>.groups<\/code> au sein de l&rsquo;instruction <code>summarize()<\/code>. Trois comportements cardinaux sont disponibles :<\/p>\n<ul>\n<li><code>.groups = \"drop\"<\/code> : Supprime int\u00e9gralement et imm\u00e9diatement la structure de partitionnement, restituant un tibble atomique non group\u00e9 standard. C&rsquo;est l&rsquo;approche recommand\u00e9e dans la majorit\u00e9 des architectures logicielles pour garantir l&rsquo;ind\u00e9pendance des blocs d&rsquo;instructions.<\/li>\n<li><code>.groups = \"keep\"<\/code> : Pr\u00e9serve scrupuleusement la totalit\u00e9 des strates factorielles initiales. Chaque op\u00e9ration ult\u00e9rieure op\u00e9rera donc syst\u00e9matiquement au niveau de finesse du partitionnement d&rsquo;origine.<\/li>\n<li><code>.groups = \"drop_last\"<\/code> : Reproduit le comportement historique de <code>dplyr<\/code> en \u00e9mondant le niveau de hi\u00e9rarchie le plus profond tout en maintenant les strates parentes.<\/li>\n<\/ul>\n<p>\u00c0 d\u00e9faut d&rsquo;assignation explicite via <code>.groups<\/code>, l&rsquo;application r\u00e9currente et pr\u00e9ventive de la fonction <code>ungroup()<\/code> imm\u00e9diatement \u00e0 la suite du bloc d&rsquo;agr\u00e9gation repr\u00e9sente une bonne pratique de programmation d\u00e9fensive assurant la stabilit\u00e9 pr\u00e9dictible des flux de calculs aval.<\/p>\n<h2>5. Calcul vectoriel et dynamique de multiples quantiles par groupe<\/h2>\n<h3>5.1 G\u00e9n\u00e9ration de distributions quantiles exhaustives avec reframe()<\/h3>\n<p>L&rsquo;une des limitations historiques majeures de la fonction <code>summarize()<\/code> r\u00e9sidait dans l&rsquo;obligation stricte d&rsquo;associer \u00e0 chaque groupe une sortie unitaire scalaire (un seul scalaire par cellule de r\u00e9sum\u00e9). L&rsquo;\u00e9valuation simultan\u00e9e d&rsquo;un vecteur arbitraire de centiles, par exemple les d\u00e9ciles complets <span class=\"arabpsy-math-inline\" data-latex=\"p in {0.0, 0.1, 0.2, dots, 1.0}\">$p in {0.0, 0.1, 0.2, dots, 1.0}$<\/span>, engendrait des avertissements d&rsquo;incompatibilit\u00e9 dimensionnelle ou n\u00e9cessitait l&rsquo;encapsulation complexe au sein de list-columns.<\/p>\n<p>Introduite \u00e0 partir de <code>dplyr<\/code> 1.1.0, la fonction <code>reframe()<\/code> r\u00e9sout d\u00e9finitivement ce paradigme architectural. Con\u00e7ue explicitement pour les op\u00e9rations o\u00f9 une fonction d&rsquo;agr\u00e9gation renvoie un nombre arbitraire de lignes par strate factorielle, elle assure la duplication dynamique des cl\u00e9s de groupement pour chaque \u00e9l\u00e9ment du vecteur r\u00e9sultant :<\/p>\n<p><code>vecteur_probs &lt;- seq(0, 1, by = 0.1)<\/code><br \/>\n<code>deciles_long &lt;- donnees_cognitives %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;group_by(Groupe) %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;reframe(<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Probabilite = vecteur_probs,<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Quantile_Estime = quantile(Latence, probs = vecteur_probs, na.rm = TRUE, type = 8)<\/code><br \/>\n<code>&nbsp;&nbsp;)<\/code><\/p>\n<p>Cette formulation \u00e9l\u00e9gante g\u00e9n\u00e8re un tableau rigoureusement conforme aux principes des <em>tidy data<\/em> en format long, o\u00f9 chaque observation individuelle capture le quantile calcul\u00e9 pour une probabilit\u00e9 donn\u00e9e au sein de sa strate d&rsquo;appartenance. L&rsquo;int\u00e9grit\u00e9 relationnelle entre les indices de probabilit\u00e9 et les grandeurs estim\u00e9es est ainsi pr\u00e9serv\u00e9e nativement sans n\u00e9cessiter d&rsquo;artifices de programmation it\u00e9rative.<\/p>\n<h3>5.2 Extraction conjointe des probabilit\u00e9s et des valeurs quantiles<\/h3>\n<p>Dans les sc\u00e9narios d&rsquo;analyse avanc\u00e9e, il est fr\u00e9quent que les probabilit\u00e9s ne soient pas d\u00e9finies sous forme d&rsquo;une s\u00e9quence r\u00e9guli\u00e8re pr\u00e9d\u00e9termin\u00e9e, mais \u00e9mergent dynamiquement au cours du traitement. L&#8217;emploi de la syntaxe lambda anonyme moderne au sein de R (not\u00e9e <code>(x)<\/code> depuis la version 4.1.0) combin\u00e9e \u00e0 la modularit\u00e9 de <code>reframe()<\/code> permet d&rsquo;extraire simultan\u00e9ment les noms formels g\u00e9n\u00e9r\u00e9s par <code>quantile()<\/code> et les valeurs quantitatives associ\u00e9es :<\/p>\n<p><code>centiles_cibles &lt;- c(0.025, 0.05, 0.25, 0.50, 0.75, 0.95, 0.975)<\/code><br \/>\n<code>distribution_fine &lt;- donnees_cognitives %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;group_by(Groupe, Age) %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;reframe(<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;tibble(<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Centile_Nom = paste0(\"P_\", centiles_cibles * 100),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Proba = centiles_cibles,<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Valeur = quantile(Latence, probs = centiles_cibles, na.rm = TRUE, type = 8)<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;)<\/code><br \/>\n<code>&nbsp;&nbsp;)<\/code><\/p>\n<p>Cette m\u00e9thodologie d&rsquo;extraction conjointe \u00e9limine tout risque de d\u00e9synchronisation d&rsquo;indexation entre les valeurs num\u00e9riques calcul\u00e9es et leurs \u00e9tiquettes ordinales respectives. La table ainsi g\u00e9n\u00e9r\u00e9e est directement exploitable pour la construction de mod\u00e8les de fonctions de r\u00e9partition empiriques cumul\u00e9es ou pour alimenter des modules d&rsquo;ajustement non lin\u00e9aire.<\/p>\n<h3>5.3 Pivottement et mise en forme du tableau de donn\u00e9es<\/h3>\n<p>Bien que le format long obtenu via <code>reframe()<\/code> soit optimal pour les calculs vectoriels et la visualisation sous <code>ggplot2<\/code>, la publication scientifique et la restitution de synth\u00e8ses tabulaires exigent couramment une disposition matricielle en format large (<em>wide format<\/em>), o\u00f9 chaque quantile identifi\u00e9 occupe une colonne distincte.<\/p>\n<p>La transition structurale s&rsquo;op\u00e8re au moyen de la primitive <code>pivot_wider()<\/code> issue du paquet <code>tidyr<\/code>. Elle r\u00e9organise l&rsquo;espace tabulaire en convertissant les identifiants textuels des centiles en noms de colonnes et en redistribuant les valeurs correspondantes :<\/p>\n<p><code>matrice_quantiles_large &lt;- distribution_fine %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;select(-Proba) %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;pivot_wider(<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;names_from = Centile_Nom,<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;values_from = Valeur<\/code><br \/>\n<code>&nbsp;&nbsp;)<\/code><\/p>\n<p>Inversement, le retour vers une structure \u00e9tir\u00e9e en format long pour des besoins d&rsquo;int\u00e9gration logicielle s&rsquo;accomplit par l&rsquo;op\u00e9ration sym\u00e9trique <code>pivot_longer()<\/code>. Cette bidirectionnalit\u00e9 structurelle conf\u00e8re \u00e0 l&rsquo;analyste une flexibilit\u00e9 totale pour adapter la g\u00e9om\u00e9trie des jeux de donn\u00e9es aux contraintes sp\u00e9cifiques de chaque composant de sa cha\u00eene de traitement statistique.<\/p>\n<h2>6. M\u00e9thodes alternatives d&rsquo;estimation group\u00e9e en R de base (Base R)<\/h2>\n<h3>6.1 Mise en \u0153uvre de la fonction aggregate()<\/h3>\n<p>En d\u00e9pit de l&rsquo;h\u00e9g\u00e9monie contemporaine de l&rsquo;\u00e9cosyst\u00e8me tidyverse, la ma\u00eetrise des fonctionnalit\u00e9s int\u00e9gr\u00e9es nativement dans R de base (<em>Base R<\/em>) demeure imp\u00e9rative pour le d\u00e9veloppement de paquets autonomes, le d\u00e9ploiement sur des syst\u00e8mes contraints ou la maintenance de syst\u00e8mes informatiques critiques ne tol\u00e9rant aucune d\u00e9pendance logicielle externe.<\/p>\n<p>La primitive statistique <code>aggregate()<\/code> constitue l&rsquo;outil conventionnel pour partitionner un vecteur continu en fonction d&rsquo;un ou plusieurs facteurs de classification. Elle supporte une formulation par formule symbolique (<code>y ~ x<\/code>) intuitive :<\/p>\n<p><code>resultat_base_agg &lt;- aggregate(<\/code><br \/>\n<code>&nbsp;&nbsp;Latence ~ Groupe + Age,<\/code><br \/>\n<code>&nbsp;&nbsp;data = donnees_cognitives,<\/code><br \/>\n<code>&nbsp;&nbsp;FUN = function(x) quantile(x, probs = c(0.25, 0.50, 0.75), na.rm = TRUE, type = 8)<\/code><br \/>\n<code>)<\/code><\/p>\n<p>Toutefois, une particularit\u00e9 structurelle complexe d&rsquo;<code>aggregate()<\/code> r\u00e9side dans sa mani\u00e8re d&rsquo;encapsuler les sorties multivari\u00e9es. La colonne <code>Latence<\/code> g\u00e9n\u00e9r\u00e9e dans l&rsquo;objet r\u00e9sultant n&rsquo;est pas un ensemble de vecteurs atomiques s\u00e9par\u00e9s, mais une v\u00e9ritable matrice bi-dimensionnelle imbriqu\u00e9e dans le data frame parent. L&rsquo;acc\u00e8s aux colonnes n\u00e9cessite d\u00e8s lors une extraction matricielle ou un aplatissement explicite :<\/p>\n<p><code>resultat_base_plat &lt;- do.call(<\/code><br \/>\n<code>&nbsp;&nbsp;data.frame,<\/code><br \/>\n<code>&nbsp;&nbsp;list(resultat_base_agg[, c(\"Groupe\", \"Age\")], Latence_Quartiles = resultat_base_agg$Latence)<\/code><br \/>\n<code>)<\/code><\/p>\n<p>Cette complexit\u00e9 structurelle impose une vigilance accrue lors de la manipulation des objets issus d&rsquo;<code>aggregate()<\/code> pour \u00e9viter les erreurs d&rsquo;incompatibilit\u00e9 de type lors des post-traitements.<\/p>\n<h3>6.2 Application des fonctions de la famille apply : tapply() et by()<\/h3>\n<p>La famille fonctionnelle <code>apply<\/code> propose des alternatives matricielles directes \u00e0 travers les fonctions <code>tapply()<\/code> et <code>by()<\/code>. La fonction <code>tapply()<\/code> applique une fonction cible sur un vecteur atomique partitionn\u00e9 par une liste de facteurs cat\u00e9goriels :<\/p>\n<p><code>liste_quantiles_tapply &lt;- tapply(<\/code><br \/>\n<code>&nbsp;&nbsp;donnees_cognitives$Latence,<\/code><br \/>\n<code>&nbsp;&nbsp;INDEX = list(donnees_cognitives<span class=\"arabpsy-math-inline\" data-latex=\"Groupe, donnees_cognitives\">$Groupe, donnees_cognitives$<\/span>Age),<\/code><br \/>\n<code>&nbsp;&nbsp;FUN = quantile,<\/code><br \/>\n<code>&nbsp;&nbsp;probs = c(0.25, 0.50, 0.75),<\/code><br \/>\n<code>&nbsp;&nbsp;na.rm = TRUE,<\/code><br \/>\n<code>&nbsp;&nbsp;type = 8,<\/code><br \/>\n<code>&nbsp;&nbsp;simplify = FALSE<\/code><br \/>\n<code>)<\/code><\/p>\n<p>La sortie prend la forme d&rsquo;un tableau \u00e0 deux dimensions de listes contenant les estimations ponctuelles. Si l&rsquo;argument <code>simplify = TRUE<\/code> est retenu, <code>tapply<\/code> tente de coaguler le r\u00e9sultat en un tableau multi-dimensionnel complexe (<em>array<\/em> \u00e0 3 dimensions), dont l&rsquo;extraction ult\u00e9rieure s&rsquo;av\u00e8re fr\u00e9quemment verbeuse.<\/p>\n<p>Pour une approche orient\u00e9e sous-tableaux, la fonction <code>by()<\/code> op\u00e8re une partition de l&rsquo;int\u00e9gralit\u00e9 du data frame parent en sous-ensembles ind\u00e9pendants :<\/p>\n<p><code>objets_by &lt;- by(<\/code><br \/>\n<code>&nbsp;&nbsp;donnees_cognitives,<\/code><br \/>\n<code>&nbsp;&nbsp;INDICES = list(donnees_cognitives<span class=\"arabpsy-math-inline\" data-latex=\"Groupe, donnees_cognitives\">$Groupe, donnees_cognitives$<\/span>Age),<\/code><br \/>\n<code>&nbsp;&nbsp;FUN = function(sous_echantillon) {<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;quantile(sous_echantillon$Latence, probs = c(0.25, 0.50, 0.75), na.rm = TRUE, type = 8)<\/code><br \/>\n<code>&nbsp;&nbsp;}<\/code><br \/>\n<code>)<\/code><\/p>\n<p>La conversion de ces structures composites en tables rectangulaires pr\u00eates pour l&rsquo;analyse requiert des appels cons\u00e9cutifs \u00e0 <code>lapply()<\/code>, <code>do.call(rbind, ...)<\/code> et des op\u00e9rations manuelles de r\u00e9assignation des noms de lignes, soulignant le co\u00fbt programmatique induit par l&rsquo;absence d&rsquo;abstraction relationnelle native dans ces primitives anciennes.<\/p>\n<h3>6.3 \u00c9valuation comparative des approches : syntaxe, lisibilit\u00e9 et d\u00e9pendances<\/h3>\n<p>Le choix entre les paradigmes de programmation ne rel\u00e8ve pas d&rsquo;une simple pr\u00e9f\u00e9rence esth\u00e9tique, mais d&rsquo;un arbitrage technique d\u00e9lib\u00e9r\u00e9 entre plusieurs imp\u00e9ratifs d&rsquo;ing\u00e9nierie logicielle :<\/p>\n<ul>\n<li><strong>Autonomie et p\u00e9rennit\u00e9 (Base R) :<\/strong> L&rsquo;utilisation exclusive de Base R garantit que le code source demeurera fonctionnel pendant plusieurs d\u00e9cennies sans n\u00e9cessiter la mise \u00e0 jour de biblioth\u00e8ques tierces. Cette approche est recommand\u00e9e pour les paquets fondamentaux soumis au CRAN, o\u00f9 l&rsquo;\u00e9lagage des d\u00e9pendances r\u00e9duit les risques de r\u00e9gression.<\/li>\n<li><strong>Expressivit\u00e9 et maintenabilit\u00e9 (tidyverse \/ dplyr) :<\/strong> La syntaxe articul\u00e9e autour du pipe (<code>%&gt;%<\/code> ou l&rsquo;op\u00e9rateur natif <code>|&gt;<\/code> introduit en R 4.0.0) s&rsquo;aligne fid\u00e8lement sur la structure cognitive du raisonnement analytique. La lecture du code est lin\u00e9aire, r\u00e9duisant consid\u00e9rablement la dette technique et le taux d&rsquo;erreurs humaines au sein des \u00e9quipes de recherche collaboratives.<\/li>\n<li><strong>Facilit\u00e9 de restructuration tabulaire :<\/strong> Alors que Base R impose des op\u00e9rations d&rsquo;aplatissement matriciel complexes pour les r\u00e9sultats multivari\u00e9s, l&rsquo;association de <code>reframe()<\/code> et de <code>pivot_wider()<\/code> g\u00e8re nativement la cardinalit\u00e9 des dimensions sans perte d&rsquo;information contextuelle.<\/li>\n<\/ul>\n<h2>7. Calcul haute performance pour donn\u00e9es volumineuses avec data.table<\/h2>\n<h3>7.1 Syntaxe matricielle [i, j, by] appliqu\u00e9e \u00e0 l&rsquo;estimation quantile<\/h3>\n<p>Lorsque la volum\u00e9trie des donn\u00e9es s&rsquo;accro\u00eet pour atteindre des millions d&rsquo;enregistrements (tels que les logs de t\u00e9l\u00e9m\u00e9trie comportementale \u00e0 haute fr\u00e9quence ou les donn\u00e9es de s\u00e9quen\u00e7age g\u00e9nomique), les structures fonctionnelles standards subissent un ralentissement substantiel induit par les copies m\u00e9moires r\u00e9cursives. La biblioth\u00e8que <a rel=\"noopener noreferrer\" href=\"https:\/\/rdatatable.gitlab.io\/data.table\/\">data.table<\/a> offre une alternative ultra-performante fond\u00e9e sur une s\u00e9mantique d&rsquo;\u00e9valuation modifi\u00e9e articul\u00e9e autour de la syntaxe unifi\u00e9e :<\/p>\n<p><code>DT[i, j, by]<\/code><\/p>\n<p>Dans ce mod\u00e8le d&rsquo;ex\u00e9cution, l&rsquo;argument <code>i<\/code> s\u00e9lectionne les sous-ensembles de lignes (filtrage), <code>j<\/code> \u00e9value des expressions arbitraires sur les colonnes cibles, et <code>by<\/code> segmente dynamiquement le calcul selon les variables de regroupement sp\u00e9cifi\u00e9es. Convertissons notre table exp\u00e9rimentale en un objet optimis\u00e9 :<\/p>\n<p><code>dt_cognitif &lt;- as.data.table(donnees_cognitives)<\/code><br \/>\n<code>quartiles_dt &lt;- dt_cognitif[, .(<\/code><br \/>\n<code>&nbsp;&nbsp;Q1 = quantile(Latence, probs = 0.25, na.rm = TRUE, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;Mediane = quantile(Latence, probs = 0.50, na.rm = TRUE, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;Q3 = quantile(Latence, probs = 0.75, na.rm = TRUE, type = 8)<\/code><br \/>\n<code>), by = .(Groupe, Age)]<\/code><\/p>\n<p>La notation compacte <code>.()<\/code> constitue un alias syntaxique pour <code>list()<\/code>, instruisant l&rsquo;interpr\u00e9teur interne de <code>data.table<\/code> de renvoyer une structure tabulaire partitionn\u00e9e dont chaque \u00e9l\u00e9ment correspond \u00e0 une colonne dimensionn\u00e9e avec exactitude.<\/p>\n<h3>7.2 G\u00e9n\u00e9ration de multiples quantiles par r\u00e9f\u00e9rence et allocation m\u00e9moire<\/h3>\n<p>L&rsquo;estimation conjointe d&rsquo;une s\u00e9quence compl\u00e8te de centiles sous <code>data.table<\/code> tire parti de la conversion dynamique d&rsquo;un vecteur de r\u00e9sultats en liste nomm\u00e9e au sein de l&rsquo;expression <code>j<\/code>. Cette technique \u00e9vite la cr\u00e9ation de structures interm\u00e9diaires co\u00fbteuses :<\/p>\n<p><code>centiles_vect &lt;- c(0.1, 0.25, 0.5, 0.75, 0.9)<\/code><br \/>\n<code>noms_colonnes &lt;- paste0(\"Q_\", centiles_vect * 100)<\/code><br \/>\n<code>deciles_dt &lt;- dt_cognitif[, as.list(quantile(Latence, probs = centiles_vect, na.rm = TRUE, type = 8)), by = .(Groupe, Age)]<\/code><br \/>\n<code>setnames(deciles_dt, old = c(\"V1\", \"V2\", \"V3\", \"V4\", \"V5\"), new = noms_colonnes)<\/code><\/p>\n<p>L&rsquo;op\u00e9rateur <code>setnames()<\/code> modifie les m\u00e9tadonn\u00e9es de d\u00e9nomination directement par r\u00e9f\u00e9rence en m\u00e9moire RAM, sans r\u00e9pliquer l&rsquo;int\u00e9gralit\u00e9 de la table. De m\u00eame, l&rsquo;op\u00e9rateur d&rsquo;assignation par r\u00e9f\u00e9rence <code>:=<\/code> permet d&rsquo;imputer des quantiles conditionnels directement dans la structure parente (par exemple pour calculer l&rsquo;\u00e9cart entre chaque mesure individuelle et la m\u00e9diane de son groupe) avec une empreinte m\u00e9moire strictement nulle en termes de duplication d&rsquo;objets :<\/p>\n<p><code>dt_cognitif[, Mediane_Groupe := quantile(Latence, probs = 0.5, na.rm = TRUE, type = 8), by = .(Groupe, Age)]<\/code><br \/>\n<code>dt_cognitif[, Ecart_Mediane := Latence - Mediane_Groupe]<\/code><\/p>\n<h3>7.3 Benchmark de vitesse d&rsquo;ex\u00e9cution entre approches logicielles<\/h3>\n<p>Afin de quantifier empiriquement l&rsquo;efficience algorithmique des diff\u00e9rentes approches, d\u00e9ployons un protocole d&rsquo;\u00e9valuation comparative rigoureux \u00e0 l&rsquo;aide de la biblioth\u00e8que <code>microbenchmark<\/code> sur un \u00e9chantillon synth\u00e9tique volumineux compos\u00e9 de <span class=\"arabpsy-math-inline\" data-latex=\"5 \\times 10^6\">$5 \\times 10^6$<\/span> observations r\u00e9parties sur 10 strates factorielles :<\/p>\n<p><code>N_grand &lt;- 5e6<\/code><br \/>\n<code>dt_benchmark &lt;- data.table(<\/code><br \/>\n<code>&nbsp;&nbsp;Groupe = sample(paste0(\"G\", 1:10), N_grand, replace = TRUE),<\/code><br \/>\n<code>&nbsp;&nbsp;Mesure = rnorm(N_grand, mean = 500, sd = 100)<\/code><br \/>\n<code>)<\/code><br \/>\n<code>df_benchmark &lt;- as.data.frame(dt_benchmark)<\/code><br \/>\n<code>tib_benchmark &lt;- as_tibble(dt_benchmark)<\/code><\/p>\n<p>L&rsquo;\u00e9valuation comparative confronte <code>dplyr<\/code>, <code>data.table<\/code> et <code>aggregate()<\/code> sur l&rsquo;estimation de trois quartiles conditionnels :<\/p>\n<p><code>test_performance &lt;- microbenchmark(<\/code><br \/>\n<code>&nbsp;&nbsp;DataTable = dt_benchmark[, as.list(quantile(Mesure, probs = c(0.25, 0.5, 0.75), type = 8)), by = Groupe],<\/code><br \/>\n<code>&nbsp;&nbsp;Dplyr_Summarize = tib_benchmark %&gt;% group_by(Groupe) %&gt;% summarize(Q1 = quantile(Mesure, 0.25, type = 8), Med = quantile(Mesure, 0.5, type = 8), Q3 = quantile(Mesure, 0.75, type = 8), .groups = \"drop\"),<\/code><br \/>\n<code>&nbsp;&nbsp;Base_Aggregate = aggregate(Mesure ~ Groupe, data = df_benchmark, FUN = function(x) quantile(x, probs = c(0.25, 0.5, 0.75), type = 8)),<\/code><br \/>\n<code>&nbsp;&nbsp;times = 10<\/code><br \/>\n<code>)<\/code><\/p>\n<p>Les m\u00e9triques de benchmarking r\u00e9v\u00e8lent invariablement une sup\u00e9riorit\u00e9 computationnelle \u00e9crasante de <code>data.table<\/code>, affichant un gain de v\u00e9locit\u00e9 moyen d&rsquo;un facteur 5 \u00e0 15 par rapport \u00e0 <code>dplyr<\/code>, et d&rsquo;un facteur 30 \u00e0 50 par rapport \u00e0 <code>aggregate()<\/code>. Cette disparit\u00e9 s&rsquo;explique par l&rsquo;optimisation interne des algorithmes de hachage et de partitionnement de <code>data.table<\/code>, enti\u00e8rement compil\u00e9s en code C bas niveau et parall\u00e9lis\u00e9s via OpenMP, minimisant les allocations sur le ramasse-miettes (garbage collector) de R.<\/p>\n<h2>8. Traitement des valeurs manquantes et particularit\u00e9s distributionnelles<\/h2>\n<h3>8.1 Configuration du param\u00e8tre na.rm dans les calculs group\u00e9s<\/h3>\n<p>L&rsquo;intransigeance de R face aux valeurs ind\u00e9termin\u00e9es constitue une garantie d&rsquo;int\u00e9grit\u00e9 num\u00e9rique, mais elle repr\u00e9sente une source d&rsquo;erreurs fr\u00e9quentes. Par d\u00e9faut, la primitive <code>quantile()<\/code> adopte le param\u00e9trage conservateur <code>na.rm = FALSE<\/code>. Par cons\u00e9quent, la pr\u00e9sence d&rsquo;une unique entr\u00e9e <code>NA<\/code> au sein d&rsquo;une strate de dix mille observations entra\u00eene irr\u00e9m\u00e9diablement l&rsquo;\u00e9valuation du quantile \u00e0 <code>NA<\/code> pour l&rsquo;ensemble du groupe concern\u00e9.<\/p>\n<p>Dans un contexte stratifi\u00e9, il est imp\u00e9ratif d&rsquo;\u00e9valuer la repr\u00e9sentativit\u00e9 effective r\u00e9siduelle apr\u00e8s exclusion. La transmission syst\u00e9matique de <code>na.rm = TRUE<\/code> doit s&rsquo;accompagner de la tra\u00e7abilit\u00e9 de la taille d&rsquo;\u00e9chantillon valide :<\/p>\n<p><code>verification_effectifs &lt;- donnees_cognitives %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;group_by(Groupe, Age) %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;summarize(<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;N_Total = n(),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;N_Manquants = sum(is.na(Latence)),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;N_Effectif = sum(!is.na(Latence)),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Mediane = if(N_Effectif &gt;= 5) quantile(Latence, probs = 0.5, na.rm = TRUE, type = 8) else NA_real_,<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;.groups = \"drop\"<\/code><br \/>\n<code>&nbsp;&nbsp;)<\/code><\/p>\n<p>Cette clause conditionnelle pr\u00e9munit l&rsquo;analyste contre l&rsquo;estimation de centiles sur des effectifs r\u00e9siduels d\u00e9risoires, qui violeraient les postulats de repr\u00e9sentativit\u00e9 statistique minimale.<\/p>\n<h3>8.2 Gestion des groupes sans variance ou aux effectifs insuffisants<\/h3>\n<p>Des anomalies distributionnelles particuli\u00e8res surviennent lorsque certains sous-groupes pr\u00e9sentent une variance strictement nulle (observations identiques, fr\u00e9quentes lors de r\u00e9ponses satur\u00e9es \u00e0 des \u00e9chelles de Likert discr\u00e8tes) ou lorsque la strate ne comprend qu&rsquo;une seule observation isol\u00e9e (<span class=\"arabpsy-math-inline\" data-latex=\"n = 1\">$n = 1$<\/span>).<\/p>\n<p>Dans le cas d&rsquo;une variance nulle o\u00f9 toutes les valeurs sont constantes et \u00e9gales \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"c\">$c$<\/span>, les neuf algorithmes de <code>quantile()<\/code> convergent rigoureusement vers l&rsquo;estimation <span class=\"arabpsy-math-inline\" data-latex=\"\\hat{Q}(p) = c\">$\\hat{Q}(p) = c$<\/span> pour tout <span class=\"arabpsy-math-inline\" data-latex=\"p in [0, 1]\">$p in [0, 1]$<\/span>. L&rsquo;\u00e9cart interquartile r\u00e9sultant v\u00e9rifie alors <span class=\"arabpsy-math-inline\" data-latex=\"IQR = Q_3 - Q_1 = 0\">$IQR = Q_3 &#8211; Q_1 = 0$<\/span>, ce qui engendre des instabilit\u00e9s num\u00e9riques majeures si cette m\u00e9trique est ult\u00e9rieurement employ\u00e9e comme d\u00e9nominateur de normalisation ou d&rsquo;ajustement d&rsquo;\u00e9chelle.<\/p>\n<p>Face au sc\u00e9nario d&rsquo;un groupe unitaire (<span class=\"arabpsy-math-inline\" data-latex=\"n = 1\">$n = 1$<\/span>), l&rsquo;interpolation continue devient impossible, tous les centiles s&rsquo;effondrant sur la valeur unique observ\u00e9e. Pour s\u00e9curiser un pipeline d&rsquo;analyse industrielle, l&#8217;emploi de fonctions d&rsquo;interception conditionnelles est formellement requis :<\/p>\n<p><code>quantile_securise &lt;- function(vecteur, p, n_min = 3) {<\/code><br \/>\n<code>&nbsp;&nbsp;v_valide &lt;- vecteur[!is.na(vecteur)]<\/code><br \/>\n<code>&nbsp;&nbsp;if (length(v_valide) &lt; n_min) {<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;return(rep(NA_real_, length(p)))<\/code><br \/>\n<code>&nbsp;&nbsp;}<\/code><br \/>\n<code>&nbsp;&nbsp;return(quantile(v_valide, probs = p, type = 8))<\/code><br \/>\n<code>}<\/code><\/p>\n<p>L&rsquo;int\u00e9gration de cette fonction encapsul\u00e9e au sein des pipelines <code>dplyr<\/code> ou <code>data.table<\/code> garantit une tol\u00e9rance totale aux pannes face aux sous-\u00e9chantillons pathologiques.<\/p>\n<h3>8.3 Diagnostic des asym\u00e9tries s\u00e9v\u00e8res et troncatures de distribution<\/h3>\n<p>Dans de multiples champs appliqu\u00e9s, les instruments de mesure imposent des bornes physiques infranchissables, g\u00e9n\u00e9rant des effets de plancher (latences physiologiques minimales incompressibles) ou des effets de plafond (scores maximaux limit\u00e9s sur une \u00e9chelle psychom\u00e9trique). Ces contraintes induisent des distributions tronqu\u00e9es caract\u00e9ris\u00e9es par une concentration de masse probabiliste sur une borne extr\u00eame.<\/p>\n<p>Ces troncatures s\u00e9v\u00e8res se traduisent empiriquement par la co\u00efncidence de plusieurs quantiles distincts. Par exemple, si plus de 25 % des sujets d&rsquo;un groupe clinique atteignent le score plancher de 0, le premier quartile <span class=\"arabpsy-math-inline\" data-latex=\"Q_1\">$Q_1$<\/span> et la valeur minimale <span class=\"arabpsy-math-inline\" data-latex=\"x_{(1)}\">$x_{(1)}$<\/span> seront strictement confondus : <span class=\"arabpsy-math-inline\" data-latex=\"Q_1 = x_{(1)} = 0\">$Q_1 = x_{(1)} = 0$<\/span>. Lorsque le ph\u00e9nom\u00e8ne s&rsquo;accentue, la m\u00e9diane peut \u00e9galement co\u00efncider avec le premier quartile (<span class=\"arabpsy-math-inline\" data-latex=\"Q_1 = Q_2\">$Q_1 = Q_2$<\/span>).<\/p>\n<p>L&rsquo;analyse de ces configurations pathologiques n\u00e9cessite le calcul diagnostique pr\u00e9alable de la proportion d&rsquo;observations localis\u00e9es aux fronti\u00e8res du support de la variable, ainsi que la comparaison syst\u00e9matique des quantiles interm\u00e9diaires avec les estimations param\u00e9triques \u00e9quivalentes (mod\u00e8les Tobit tronqu\u00e9s). Ignorer ces artefacts en appliquant aveugl\u00e9ment des calculs de dispersion lin\u00e9aire conduirait \u00e0 sous-estimer massivement l&rsquo;\u00e9talement r\u00e9el de la population sous-jacente.<\/p>\n<h2>9. Visualisation avanc\u00e9e des quantiles par groupe avec ggplot2<\/h2>\n<h3>9.1 Repr\u00e9sentation par bo\u00eetes \u00e0 moustaches et diagrammes de violon<\/h3>\n<p>La transcription visuelle des quantiles conditionnels constitue le prolongement analytique naturel de leur estimation tabulaire. La biblioth\u00e8que <a rel=\"noopener noreferrer\" href=\"https:\/\/ggplot2.tidyverse.org\/\">ggplot2<\/a> int\u00e8gre le concept de bo\u00eete \u00e0 moustaches (<em>boxplot<\/em>) formul\u00e9 originellement par John Tukey. Les d\u00e9limitations horizontales de la bo\u00eete centrale repr\u00e9sentent fid\u00e8lement le premier quartile (<span class=\"arabpsy-math-inline\" data-latex=\"Q_1\">$Q_1$<\/span>), la m\u00e9diane (<span class=\"arabpsy-math-inline\" data-latex=\"Q_2\">$Q_2$<\/span>) et le troisi\u00e8me quartile (<span class=\"arabpsy-math-inline\" data-latex=\"Q_3\">$Q_3$<\/span>).<\/p>\n<p>Toutefois, la bo\u00eete \u00e0 moustaches conventionnelle omet de retranscrire la densit\u00e9 probabiliste continue locale. L&rsquo;hybridation avec un diagramme de violon (<em>violin plot<\/em>) superposant l&rsquo;estimation de la densit\u00e9 par noyau avec des rep\u00e8res quantiles internes offre une expressivit\u00e9 sup\u00e9rieure :<\/p>\n<p><code>graphique_violon &lt;- ggplot(donnees_cognitives, aes(x = Groupe, y = Latence, fill = Age)) +<\/code><br \/>\n<code>&nbsp;&nbsp;geom_violin(trim = FALSE, alpha = 0.4, position = position_dodge(0.8), draw_quantiles = c(0.25, 0.5, 0.75)) +<\/code><br \/>\n<code>&nbsp;&nbsp;geom_boxplot(width = 0.15, position = position_dodge(0.8), outlier.shape = 21, outlier.alpha = 0.5, fill = \"white\") +<\/code><br \/>\n<code>&nbsp;&nbsp;scale_fill_brewer(palette = \"Set2\") +<\/code><br \/>\n<code>&nbsp;&nbsp;labs(title = \"Morphologie des latences cognitives par strate exp\u00e9rimentale\", subtitle = \"Superposition de l'estimation de densit\u00e9 et des quartiles empiriques\", x = \"Condition exp\u00e9rimentale\", y = \"Temps de latence (ms)\") +<\/code><br \/>\n<code>&nbsp;&nbsp;theme_minimal()<\/code><\/p>\n<p>L&rsquo;argument <code>draw_quantiles = c(0.25, 0.5, 0.75)<\/code> ins\u00e8re automatiquement des segments horizontaux discrets au sein de chaque profil de densit\u00e9, permettant d&rsquo;identifier imm\u00e9diatement les distorsions d&rsquo;asym\u00e9trie locale et la divergence des m\u00e9dianes entre les groupes.<\/p>\n<h3>9.2 Trac\u00e9 de fonctions de r\u00e9partition empiriques cumul\u00e9es (ECDF) par groupe<\/h3>\n<p>Bien que les diagrammes de dispersion condensent l&rsquo;information autour des quartiles fondamentaux, ils \u00e9chouent \u00e0 restituer l&rsquo;int\u00e9gralit\u00e9 du profil continu de la distribution. Le trac\u00e9 des <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Empirical_distribution_function\">fonctions de r\u00e9partition empiriques cumul\u00e9es<\/a> (<em>Empirical Cumulative Distribution Function<\/em> &#8211; ECDF) constitue la repr\u00e9sentation non param\u00e9trique ultime pour confronter des cohortes exp\u00e9rimentales.<\/p>\n<p>La primitive <code>stat_ecdf()<\/code> projette directement sur l&rsquo;axe des ordonn\u00e9es la probabilit\u00e9 cumulative <span class=\"arabpsy-math-inline\" data-latex=\"p in [0, 1]\">$p in [0, 1]$<\/span> associ\u00e9e \u00e0 chaque seuil mesur\u00e9 en abscisse, rendant possible la lecture bidirectionnelle des centiles :<\/p>\n<p><code>graphique_ecdf &lt;- ggplot(donnees_cognitives %&gt;% filter(!is.na(Latence)), aes(x = Latence, color = Groupe, linetype = Age)) +<\/code><br \/>\n<code>&nbsp;&nbsp;stat_ecdf(geom = \"step\", linewidth = 1.1) +<\/code><br \/>\n<code>&nbsp;&nbsp;geom_hline(yintercept = c(0.25, 0.50, 0.75), linetype = \"dashed\", color = \"gray50\", alpha = 0.7) +<\/code><br \/>\n<code>&nbsp;&nbsp;scale_y_continuous(breaks = seq(0, 1, 0.25), labels = scales::percent) +<\/code><br \/>\n<code>&nbsp;&nbsp;labs(title = \"Fonctions de r\u00e9partition empiriques cumul\u00e9es (ECDF)\", subtitle = \"Cartographie exhaustive des centiles par groupe et classe d'\u00e2ge\", x = \"Temps de latence (ms)\", y = \"Probabilit\u00e9 cumul\u00e9e F(x)\") +<\/code><br \/>\n<code>&nbsp;&nbsp;theme_light() +<\/code><br \/>\n<code>&nbsp;&nbsp;theme(legend.position = \"bottom\")<\/code><\/p>\n<p>L&rsquo;adjonction de rep\u00e8res horizontaux aux seuils <span class=\"arabpsy-math-inline\" data-latex=\"y in {0.25, 0.50, 0.75}\">$y in {0.25, 0.50, 0.75}$<\/span> transforme la figure en un nomogramme visuel direct : l&rsquo;intersection entre un trait horizontal et les courbes d&rsquo;ECDF correspond pr\u00e9cis\u00e9ment au quantile d&rsquo;ordre correspondant. Tout d\u00e9calage horizontal entre deux courbes d\u00e9montre une dominance stochastique, indiquant qu&rsquo;une cohorte surpasse syst\u00e9matiquement l&rsquo;autre sur l&rsquo;ensemble du continuum de la variable.<\/p>\n<h3>9.3 Mise en forme esth\u00e9tique conforme aux normes acad\u00e9miques (style APA)<\/h3>\n<p>La publication scientifique dans les revues affili\u00e9es \u00e0 l&rsquo;American Psychological Association (<a rel=\"noopener noreferrer\" href=\"https:\/\/apastyle.apa.org\/\">APA<\/a>) ou dans les p\u00e9riodiques biom\u00e9dicaux \u00e0 fort impact impose des normes typographiques strictes : \u00e9limination des grilles graphiques superflues (<em>chartjunk<\/em>), contrastes \u00e9lev\u00e9s assurant la lisibilit\u00e9 en nuances de gris, et typographie standardis\u00e9e sans empattement.<\/p>\n<p>Un trac\u00e9 de synth\u00e8se pr\u00eat pour l&rsquo;\u00e9dition acad\u00e9mique s&rsquo;articule via l&rsquo;affinage des th\u00e8mes sous <code>ggplot2<\/code> :<\/p>\n<p><code>theme_apa_rigoureux &lt;- theme_classic(base_size = 12, base_family = \"sans\") +<\/code><br \/>\n<code>&nbsp;&nbsp;theme(<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;panel.border = element_blank(),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;axis.line = element_line(linewidth = 0.6, color = \"black\"),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;axis.ticks = element_line(color = \"black\"),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;legend.title = element_text(face = \"bold\", size = 10),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;legend.key = element_blank(),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;plot.title = element_text(face = \"bold\", size = 12, hjust = 0),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;plot.subtitle = element_text(italic = TRUE, size = 10, hjust = 0),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;strip.background = element_blank(),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;strip.text = element_text(face = \"bold\")<\/code><br \/>\n<code>&nbsp;&nbsp;)<\/code><br \/>\n<code>graphique_final &lt;- graphique_violon + theme_apa_rigoureux<\/code><br \/>\n<code>ggsave(\"figure_1_quantiles.pdf\", plot = graphique_final, width = 7, height = 5, dpi = 600, device = cairo_pdf)<\/code><\/p>\n<p>L&rsquo;exportation vectorielle via le pilote Cairo PDF garantit une pr\u00e9servation int\u00e9grale de la g\u00e9om\u00e9trie typographique et des trac\u00e9s de haute r\u00e9solution lors des \u00e9tapes d&rsquo;\u00e9preuvage \u00e9ditorial.<\/p>\n<h2>10. \u00c9tude de cas empirique : Analyse de chronom\u00e9trie mentale et scores psychom\u00e9triques<\/h2>\n<h3>10.1 Pr\u00e9sentation du cadre m\u00e9thodologique et du jeu de donn\u00e9es<\/h3>\n<p>Afin de mettre en pratique l&rsquo;ensemble des concepts th\u00e9oriques et computationnels d\u00e9velopp\u00e9s, d\u00e9ployons une \u00e9tude de cas int\u00e9grale centr\u00e9e sur l&rsquo;analyse de donn\u00e9es chronom\u00e9triques en neurosciences cognitives. L&rsquo;investigation \u00e9value l&rsquo;impact de la charge allostatique induite par trois niveaux d&rsquo;induction de stress exp\u00e9rimental (Stress Faible, Mod\u00e9r\u00e9, S\u00e9v\u00e8re) sur les latences d\u00e9cisionnelles lors d&rsquo;une t\u00e2che de Stroop informatis\u00e9e.<\/p>\n<p>L&rsquo;hypoth\u00e8se substantielle postule que l&rsquo;induction d&rsquo;un stress s\u00e9v\u00e8re ne se traduit pas par un glissement uniforme de la moyenne des temps de r\u00e9ponse, mais engendre une d\u00e9t\u00e9rioration s\u00e9lective localis\u00e9e aux performances les plus d\u00e9grad\u00e9es, visualisable exclusivement sur les quantiles sup\u00e9rieurs (<span class=\"arabpsy-math-inline\" data-latex=\"P_{75}\">$P_{75}$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"P_{90}\">$P_{90}$<\/span>), sous l&rsquo;effet de d\u00e9crochages attentionnels transitoires.<\/p>\n<p>G\u00e9n\u00e9rons l&rsquo;\u00e9chantillon empirique associ\u00e9 comprenant 1500 participants affect\u00e9s al\u00e9atoirement aux trois strates exp\u00e9rimentales :<\/p>\n<p><code>n_sujets &lt;- 500<\/code><br \/>\n<code>condition_stress &lt;- factor(rep(c(\"Faible\", \"Modere\", \"Severe\"), each = n_sujets), levels = c(\"Faible\", \"Modere\", \"Severe\"))<\/code><br \/>\n<code>latence_faible &lt;- rlnorm(n_sujets, meanlog = 5.7, sdlog = 0.18)<\/code><br \/>\n<code>latence_modere &lt;- rlnorm(n_sujets, meanlog = 5.75, sdlog = 0.22)<\/code><br \/>\n<code>latence_severe &lt;- c(rlnorm(n_sujets * 0.8, meanlog = 5.78, sdlog = 0.20), rlnorm(n_sujets * 0.2, meanlog = 6.30, sdlog = 0.35))<\/code><br \/>\n<code>donnees_stroop &lt;- tibble(Stress = condition_stress, RT = c(latence_faible, latence_modere, latence_severe))<\/code><\/p>\n<h3>10.2 Impl\u00e9mentation pas \u00e0 pas de l&rsquo;analyse quantile group\u00e9e<\/h3>\n<p>La mise en \u0153uvre du protocole de calcul n\u00e9cessite la d\u00e9rivation conjointe des indicateurs de position centrale, des percentiles strat\u00e9giques (<span class=\"arabpsy-math-inline\" data-latex=\"P_{10}\">$P_{10}$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"P_{25}\">$P_{25}$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"P_{50}\">$P_{50}$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"P_{75}\">$P_{75}$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"P_{90}\">$P_{90}$<\/span>) ainsi que de l&rsquo;\u00e9cart interquartile (<span class=\"arabpsy-math-inline\" data-latex=\"IQR\">$IQR$<\/span>). Nous mobilisons le pipeline unifi\u00e9 sous <code>dplyr<\/code> :<\/p>\n<p><code>synthese_stroop &lt;- donnees_stroop %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;group_by(Stress) %&gt;%<\/code><br \/>\n<code>&nbsp;&nbsp;summarize(<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;N = n(),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Moyenne_Parametrique = mean(RT, na.rm = TRUE),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Ecart_Type = sd(RT, na.rm = TRUE),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;P10 = quantile(RT, probs = 0.10, na.rm = TRUE, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;P25 = quantile(RT, probs = 0.25, na.rm = TRUE, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Mediane = quantile(RT, probs = 0.50, na.rm = TRUE, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;P75 = quantile(RT, probs = 0.75, na.rm = TRUE, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;P90 = quantile(RT, probs = 0.90, na.rm = TRUE, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;IQR = P75 - P25,<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Ratio_Asymetrie = (P90 - Mediane) \/ (Mediane - P10),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;.groups = \"drop\"<\/code><br \/>\n<code>&nbsp;&nbsp;)<\/code><\/p>\n<p>Le param\u00e8tre novateur introduit ici, le <em>Ratio d&rsquo;Asym\u00e9trie Quantile<\/em>, quantifie le rapport entre l&rsquo;\u00e9talement de la moiti\u00e9 sup\u00e9rieure de la distribution (<span class=\"arabpsy-math-inline\" data-latex=\"P_{90} - \\text{M\u00e9diane}\">$P_{90} &#8211; \\text{M\u00e9diane}$<\/span>) et celui de la moiti\u00e9 inf\u00e9rieure (<span class=\"arabpsy-math-inline\" data-latex=\"\\text{M\u00e9diane} - P_{10}\">$\\text{M\u00e9diane} &#8211; P_{10}$<\/span>). Une valeur proche de l&rsquo;unit\u00e9 traduit une parfaite sym\u00e9trie distributionnelle, tandis qu&rsquo;une valeur substantiellement sup\u00e9rieure \u00e0 1 met en exergue une \u00e9longation prononc\u00e9e de la tra\u00eene droite.<\/p>\n<h3>10.3 Interpr\u00e9tation substantive et r\u00e9daction acad\u00e9mique des r\u00e9sultats<\/h3>\n<p>L&rsquo;inspection des r\u00e9sultats empiriques confirme avec \u00e9clat la pertinence m\u00e9thodologique de l&rsquo;analyse quantile. Alors que la moyenne arithm\u00e9tique n&rsquo;indique qu&rsquo;une progression modeste de la latence globale entre les conditions Faible et S\u00e9v\u00e8re (glissement d&rsquo;environ 15 %), l&rsquo;examen des centiles d\u00e9compose une cin\u00e9matique radicalement diff\u00e9renci\u00e9e :<\/p>\n<p>Le 10e centile (<span class=\"arabpsy-math-inline\" data-latex=\"P_{10}\">$P_{10}$<\/span>) demeure remarquablement stable entre le groupe contr\u00f4le (<span class=\"arabpsy-math-inline\" data-latex=\"P_{10} \\approx 237\\text{ ms}\">$P_{10} \\approx 237\\text{ ms}$<\/span>) et le groupe sous stress s\u00e9v\u00e8re (<span class=\"arabpsy-math-inline\" data-latex=\"P_{10} \\approx 250\\text{ ms}\">$P_{10} \\approx 250\\text{ ms}$<\/span>), d\u00e9montrant que la vitesse d&rsquo;amor\u00e7age sensoriel \u00e9l\u00e9mentaire n&rsquo;est pas alt\u00e9r\u00e9e chez les participants focalis\u00e9s. En revanche, le 90e centile subit une explosion quantitative majeure, bondissant de <span class=\"arabpsy-math-inline\" data-latex=\"P_{90} \\approx 380\\text{ ms}\">$P_{90} \\approx 380\\text{ ms}$<\/span> dans la condition contr\u00f4le \u00e0 plus de <span class=\"arabpsy-math-inline\" data-latex=\"P_{90} \\approx 540\\text{ ms}\">$P_{90} \\approx 540\\text{ ms}$<\/span> sous stress s\u00e9v\u00e8re. L&rsquo;\u00e9l\u00e9vation cons\u00e9cutive du Ratio d&rsquo;Asym\u00e9trie de 1.15 \u00e0 plus de 2.20 d\u00e9montre objectivement que l&rsquo;effet exp\u00e9rimental r\u00e9side dans une instabilit\u00e9 attentionnelle intermittente et non dans un ralentissement cognitif g\u00e9n\u00e9ralis\u00e9.<\/p>\n<p>La transcription formelle de ces r\u00e9sultats au sein d&rsquo;une section acad\u00e9mique respectant les conventions \u00e9ditoriales s&rsquo;articule comme suit :<\/p>\n<p><em>\u00ab L&rsquo;analyse non param\u00e9trique de la distribution des temps de r\u00e9action (RT) a r\u00e9v\u00e9l\u00e9 une modification morphologique critique sous condition de stress exp\u00e9rimental s\u00e9v\u00e8re. Alors que la m\u00e9diane n&rsquo;augmente que mod\u00e9r\u00e9ment entre la condition Faible (<span class=\"arabpsy-math-inline\" data-latex=\"Mdn = 298.4\\text{ ms}\">$Mdn = 298.4\\text{ ms}$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"IQR = 76.2\\text{ ms}\">$IQR = 76.2\\text{ ms}$<\/span>) et la condition S\u00e9v\u00e8re (<span class=\"arabpsy-math-inline\" data-latex=\"Mdn = 328.6\\text{ ms}\">$Mdn = 328.6\\text{ ms}$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"IQR = 138.5\\text{ ms}\">$IQR = 138.5\\text{ ms}$<\/span>), la dispersion des quantiles sup\u00e9rieurs met en \u00e9vidence une tra\u00eene lourde s\u00e9lective. Le 90e centile subit un allongement prononc\u00e9 de 160.2 ms sous stress s\u00e9v\u00e8re (<span class=\"arabpsy-math-inline\" data-latex=\"P_{90} = 542.1\\text{ ms}\">$P_{90} = 542.1\\text{ ms}$<\/span>) comparativement au contr\u00f4le (<span class=\"arabpsy-math-inline\" data-latex=\"P_{90} = 381.9\\text{ ms}\">$P_{90} = 381.9\\text{ ms}$<\/span>), tandis que le 10e centile ne progresse que de 13.1 ms (<span class=\"arabpsy-math-inline\" data-latex=\"P_{10} = 250.2\\text{ ms}\">$P_{10} = 250.2\\text{ ms}$<\/span> vs <span class=\"arabpsy-math-inline\" data-latex=\"237.1\\text{ ms}\">$237.1\\text{ ms}$<\/span>). Ce patron d&rsquo;asym\u00e9trie quantile corrobore l&rsquo;hypoth\u00e8se d&rsquo;une survenue intermittente de d\u00e9crochages attentionnels sous forte contrainte allostatique, invisible sous le prisme de la moyenne arithm\u00e9tique standard. \u00bb<\/em><\/p>\n<h2>11. Techniques avanc\u00e9es : Inf\u00e9rence et intervalles de confiance par r\u00e9\u00e9chantillonnage<\/h2>\n<h3>11.1 Fondements de l&rsquo;incertitude d&rsquo;\u00e9chantillonnage des quantiles<\/h3>\n<p>Une estimation quantile ponctuelle <span class=\"arabpsy-math-inline\" data-latex=\"\\hat{Q}(p)\">$\\hat{Q}(p)$<\/span> demeure une variable al\u00e9atoire tributaire des fluctuations d&rsquo;\u00e9chantillonnage. Dans une perspective inf\u00e9rentielle rigoureuse, il est imp\u00e9ratif d&rsquo;associer \u00e0 chaque quantile calcul\u00e9 une mesure formalis\u00e9e de son incertitude stochastique, concr\u00e9tis\u00e9e par un intervalle de confiance \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"1 - \\alpha\">$1 &#8211; \\alpha$<\/span> % (typiquement 95 %).<\/p>\n<p>La th\u00e9orie asymptotique standard \u00e9tablit que pour un \u00e9chantillon de taille <span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span> issu d&rsquo;une densit\u00e9 <span class=\"arabpsy-math-inline\" data-latex=\"f(x)\">$f(x)$<\/span> continue et non nulle au point <span class=\"arabpsy-math-inline\" data-latex=\"x_p\">$x_p$<\/span>, l&rsquo;estimateur empirique v\u00e9rifie :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"\\sqrt{n}(\\hat{Q}(p) - Q(p)) x\\rightarrow{d} \\mathcal{N}\\left(0, \\frac{p(1 - p)}{[f(Q(p))]^2}\\right)\">$$\\sqrt{n}(\\hat{Q}(p) &#8211; Q(p)) x\\rightarrow{d} \\mathcal{N}\\left(0, \\frac{p(1 &#8211; p)}{[f(Q(p))]^2}\\right)$$<\/span><\/p>\n<p>L&rsquo;estimation directe de cette variance asymptotique pr\u00e9sente toutefois une difficult\u00e9 calculatoire majeure : elle requiert l&rsquo;\u00e9valuation de la densit\u00e9 locale inconnue <span class=\"arabpsy-math-inline\" data-latex=\"f(Q(p))\">$f(Q(p))$<\/span> au d\u00e9nominateur, une grandeur hautement instable \u00e0 estimer par lissage de noyau sur des effectifs limit\u00e9s. Face \u00e0 cette contrainte, les approches computationnelles intensives de <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Bootstrapping_(statistics)\">r\u00e9\u00e9chantillonnage bootstrap non param\u00e9trique<\/a> s&rsquo;imposent comme la r\u00e9f\u00e9rence m\u00e9thodologique absolue.<\/p>\n<h3>11.2 Mise en place d&rsquo;un bootstrap non param\u00e9trique stratifi\u00e9 par groupe<\/h3>\n<p>L&rsquo;application du r\u00e9\u00e9chantillonnage \u00e0 des donn\u00e9es partitionn\u00e9es impose une contrainte imp\u00e9rative : la stratification du tirage. Un tirage avec remise global non contraint risquerait de modifier les proportions d&rsquo;effectifs entre les groupes d&rsquo;une r\u00e9plique \u00e0 l&rsquo;autre. Le tirage avec remise doit donc s&rsquo;effectuer strictement et ind\u00e9pendamment \u00e0 l&rsquo;int\u00e9rieur de chaque strate exp\u00e9rimentale.<\/p>\n<p>Impl\u00e9mentons une proc\u00e9dure de bootstrap stratifi\u00e9 \u00e0 l&rsquo;aide de la biblioth\u00e8que sp\u00e9cialis\u00e9e <code>boot<\/code> pour d\u00e9river l&rsquo;intervalle de confiance de la m\u00e9diane et du 90e centile pour le groupe soumis au stress s\u00e9v\u00e8re :<\/p>\n<p><code>sous_groupe_severe &lt;- donnees_stroop %&gt;% filter(Stress == \"Severe\") %&gt;% pull(RT)<\/code><br \/>\n<code>fonction_stat_quantile &lt;- function(vecteur, indices) {<\/code><br \/>\n<code>&nbsp;&nbsp;echantillon_boot &lt;- vecteur[indices]<\/code><br \/>\n<code>&nbsp;&nbsp;return(c(<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;Mediane = quantile(echantillon_boot, probs = 0.50, type = 8),<\/code><br \/>\n<code>&nbsp;&nbsp;&nbsp;&nbsp;P90 = quantile(echantillon_boot, probs = 0.90, type = 8)<\/code><br \/>\n<code>&nbsp;&nbsp;))<\/code><br \/>\n<code>}<\/code><br \/>\n<code>resultats_boot &lt;- boot(<\/code><br \/>\n<code>&nbsp;&nbsp;data = sous_groupe_severe,<\/code><br \/>\n<code>&nbsp;&nbsp;statistic = fonction_stat_quantile,<\/code><br \/>\n<code>&nbsp;&nbsp;R = 2000<\/code><br \/>\n<code>)<\/code><\/p>\n<p>L&rsquo;ex\u00e9cution it\u00e9rative sur 2000 r\u00e9plicats permet de construire la distribution empirique d&rsquo;\u00e9chantillonnage de chaque statistique positionnelle sous-jacente.<\/p>\n<h3>11.3 D\u00e9termination et rapport des intervalles de confiance bootstrap<\/h3>\n<p>L&rsquo;extraction formelle des bornes d&rsquo;intervalles de confiance peut s&rsquo;op\u00e9rer par la m\u00e9thode des centiles bootstrap ou par la m\u00e9thode ajust\u00e9e BCa (<em>bias-corrected and accelerated<\/em>), recommand\u00e9e par Efron pour corriger \u00e0 la fois le biais empirique et l&rsquo;asym\u00e9trie de la distribution d&rsquo;\u00e9chantillonnage :<\/p>\n<p><code>ic_mediane &lt;- boot.ci(resultats_boot, conf = 0.95, type = c(\"perc\", \"bca\"), index = 1)<\/code><br \/>\n<code>ic_p90 &lt;- boot.ci(resultats_boot, conf = 0.95, type = c(\"perc\", \"bca\"), index = 2)<\/code><\/p>\n<p>La synth\u00e8se des estimations permet d&rsquo;exprimer les r\u00e9sultats inf\u00e9rentiels avec une pr\u00e9cision scientifique irr\u00e9prochable :<\/p>\n<p><em>\u00ab Dans la condition de stress s\u00e9v\u00e8re, la m\u00e9diane empirique des temps de r\u00e9action est estim\u00e9e \u00e0 328.6 ms, IC BCa 95 % [314.2, 345.8], tandis que le 90e centile s&rsquo;\u00e9tablit \u00e0 542.1 ms, IC BCa 95 % [508.3, 584.7]. L&rsquo;absence totale de chevauchement entre cet intervalle et les bornes sup\u00e9rieures du groupe contr\u00f4le (P90 contr\u00f4le = 381.9 ms, IC 95 % [369.4, 396.1]) confirme la significativit\u00e9 statistique de la d\u00e9gradation attentionnelle s\u00e9lective au seuil <span class=\"arabpsy-math-inline\" data-latex=\"\\alpha = 0.05\">$\\alpha = 0.05$<\/span>. \u00bb<\/em><\/p>\n<p>L&rsquo;int\u00e9gration de ces intervalles d&rsquo;incertitude dans des graphiques d&rsquo;estimations ponctuelles \u00e0 barres d&rsquo;erreur (<em>point-range plots<\/em>) constitue la cl\u00e9 de vo\u00fbte d&rsquo;une communication visuelle exempte d&rsquo;ambigu\u00eft\u00e9.<\/p>\n<h2>12. Pi\u00e8ges fr\u00e9quents, optimisation du code et bonnes pratiques<\/h2>\n<h3>12.1 Erreurs de syntaxe et incompatibilit\u00e9s dimensionnelles r\u00e9currentes<\/h3>\n<p>L&rsquo;analyse quantile en environnement partitionn\u00e9 comporte plusieurs pi\u00e8ges syntaxiques susceptibles de g\u00e9n\u00e9rer des dysfonctionnements silencieux :<\/p>\n<ul>\n<li><strong>Incompatibilit\u00e9 d&rsquo;assignation dans summarize() :<\/strong> Dans les versions de <code>dplyr<\/code> ant\u00e9rieures \u00e0 la version 1.1.0, passer un vecteur \u00e0 <code>probs<\/code> de longueur sup\u00e9rieure \u00e0 1 (ex. <code>probs = c(0.25, 0.75)<\/code>) au sein de <code>summarize()<\/code> levait une erreur critique d&rsquo;incompatibilit\u00e9 dimensionnelle (attente de sortie scalaire de longueur 1). La solution moderne consiste \u00e0 employer syst\u00e9matiquement <code>reframe()<\/code> d\u00e8s lors qu&rsquo;un calcul produit une sortie vectorielle multidimensionnelle.<\/li>\n<li><strong>Mauvaise transmission de l&rsquo;argument d&rsquo;\u00e9lagage :<\/strong> L&rsquo;omission de <code>na.rm = TRUE<\/code> ne provoque pas d&rsquo;erreur d&rsquo;ex\u00e9cution fatale, mais corrompt insidieusement les r\u00e9sultats sous forme de valeurs <code>NA<\/code> silencieuses. Il convient de v\u00e9rifier syst\u00e9matiquement que le traitement des valeurs nulles est activement configur\u00e9 dans chaque sous-appel de <code>quantile()<\/code>.<\/li>\n<li><strong>Confusion entre le rang ordinal et la valeur quantile :<\/strong> Une erreur conceptuelle r\u00e9currente consiste \u00e0 confondre la statistique d&rsquo;ordre <span class=\"arabpsy-math-inline\" data-latex=\"x_{(k)}\">$x_{(k)}$<\/span> (la donn\u00e9e brute observ\u00e9e dans l&rsquo;\u00e9chantillon) avec l&rsquo;estimation continue <span class=\"arabpsy-math-inline\" data-latex=\"\\hat{Q}(p)\">$\\hat{Q}(p)$<\/span> interpol\u00e9e selon les Types 4 \u00e0 9. Cette confusion fausse particuli\u00e8rement les analyses d&rsquo;\u00e9chantillons discrets ou arrondis.<\/li>\n<\/ul>\n<h3>12.2 Biais d&rsquo;interpr\u00e9tation li\u00e9s aux d\u00e9s\u00e9quilibres d&rsquo;effectifs<\/h3>\n<p>Un \u00e9cueil statistique majeur concerne la comparaison de centiles extr\u00eames entre des groupes pr\u00e9sentant des disparit\u00e9s massives de taille d&rsquo;\u00e9chantillon. L&rsquo;estimation d&rsquo;un quantile p\u00e9riph\u00e9rique, tel que le 99e centile (<span class=\"arabpsy-math-inline\" data-latex=\"P_{99}\">$P_{99}$<\/span>), requiert imp\u00e9rativement un nombre minimal d&rsquo;observations pour stabiliser son esp\u00e9rance empirique.<\/p>\n<p>Selon la r\u00e8gle m\u00e9thodologique usuelle, l&rsquo;estimation fiable d&rsquo;un centile <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span> exige que le produit de l&rsquo;effectif valide <span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span> par la probabilit\u00e9 associ\u00e9e <span class=\"arabpsy-math-inline\" data-latex=\"p\">$p$<\/span> (ou <span class=\"arabpsy-math-inline\" data-latex=\"1 - p\">$1 &#8211; p$<\/span> pour la queue sup\u00e9rieure) soit au moins sup\u00e9rieur ou \u00e9gal \u00e0 5, et id\u00e9alement \u00e0 10 :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"n \\times (1 - p) ge 10 implies n ge \\frac{10}{1 - 0.99} = 1000\">$$n \\times (1 &#8211; p) ge 10 implies n ge \\frac{10}{1 &#8211; 0.99} = 1000$$<\/span><\/p>\n<p>Si une cohorte contr\u00f4le compte 2000 sujets tandis qu&rsquo;un sous-groupe clinique n&rsquo;en comprend que 40, l&rsquo;estimation directe du 99e centile sur ce second \u00e9chantillon est sujette \u00e0 une variance asymptotique disproportionn\u00e9e. La statistique calcul\u00e9e correspondra simplement au maximum absolu observ\u00e9 <span class=\"arabpsy-math-inline\" data-latex=\"x_{(40)}\">$x_{(40)}$<\/span>, hautement sensible au bruit stochastique. L&rsquo;analyste doit s&rsquo;abstenir de comparer des centiles pour lesquels la taille d&rsquo;\u00e9chantillon effective de la plus petite strate n&rsquo;atteint pas le seuil de r\u00e9solution math\u00e9matique requis.<\/p>\n<h3>12.3 Directives de programmation pour la reproductibilit\u00e9 scientifique<\/h3>\n<p>Afin de satisfaire aux standards les plus rigoureux de la recherche ouverte et reproductible (<em>Open Science Framework<\/em>), le calcul de quantiles par groupe dans R doit observer trois principes directeurs fondamentaux :<\/p>\n<ol>\n<li><strong>Explicitation syst\u00e9matique des hyperparam\u00e8tres algorithmiques :<\/strong> Ne jamais s&rsquo;en remettre au param\u00e8tre par d\u00e9faut implicite. Sp\u00e9cifier syst\u00e9matiquement <code>type = 8<\/code> (ou tout autre type justifi\u00e9 par le domaine d&rsquo;application) au sein de chaque appel de fonction pour pr\u00e9venir toute divergence lors de la migration du code vers d&rsquo;autres interpr\u00e9teurs statistiques.<\/li>\n<li><strong>Encapsulation fonctionnelle modulaire :<\/strong> Proscrire la duplication de blocs de code imp\u00e9ratifs r\u00e9p\u00e9titifs (principe <em>DRY &#8211; Don&rsquo;t Repeat Yourself<\/em>). Isoler les calculs r\u00e9currents dans des fonctions pures rigoureusement test\u00e9es unitairement :\n<p><code>calculer_quartiles_groupe &lt;- function(data, var_valeur, var_groupe, algo_type = 8) {<\/code><br \/>\n    <code>&nbsp;&nbsp;data %&gt;%<\/code><br \/>\n    <code>&nbsp;&nbsp;&nbsp;&nbsp;group_by(across(all_of(var_groupe))) %&gt;%<\/code><br \/>\n    <code>&nbsp;&nbsp;&nbsp;&nbsp;summarize(<\/code><br \/>\n    <code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;N = sum(!is.na(.data[[var_valeur]])),<\/code><br \/>\n    <code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Q1 = quantile(.data[[var_valeur]], probs = 0.25, na.rm = TRUE, type = algo_type),<\/code><br \/>\n    <code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mediane = quantile(.data[[var_valeur]], probs = 0.50, na.rm = TRUE, type = algo_type),<\/code><br \/>\n    <code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Q3 = quantile(.data[[var_valeur]], probs = 0.75, na.rm = TRUE, type = algo_type),<\/code><br \/>\n    <code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IQR = Q3 - Q1,<\/code><br \/>\n    <code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.groups = \"drop\"<\/code><br \/>\n    <code>&nbsp;&nbsp;&nbsp;&nbsp;)<\/code><br \/>\n    <code>}<\/code><\/p>\n<\/li>\n<li><strong>Tra\u00e7abilit\u00e9 de l&rsquo;environnement de session :<\/strong> Cl\u00f4turer syst\u00e9matiquement chaque pipeline analytique par l&rsquo;invocation de <code>sessionInfo()<\/code> ou la s\u00e9rialisation de l&rsquo;\u00e9tat des d\u00e9pendances via <code>renv::snapshot()<\/code>. Cette pratique documente avec exactitude les architectures processeurs, versions de compilateurs et r\u00e9visions de biblioth\u00e8ques engag\u00e9es lors de l&rsquo;ex\u00e9cution, scellant ainsi l&rsquo;int\u00e9grit\u00e9 de la recherche quantitative.<\/li>\n<\/ol>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>American Psychological Association. (2020). <em>Publication manual of the American Psychological Association<\/em> (7th ed.). American Psychological Association. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1037\/0000165-000\">https:\/\/doi.org\/10.1037\/0000165-000<\/a><\/li>\n<li>Canty, A., &amp; Ripley, B. D. (2022). <em>boot: Bootstrap R (S-Plus) Functions<\/em> (R package version 1.3-28). CRAN. <a rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=boot\">https:\/\/cran.r-project.org\/package=boot<\/a><\/li>\n<li>Dowle, M., &amp; Srinivasan, A. (2023). <em>data.table: Extension of `data.frame`<\/em> (R package version 1.14.8). CRAN. <a rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=data.table\">https:\/\/cran.r-project.org\/package=data.table<\/a><\/li>\n<li>Efron, B., &amp; Tibshirani, R. J. (1994). <em>An introduction to the bootstrap<\/em>. Chapman and Hall\/CRC. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1201\/9780429246593\">https:\/\/doi.org\/10.1201\/9780429246593<\/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 rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1080\/00031305.1996.10473566\">https:\/\/doi.org\/10.1080\/00031305.1996.10473566<\/a><\/li>\n<li>R Core Team. (2023). <em>R: A language and environment for statistical computing<\/em>. R Foundation for Statistical Computing. <a rel=\"noopener noreferrer\" href=\"https:\/\/www.r-project.org\/\">https:\/\/www.r-project.org\/<\/a><\/li>\n<li>Tukey, J. W. (1977). <em>Exploratory data analysis<\/em>. Addison-Wesley.<\/li>\n<li>Wickham, H., Averick, M., Bryan, J., Chang, W., McGowan, L. D., Fran\u00e7ois, R., Grolemund, G., Hayes, A., Henry, L., Hester, J., Kuhn, M., Pedersen, T. L., Miller, E., Bache, S. M., M\u00fcller, K., Ooms, J., Robinson, D., Seidel, D. P., Spinu, V., Takahashi, K., Vaughan, D., Wilke, C., Woo, K., &amp; Yutani, H. (2019). Welcome to the Tidyverse. <em>Journal of Open Source Software<\/em>, 4(43), 1686. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.21105\/joss.01686\">https:\/\/doi.org\/10.21105\/joss.01686<\/a><\/li>\n<li>Wickham, H., Fran\u00e7ois, R., Henry, L., M\u00fcller, K., &amp; Vaughan, D. (2023). <em>dplyr: A Grammar of Data Manipulation<\/em> (R package version 1.1.2). CRAN. <a rel=\"noopener noreferrer\" href=\"https:\/\/cran.r-project.org\/package=dplyr\">https:\/\/cran.r-project.org\/package=dplyr<\/a><\/li>\n<li>Wilkinson, L. (2005). <em>The grammar of graphics<\/em> (2nd ed.). Springer-Verlag. <a 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 des quantiles par groupe dans R avec dplyr, data.table et Base R, accompagn\u00e9 d&rsquo;exemples pratiques et rigoureux.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[2141,2193],"tags":[6234,2690,4061,9377,2212],"class_list":["post-8236","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-quantitative","category-programmation-r","tag-analyse-distributionnelle","tag-dplyr","tag-langage-r","tag-quantiles-par-groupe","tag-statistiques-descriptives"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/8236","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=8236"}],"version-history":[{"count":0,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/8236\/revisions"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}