{"id":5726,"date":"2026-09-12T00:16:22","date_gmt":"2026-09-12T00:16:22","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-calculer-ecart-absolu-median-python\/"},"modified":"2026-09-12T00:16:22","modified_gmt":"2026-09-12T00:16:22","slug":"comment-calculer-ecart-absolu-median-python","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-calculer-ecart-absolu-median-python","title":{"rendered":"Comment calculer l&rsquo;\u00e9cart absolu m\u00e9dian en Python"},"content":{"rendered":"<p>Dans le champ contemporain de la psychom\u00e9trie et des neurosciences cognitives quantitatives, l&rsquo;int\u00e9grit\u00e9 des conclusions statistiques repose fondamentalement sur la validit\u00e9 des hypoth\u00e8ses distributionnelles formul\u00e9es \u00e0 l&rsquo;\u00e9gard des donn\u00e9es empiriques. Depuis l&rsquo;\u00e9mergence des premiers paradigmes exp\u00e9rimentaux formalis\u00e9s par Francis Galton et Karl Pearson, la communaut\u00e9 scientifique a accord\u00e9 une confiance pr\u00e9pond\u00e9rante, parfois aveugle, aux m\u00e9triques fond\u00e9es sur les moments d&rsquo;ordre un et deux, \u00e0 savoir l&rsquo;esp\u00e9rance math\u00e9matique et la variance. Or, les donn\u00e9es issues de l&rsquo;observation du comportement humain \u2014 qu&rsquo;il s&rsquo;agisse de temps de r\u00e9action mesur\u00e9s au milli\u00e8me de seconde, de scores composites obtenus \u00e0 des inventaires de personnalit\u00e9 ou de marqueurs \u00e9lectrophysiologiques \u2014 manifestent presque syst\u00e9matiquement des d\u00e9viations substantielles vis-\u00e0-vis de l&rsquo;id\u00e9al th\u00e9orique de la loi normale de Gauss-Laplace. L&rsquo;omnipr\u00e9sence d&rsquo;asym\u00e9tries distributionnelles prononc\u00e9es, d&rsquo;un aplatissement marqu\u00e9 et, surtout, de contaminations ponctuelles par des valeurs aberrantes invalide fr\u00e9quemment l&#8217;emploi aveugle de ces estimateurs classiques.<\/p>\n<p>Cette vuln\u00e9rabilit\u00e9 structurelle de la moyenne arithm\u00e9tique et de l&rsquo;\u00e9cart-type a catalys\u00e9 le d\u00e9veloppement de l&rsquo;analyse statistique robuste, un paradigme inaugur\u00e9 par les travaux s\u00e9minales de <a rel=\"noopener noreferrer\" href=\"https:\/\/projecteuclid.org\/journals\/annals-of-mathematical-statistics\/volume-35\/issue-1\/Robust-Estimation-of-a-Location-Parameter\/10.1214\/aoms\/1177703732.full\">Peter J. Huber (1964)<\/a> et magistralement approfondi par Frank Hampel et <a rel=\"noopener noreferrer\" href=\"https:\/\/onlinelibrary.wiley.com\/doi\/book\/10.1002\/9781118186435\">Peter J. Rousseeuw (1987)<\/a>. Au c\u0153ur de cet arsenal m\u00e9thodologique figure l&rsquo;\u00e9cart absolu m\u00e9dian, universellement d\u00e9sign\u00e9 par l&rsquo;acronyme MAD (<em>Median Absolute Deviation<\/em>). Con\u00e7u pour quantifier la dispersion d&rsquo;une distribution sans subir l&rsquo;influence d\u00e9stabilisatrice des queues \u00e9paisses ou des artefacts de mesure, le MAD s&rsquo;impose aujourd&rsquo;hui comme une alternative robuste incontournable. Sa r\u00e9sistance intrins\u00e8que aux valeurs extr\u00eames en fait un outil de premier plan pour garantir la reproductibilit\u00e9 des analyses de donn\u00e9es comportementales, particuli\u00e8rement dans un contexte de crise de r\u00e9plication o\u00f9 la rigueur m\u00e9thodologique fait l&rsquo;objet d&rsquo;un examen minutieux.<\/p>\n<p>Parall\u00e8lement \u00e0 ces \u00e9volutions th\u00e9oriques, le langage de programmation <a rel=\"noopener noreferrer\" href=\"https:\/\/www.python.org\/\">Python<\/a> s&rsquo;est affirm\u00e9 comme l&rsquo;environnement computationnel de r\u00e9f\u00e9rence pour l&rsquo;analyse des donn\u00e9es scientifiques, d\u00e9tr\u00f4nant progressivement les suites logicielles propri\u00e9taires gr\u00e2ce \u00e0 son \u00e9cosyst\u00e8me modulaire ouvert, comprenant NumPy, SciPy, Pandas et Statsmodels. Toutefois, la mise en \u0153uvre pratique de l&rsquo;\u00e9cart absolu m\u00e9dian dans cet environnement requiert une compr\u00e9hension fine de ses fondements math\u00e9matiques, de ses constantes d&rsquo;ajustement asymptotique, des subtilit\u00e9s d&rsquo;interpolation num\u00e9rique et des choix d&rsquo;optimisation vectorielle. Ce trait\u00e9 exhaustif a pour vocation d&rsquo;articuler la th\u00e9orie statistique la plus rigoureuse avec les techniques de programmation contemporaines, guidant le chercheur et l&rsquo;analyste de donn\u00e9es \u00e0 travers chaque \u00e9tape de l&rsquo;\u00e9valuation, de l&rsquo;impl\u00e9mentation et de la valorisation du MAD appliqu\u00e9 aux sciences du comportement.<\/p>\n<h2>1. Fondements th\u00e9oriques de l&rsquo;\u00e9cart absolu m\u00e9dian (MAD) en psychom\u00e9trie<\/h2>\n<h3>1.1 D\u00e9finition math\u00e9matique et conceptuelle du MAD<\/h3>\n<p>D&rsquo;un point de vue strictement formel, consid\u00e9rons un \u00e9chantillon al\u00e9atoire unidimensionnel not\u00e9 <em>X<\/em> constitu\u00e9 de <em>n<\/em> observations r\u00e9elles index\u00e9es par <em>i<\/em>, tel que <em>X<\/em> = {<em>x<\/em>\u2081, <em>x<\/em>\u2082, &#8230;, <em>x\u2099<\/em>}. L&rsquo;\u00e9cart absolu m\u00e9dian est d\u00e9fini comme la m\u00e9diane des d\u00e9viations absolues de chaque observation individuelle par rapport \u00e0 la m\u00e9diane empirique de l&rsquo;ensemble de l&rsquo;\u00e9chantillon. Math\u00e9matiquement, cette statistique d&rsquo;ordre s&rsquo;\u00e9nonce selon l&rsquo;\u00e9quation explicite suivante :<\/p>\n<p><strong>MAD = m\u00e9diane(|x\u1d62 &#8211; m\u00e9diane(X)|)<\/strong>, pour tout <em>i<\/em> appartenant \u00e0 l&rsquo;ensemble des indices de 1 \u00e0 <em>n<\/em>.<\/p>\n<p>Cette formulation r\u00e9v\u00e8le une rupture \u00e9pist\u00e9mologique fondamentale avec la m\u00e9trique conventionnelle de la dispersion qu&rsquo;est l&rsquo;\u00e9cart-type. Alors que l&rsquo;\u00e9cart-type repose sur l&rsquo;op\u00e9rateur quadratique, mesurant la racine carr\u00e9e de la moyenne des carr\u00e9s des \u00e9carts \u00e0 la moyenne arithm\u00e9tique, le MAD substitue \u00e0 chaque \u00e9tape le crit\u00e8re de centralit\u00e9 m\u00e9diane \u00e0 celui de l&rsquo;esp\u00e9rance arithm\u00e9tique, et la valeur absolue lin\u00e9aire \u00e0 la mise au carr\u00e9. La moyenne arithm\u00e9tique cherche \u00e0 minimiser la somme des erreurs quadratiques, ce qui lui conf\u00e8re une d\u00e9pendance directe et non born\u00e9e envers chaque valeur observ\u00e9e : le d\u00e9placement infinit\u00e9simal vers l&rsquo;infini d&rsquo;une seule observation suffit \u00e0 d\u00e9river arbitrairement la moyenne de l&rsquo;\u00e9chantillon tout entier. \u00c0 l&rsquo;inverse, la m\u00e9diane d&rsquo;un \u00e9chantillon minimise la somme des distances absolues d&rsquo;ordre un (norme <em>L<\/em>\u2081), ce qui lui octroie une immunit\u00e9 substantielle contre les fluctuations marginales situ\u00e9es aux extr\u00eames de la distribution.<\/p>\n<p>Sur le plan de la th\u00e9orie de la robustesse, cette distinction s&rsquo;op\u00e9rationnalise \u00e0 travers la notion cardinale de point de rupture fini (<em>finite-sample breakdown point<\/em>). D\u00e9fini comme la plus petite proportion d&rsquo;observations arbitrairement alt\u00e9r\u00e9es ou corrompues qu&rsquo;un \u00e9chantillon peut tol\u00e9rer avant que l&rsquo;estimateur ne produise une valeur infinie ou totalement aberrante, le point de rupture caract\u00e9rise la r\u00e9silience d&rsquo;une statistique. Pour la moyenne arithm\u00e9tique comme pour la variance et l&rsquo;\u00e9cart-type, ce point de rupture est infinit\u00e9simal, valant pr\u00e9cis\u00e9ment 1\/<em>n<\/em>. D\u00e8s que <em>n<\/em> cro\u00eet, cette fraction tend vers z\u00e9ro : une seule donn\u00e9e aberrante r\u00e9sultant d&rsquo;un dysfonctionnement d&rsquo;horloge de capture ou d&rsquo;une inattention d&rsquo;un sujet exp\u00e9rimental suffit \u00e0 fausser dramatiquement l&rsquo;estimation. En contrepartie magistrale, le MAD poss\u00e8de un point de rupture de 50 % (exactement \u230a(<em>n<\/em>+1)\/2\u230b \/ <em>n<\/em>), soit le maximum th\u00e9orique absolu pour tout estimateur \u00e9quivariant par translation et invariant par changement d&rsquo;\u00e9chelle. Cela signifie concr\u00e8tement que pr\u00e8s de la moiti\u00e9 de l&rsquo;\u00e9chantillon empirique peut \u00eatre substitu\u00e9e par des valeurs chaotiques, infinies ou aberrantes sans que le MAD n&rsquo;explose vers l&rsquo;infini ou ne s&rsquo;effondre vers z\u00e9ro.<\/p>\n<p>Cette caract\u00e9ristique conceptuelle est particuli\u00e8rement pertinente pour les variables psychologiques non gaussiennes. Les construits \u00e9valu\u00e9s en psychom\u00e9trie, tels que le niveau d&rsquo;anxi\u00e9t\u00e9 situationnelle, le temps d&rsquo;acc\u00e8s au lexique mental ou les scores de saillance \u00e9motionnelle, ne suivent presque jamais une trajectoire sym\u00e9trique en cloche. Ces ph\u00e9notypes comportementaux exhibent structurellement des lois asym\u00e9triques \u00e0 tra\u00eene droite (telles que les lois log-normales, de Weibull ou ex-gaussiennes), o\u00f9 des individus atypiques manifestent des r\u00e9ponses l\u00e9gitimes mais tr\u00e8s distantes du centre de masse. Le recours au MAD permet d&rsquo;appr\u00e9hender la v\u00e9ritable dispersion sous-jacente du construit psychologique latent, sans confondre la variabilit\u00e9 \u00e9cologique de la population avec l&rsquo;impact d\u00e9mesur\u00e9 de quelques profils extr\u00eames.<\/p>\n<h3>1.2 Importance de la robustesse dans l&rsquo;analyse de donn\u00e9es comportementales<\/h3>\n<p>L&rsquo;acquisition de donn\u00e9es exp\u00e9rimentales en sciences cognitives, en psychologie clinique et en ergonomie comportementale est intrins\u00e8quement soumise \u00e0 une multitude de sources de contamination ind\u00e9pendantes du ph\u00e9nom\u00e8ne th\u00e9orique sous examen. Lors de l&rsquo;enregistrement de temps de r\u00e9ponse au cours de t\u00e2ches informatis\u00e9es complexes \u2014 \u00e0 l&rsquo;instar des paradigmes de d\u00e9cision lexicale, d&rsquo;indi\u00e7age attentionnel de Posner ou d&rsquo;inhibition de type Simon \u2014, les s\u00e9ries chronom\u00e9triques sont fr\u00e9quemment pollu\u00e9es par des erreurs instrumentales ou comportementales. Un participant peut appuyer pr\u00e9matur\u00e9ment sur la commande en raison d&rsquo;un tremblement moteur involontaire, g\u00e9n\u00e9rant un temps de r\u00e9ponse physiquement impossible de 40 millisecondes, ou au contraire d\u00e9tourner son regard du moniteur en subissant une micro-distraction environnementale, provoquant une latence de 8 000 millisecondes l\u00e0 o\u00f9 la moyenne attendue oscille autour de 450 millisecondes.<\/p>\n<p>Sous l&rsquo;\u00e9gide de l&rsquo;\u00e9cart-type traditionnel, la pr\u00e9sence de ces quelques artefacts produit une inflation artificielle d\u00e9sastreuse de l&rsquo;indice de dispersion. Parce que la d\u00e9viation entre l&rsquo;observation et la moyenne est \u00e9lev\u00e9e au carr\u00e9, un seul \u00e9cart de 5 000 millisecondes p\u00e8se de mani\u00e8re disproportionn\u00e9e dans la somme des carr\u00e9s. Il en r\u00e9sulte non seulement un gonflement de la variance estim\u00e9e, mais \u00e9galement un d\u00e9placement de la moyenne de l&rsquo;\u00e9chantillon en direction de cette valeur extr\u00eame. Cet effet pervers entra\u00eene ce que les statisticiens nomment le ph\u00e9nom\u00e8ne de masquage (<em>masking effect<\/em>) : la variance globale devenant anormalement large, les tests d&rsquo;inf\u00e9rence ult\u00e9rieurs (tels que le test <em>t<\/em> de Student ou l&rsquo;analyse de variance factorielle) voient leur erreur standard cro\u00eetre consid\u00e9rablement, ce qui d\u00e9truit la puissance statistique du protocole exp\u00e9rimental et conduit fr\u00e9quemment \u00e0 des erreurs de type II, consistant \u00e0 rejeter ind\u00fbment des effets exp\u00e9rimentaux r\u00e9els.<\/p>\n<p>Le recours syst\u00e9matique \u00e0 l&rsquo;\u00e9cart absolu m\u00e9dian pr\u00e9serve avec une remarquable fid\u00e9lit\u00e9 la structure distributionnelle authentique des donn\u00e9es psychologiques. Dans le cadre de petits \u00e9chantillons, monnaie courante lors d&rsquo;essais cliniques randomis\u00e9s impliquant des populations de patients rares (par exemple, des individus pr\u00e9sentant une amn\u00e9sie ant\u00e9rograde focale cons\u00e9cutive \u00e0 une enc\u00e9phalite herp\u00e9tique ou des traumatismes cr\u00e2niens s\u00e9v\u00e8res), l&rsquo;exclusion pure et simple d&rsquo;observations au motif qu&rsquo;elles d\u00e9vient de la norme est m\u00e9thodologiquement p\u00e9rilleuse et \u00e9thiquement contestable. Le MAD offre l&rsquo;avantage inestimable de conserver l&rsquo;ensemble de la cohorte dans le pipeline analytique sans que la mesure de dispersion ne devienne le jouet d&rsquo;un unique profil h\u00e9t\u00e9rog\u00e8ne.<\/p>\n<p>Enfin, la robustesse statistique participe directement de la r\u00e9solution de la crise de reproductibilit\u00e9 qui frappe les sciences sociales et comportementales depuis plus d&rsquo;une d\u00e9cennie. De multiples \u00e9tudes m\u00e9ta-scientifiques ont d\u00e9montr\u00e9 qu&rsquo;une fraction substantielle des \u00e9checs de r\u00e9plication d\u00e9coule de d\u00e9cisions arbitraires de nettoyage de donn\u00e9es (la fameuse variabilit\u00e9 des \u00ab degr\u00e9s de libert\u00e9 du chercheur \u00bb). En adoptant des estimateurs formellement robustes d\u00e8s la phase descriptive, les chercheurs s&rsquo;\u00e9mancipent des crit\u00e8res discr\u00e9tionnaires d&rsquo;\u00e9chenillage des donn\u00e9es, standardisent leurs protocoles de pr\u00e9traitement et garantissent une stabilit\u00e9 exemplaire des m\u00e9triques rapport\u00e9es d&rsquo;un laboratoire \u00e0 l&rsquo;autre.<\/p>\n<h2>2. Comparaison m\u00e9thodologique : MAD contre \u00e9cart-type et variance<\/h2>\n<h3>2.1 Sensibilit\u00e9 aux valeurs extr\u00eames et biais d&rsquo;estimation<\/h3>\n<p>Pour appr\u00e9hender rigoureusement la sup\u00e9riorit\u00e9 op\u00e9rationnelle du MAD face aux estimateurs d\u00e9riv\u00e9s des moindres carr\u00e9s, il convient d&rsquo;analyser la fonction d&rsquo;influence (<em>influence function<\/em>), formalis\u00e9e par <a rel=\"noopener noreferrer\" href=\"https:\/\/www.jstor.org\/stable\/2284335\">Frank Hampel (1974)<\/a>. La fonction d&rsquo;influence mesure l&rsquo;effet marginal relatif d&rsquo;une observation infinit\u00e9simale contaminante situ\u00e9e au point <em>x<\/em> sur l&rsquo;estimateur asymptotique <em>T<\/em> d&rsquo;une loi de probabilit\u00e9 <em>F<\/em>. Pour la variance empirique <em>s<\/em>\u00b2, la fonction d&rsquo;influence est quadratique : elle diverge vers l&rsquo;infini selon une fonction de type <em>O(x\u00b2)<\/em> lorsque l&rsquo;observation contaminante s&rsquo;\u00e9loigne du centre. Cela signifie que l&rsquo;effet de levier exerc\u00e9 par une donn\u00e9e sur l&rsquo;\u00e9cart-type n&rsquo;a aucune limite sup\u00e9rieure, conf\u00e9rant \u00e0 chaque valeur extr\u00eame un pouvoir de distorsion illimit\u00e9 sur la m\u00e9trique finale.<\/p>\n<p>\u00c0 l&rsquo;oppos\u00e9, la fonction d&rsquo;influence du MAD est strictement born\u00e9e (<em>B-robustness<\/em>). Lorsque l&rsquo;observation contaminante s&rsquo;\u00e9loigne vers l&rsquo;infini positif ou n\u00e9gatif, son impact sur l&rsquo;accroissement du MAD plafonne imm\u00e9diatement d\u00e8s qu&rsquo;elle franchit la barri\u00e8re du quantile 0,75 ou 0,25 de la distribution. Elle est trait\u00e9e simplement comme une unit\u00e9 surnum\u00e9raire dans la queue de distribution, contribuant au d\u00e9compte ordinal sans que son amplitude m\u00e9trique brute n&rsquo;exerce de pression suppl\u00e9mentaire. Ce comportement analytique d\u00e9montre que le MAD constitue un bouclier contre les contaminations intentionnelles ou fortuites des bases de donn\u00e9es. Qu&rsquo;un enregistrement exp\u00e9rimental contienne 1 %, 5 % ou 20 % de valeurs hautement divergentes dues \u00e0 des perturbations ext\u00e9rieures, l&rsquo;estimation de la dispersion calcul\u00e9e par le MAD demeure remarquablement stable et repr\u00e9sentative de la population source sous-jacente.<\/p>\n<p>Cette propri\u00e9t\u00e9 est d\u00e9terminante pour caract\u00e9riser la variabilit\u00e9 interindividuelle r\u00e9elle. Dans de multiples branches de la psychologie diff\u00e9rentielle, la variance est interpr\u00e9t\u00e9e comme le reflet des disparit\u00e9s cognitives ou affectives stables existant entre les sujets d&rsquo;un m\u00eame groupe d\u00e9mographique. Or, si cette variance est artificiellement induite par deux participants dont les r\u00e9ponses ont \u00e9t\u00e9 fauss\u00e9es par l&rsquo;incompr\u00e9hension des consignes, l&rsquo;interpr\u00e9tation th\u00e9orique qui en r\u00e9sulte est radicalement erron\u00e9e. En utilisant le MAD, le chercheur s&rsquo;assure que l&rsquo;estimation de la variabilit\u00e9 refl\u00e8te la dispersion du bloc central de la population typique, isolant la variance psychologique l\u00e9gitime du bruit observationnel al\u00e9atoire.<\/p>\n<h3>2.2 Efficacit\u00e9 asymptotique et hypoth\u00e8ses distributionnelles<\/h3>\n<p>En d\u00e9pit de sa robustesse incontestable, le MAD n&rsquo;est pas exempt de compromis statistiques, dont le plus notable r\u00e9side dans son efficacit\u00e9 asymptotique relative (<em>asymptotic relative efficiency<\/em>, ARE). L&rsquo;efficacit\u00e9 relative d&rsquo;un estimateur <em>T<\/em>\u2081 par rapport \u00e0 un estimateur de r\u00e9f\u00e9rence <em>T<\/em>\u2082 mesure le ratio inverse de leurs variances asymptotiques sous une distribution hypoth\u00e9tique donn\u00e9e. Si l&rsquo;on pose l&rsquo;hypoth\u00e8se d&rsquo;une distribution gaussienne stricte et absolue \u2014 condition id\u00e9ale dans laquelle l&rsquo;ensemble de la population ob\u00e9it sans la moindre d\u00e9viation \u00e0 une loi normale <em>N(\u03bc, \u03c3\u00b2)<\/em> \u2014, l&rsquo;\u00e9cart-type classique constitue l&rsquo;estimateur sans biais de variance minimale (UMVU). Sous cette hypoth\u00e8se id\u00e9ale, l&rsquo;efficacit\u00e9 asymptotique du MAD normalis\u00e9 n&rsquo;est que de 36,7 % (approximativement 0,3675) par rapport \u00e0 l&rsquo;\u00e9cart-type.<\/p>\n<p>Ce co\u00fbt en efficacit\u00e9 statistique signifie que, si la distribution sous-jacente est parfaitement gaussienne, il faudrait th\u00e9oriquement un \u00e9chantillon d&rsquo;environ 272 observations trait\u00e9 avec le MAD pour atteindre la m\u00eame pr\u00e9cision d&rsquo;estimation de la variance qu&rsquo;un \u00e9chantillon de 100 observations trait\u00e9 avec l&rsquo;\u00e9cart-type conventionnel. Cette perte d&rsquo;efficacit\u00e9 apparente a longtemps constitu\u00e9 le principal argument formul\u00e9 par l&rsquo;\u00e9cole param\u00e9trique classique pour justifier l&rsquo;usage exclusif de la variance. Toutefois, cette critique s&rsquo;effondre d\u00e8s lors que les hypoth\u00e8ses d&rsquo;id\u00e9alit\u00e9 distributionnelle s&rsquo;\u00e9cartent, m\u00eame de fa\u00e7on infinit\u00e9simale, de la normalit\u00e9 stricte.<\/p>\n<p>Dans un mod\u00e8le de m\u00e9lange de distributions (<em>contaminated normal model<\/em>), o\u00f9 une population est compos\u00e9e \u00e0 95 % d&rsquo;une loi normale standard et \u00e0 5 % d&rsquo;une loi normale de variance d\u00e9cupl\u00e9e (repr\u00e9sentant une l\u00e9g\u00e8re contamination), la variance empirique classique voit son efficacit\u00e9 s&rsquo;effondrer dramatiquement. Dans ce contexte, l&rsquo;efficacit\u00e9 relative du MAD d\u00e9passe instantan\u00e9ment celle de l&rsquo;\u00e9cart-type. Face aux distributions \u00e0 queues \u00e9paisses, telles que les lois de Student \u00e0 faibles degr\u00e9s de libert\u00e9, les lois logistiques ou les lois de Cauchy \u2014 ces derni\u00e8res poss\u00e9dant une variance th\u00e9orique infinie ou ind\u00e9finie \u2014, l&rsquo;\u00e9cart-type devient totalement inop\u00e9rant et diverge, tandis que le MAD converge avec une robustesse exemplaire vers une valeur stable refl\u00e9tant l&rsquo;\u00e9talement de l&rsquo;interquartile. Dans la recherche comportementale contemporaine, o\u00f9 la normalit\u00e9 pure rel\u00e8ve du mythe m\u00e9thodologique plut\u00f4t que de la r\u00e9alit\u00e9 empirique, le compromis penche de mani\u00e8re \u00e9crasante en faveur de l&rsquo;adoption du MAD au d\u00e9triment de l&rsquo;\u00e9cart-type.<\/p>\n<h2>3. Configuration de l&rsquo;environnement Python pour le calcul statistique robuste<\/h2>\n<h3>3.1 \u00c9cosyst\u00e8me scientifique et installation des d\u00e9pendances<\/h3>\n<p>L&rsquo;impl\u00e9mentation op\u00e9rationnelle de pipelines statistiques robustes en Python requiert une infrastructure logicielle structur\u00e9e, capable de conjuguer la haute performance num\u00e9rique avec la tra\u00e7abilit\u00e9 des versions. Pour \u00e9viter tout conflit de d\u00e9pendances susceptible d&rsquo;alt\u00e9rer la reproductibilit\u00e9 des calculs psychom\u00e9triques, il est imp\u00e9ratif de travailler au sein d&rsquo;un environnement virtuel d\u00e9di\u00e9, g\u00e9n\u00e9r\u00e9 via <code>virtualenv<\/code> ou le gestionnaire de paquets <code>Conda<\/code>. Cette s\u00e9paration herm\u00e9tique garantit que les algorithmes d&rsquo;estimation de quantiles sous-jacents demeurent fig\u00e9s et auditables tout au long du cycle de vie du projet de recherche.<\/p>\n<p>Le socle calculatoire repose sur quatre biblioth\u00e8ques scientifiques majeures :<\/p>\n<ul>\n<li><strong>NumPy<\/strong> : La biblioth\u00e8que fondamentale pour le calcul tensoriel et vectoris\u00e9 en Python. Elle fournit les structures de tableaux \u00e0 <em>N<\/em> dimensions (<code>ndarray<\/code>) optimis\u00e9es en m\u00e9moire vive et impl\u00e9mente les algorithmes de tri rapide indispensables au calcul ordonn\u00e9 des m\u00e9dianes par s\u00e9lection de quantiles.<\/li>\n<li><strong>SciPy<\/strong> : Sp\u00e9cifiquement son sous-module <code>scipy.stats<\/code>, qui renferme l&rsquo;impl\u00e9mentation native <code>median_abs_deviation<\/code>. SciPy repose sur des extensions compil\u00e9es en C et Fortran, garantissant des temps de calcul minimaux sur les cohortes massives tout en offrant une flexibilit\u00e9 \u00e9tendue via des param\u00e8tres de normalisation avanc\u00e9s.<\/li>\n<li><strong>Pandas<\/strong> : L&rsquo;outil central pour la manipulation de donn\u00e9es h\u00e9t\u00e9rog\u00e8nes structur\u00e9es en <code>DataFrame<\/code>. Il permet de mapper les calculs robustes directement sur des variables d&rsquo;int\u00e9r\u00eats cat\u00e9gorielles ou continues, tout en assurant l&rsquo;interop\u00e9rabilit\u00e9 avec les formats de stockage standardis\u00e9s (CSV, Parquet, Feather).<\/li>\n<li><strong>Statsmodels<\/strong> : La suite logicielle d\u00e9di\u00e9e \u00e0 la mod\u00e9lisation \u00e9conom\u00e9trique et biostatistique. Son sous-module <code>statsmodels.robust<\/code> met \u00e0 disposition des estimateurs alternatifs de dispersion (notamment <code>robust.scale.mad<\/code>) ainsi que les m\u00e9thodes M-estimateurs associ\u00e9es pour la r\u00e9gression robuste.<\/li>\n<\/ul>\n<p>L&rsquo;approvisionnement de cet environnement scientifique peut \u00eatre standardis\u00e9 au moyen d&rsquo;un fichier d\u00e9claratif de d\u00e9pendances ou d&rsquo;une commande terminale unifi\u00e9e :<\/p>\n<p><code>pip install numpy scipy pandas statsmodels<\/code><\/p>\n<p>Il demeure hautement recommand\u00e9 de documenter les empreintes cryptographiques des paquets install\u00e9s ainsi que leurs num\u00e9ros de version respectifs au moyen de la directive <code>pip freeze &gt; requirements.txt<\/code>. Les variations algorithmiques mineures introduites entre certaines versions mineures de SciPy (notamment le renommage de fonctions ou la refonte de la gestion des valeurs manquantes) pourraient introduire des instabilit\u00e9s si l&rsquo;environnement de production computationnelle n&rsquo;\u00e9tait pas rigoureusement document\u00e9.<\/p>\n<h3>3.2 Structuration et typage des structures de donn\u00e9es en psychologie<\/h3>\n<p>En psychom\u00e9trie exp\u00e9rimentale, les donn\u00e9es brutes proviennent typiquement de protocoles informatis\u00e9s g\u00e9n\u00e9rant des millions de lignes de logs comportementaux. Une attention critique doit \u00eatre accord\u00e9e au typage des variables lors de leur instanciation dans les structures tabulaires de Python. Les variables ind\u00e9pendantes inter-sujets (identifiant du sujet, groupe diagnostique, cohorte clinique, modalit\u00e9 exp\u00e9rimentale) doivent \u00eatre formellement encapsul\u00e9es sous forme de cat\u00e9gories ou d&rsquo;objets immuables, tandis que les variables d\u00e9pendantes continues (latence motrice en millisecondes, conductance cutan\u00e9e, variations du diam\u00e8tre pupillaire) doivent \u00eatre express\u00e9ment allou\u00e9es en nombres flottants \u00e0 virgule fixe ou double pr\u00e9cision (<code>float64<\/code>).<\/p>\n<p>L&rsquo;omission de cette \u00e9tape de v\u00e9rification du typage peut g\u00e9n\u00e9rer des comportements ind\u00e9sirables lors du calcul de m\u00e9dianes empiriques. Lorsqu&rsquo;une colonne num\u00e9rique contient des cha\u00eenes de caract\u00e8res r\u00e9siduelles (issues par exemple de cha\u00eenes d&rsquo;erreurs logu\u00e9es par l&rsquo;interface de test telles que \u00ab TIMEOUT \u00bb ou \u00ab VOID \u00bb), la structure de donn\u00e9es bascule vers le type g\u00e9n\u00e9rique <code>object<\/code>. Dans cette situation, les calculs vectoriels de NumPy \u00e9chouent avec une exception de typage, ou, pire encore, appliquent des comparaisons lexicographiques arbitraires plut\u00f4t que des comparaisons num\u00e9riques ordonn\u00e9es. Une \u00e9tape de coercition stricte est par cons\u00e9quent indispensable pr\u00e9alablement \u00e0 tout calcul robuste :<\/p>\n<p><code>import pandas as pd<br \/>df['temps_reaction'] = pd.to_numeric(df['temps_reaction'], errors='coerce')<\/code><\/p>\n<p>Pour les devis longitudinaux ou les donn\u00e9es acquises en continu dans le cadre d&rsquo;\u00e9valuations \u00e9cologiques momentan\u00e9es (<em>Ecological Momentary Assessment<\/em>, EMA), la structuration sous forme de s\u00e9ries temporelles index\u00e9es par horodatage (<code>DatetimeIndex<\/code>) s&rsquo;av\u00e8re capitale. La variabilit\u00e9 intra-individuelle des sympt\u00f4mes anxieux ou de la r\u00e9gulation de l&rsquo;humeur au cours d&rsquo;une journ\u00e9e peut \u00eatre \u00e9valu\u00e9e via des fen\u00eatres temporelles glissantes. Garantir la r\u00e9gularit\u00e9 du pas temporel et le r\u00e9\u00e9chantillonnage uniforme des s\u00e9ries conditionne l&rsquo;exactitude des calculs ult\u00e9rieurs de dispersion robuste.<\/p>\n<h2>4. Calcul de base de l&rsquo;\u00e9cart absolu m\u00e9dian avec NumPy natif<\/h2>\n<h3>4.1 Impl\u00e9mentation algorithmique \u00e9tape par \u00e9tape \u00e0 partir de la formule brute<\/h3>\n<p>Afin de d\u00e9mystifier l&rsquo;ing\u00e9nierie logicielle sous-jacente aux progiciels statistiques, il est hautement instructif de d\u00e9composer et d&rsquo;impl\u00e9menter l&rsquo;algorithme du MAD \u00e0 partir de la biblioth\u00e8que fondamentale <a rel=\"noopener noreferrer\" href=\"https:\/\/numpy.org\/\">NumPy<\/a>. L&rsquo;op\u00e9ration repose sur un processus en trois phases rigoureusement s\u00e9quenc\u00e9es, exploitant pleinement la diffusion vectorielle (<em>broadcasting<\/em>) pour s&rsquo;\u00e9manciper des boucles it\u00e9ratives interpr\u00e9t\u00e9es, particuli\u00e8rement lentes en Python.<\/p>\n<p>Consid\u00e9rons la premi\u00e8re \u00e9tape computationnelle : l&rsquo;identification du centre de gravit\u00e9 non param\u00e9trique de l&rsquo;\u00e9chantillon. Soit un vecteur <code>data<\/code> stock\u00e9 sous la forme d&rsquo;un tableau unidimensionnel <code>numpy.ndarray<\/code>. La m\u00e9diane centrale est extraite par la m\u00e9thode <code>numpy.median(data)<\/code>. Cette fonction effectue un partitionnement de l&rsquo;\u00e9chantillon au moyen d&rsquo;algorithmes de s\u00e9lection rapide (d\u00e9riv\u00e9s de <em>Introselect<\/em>), \u00e9vitant le tri complet de l&rsquo;espace vectoriel lorsque cela est possible, pour isoler en complexit\u00e9 temporelle <em>O(n)<\/em> la valeur m\u00e9diane centrale que nous d\u00e9signerons par <em>M<\/em>.<\/p>\n<p>La seconde phase consiste \u00e0 g\u00e9n\u00e9rer le vecteur des d\u00e9viations absolues. Gr\u00e2ce au m\u00e9canisme de diffusion arithm\u00e9tique de NumPy, l&rsquo;expression vectoris\u00e9e <code>numpy.abs(data - M)<\/code> applique la soustraction du scalaire <em>M<\/em> \u00e0 chacun des <em>n<\/em> \u00e9l\u00e9ments du tableau originel, puis en extrait la magnitude scalaire sans signe via l&rsquo;op\u00e9rateur de valeur absolue. Cette op\u00e9ration g\u00e9n\u00e8re un nouveau vecteur de m\u00eame dimensionnalit\u00e9 que le vecteur d&rsquo;entr\u00e9e, encapsulant les distances euclidiennes unidimensionnelles s\u00e9parant chaque individu de la tendance centrale robuste.<\/p>\n<p>La troisi\u00e8me \u00e9tape applique \u00e0 nouveau l&rsquo;op\u00e9rateur de m\u00e9diane sur ce vecteur d&rsquo;\u00e9carts absolus transform\u00e9s. Le r\u00e9sultat scalaire retourn\u00e9 constitue l&rsquo;\u00e9cart absolu m\u00e9dian brut. L&rsquo;encapsulation de cette logique au sein d&rsquo;une fonction Python g\u00e9n\u00e9rique et modulaire, respectant scrupuleusement les principes d&rsquo;ing\u00e9nierie logicielle DRY (<em>Don&rsquo;t Repeat Yourself<\/em>), se mat\u00e9rialise de la mani\u00e8re suivante :<\/p>\n<p><code>def calculer_mad_brut(donnees):<br \/>&nbsp;&nbsp;&nbsp;&nbsp;import numpy as np<br \/>&nbsp;&nbsp;&nbsp;&nbsp;tableau = np.asarray(donnees)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;mediane_centrale = np.median(tableau)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;ecarts_absolus = np.abs(tableau - mediane_centrale)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;return np.median(ecarts_absolus)<\/code><\/p>\n<p>Cette impl\u00e9mentation native permet d&rsquo;appr\u00e9cier la simplicit\u00e9 conceptuelle du MAD tout en fournissant une base algorithmique transparente, libre de toute bo\u00eete noire math\u00e9matique.<\/p>\n<h3>4.2 Consid\u00e9rations relatives \u00e0 la gestion de la parit\u00e9 de l&rsquo;\u00e9chantillon<\/h3>\n<p>Une nuance m\u00e9thodologique d&rsquo;importance survient lorsque la taille de l&rsquo;\u00e9chantillon <em>n<\/em> est un nombre pair. Par d\u00e9finition, la m\u00e9diane d&rsquo;un ensemble de cardinal pair ne correspond pas \u00e0 une observation physique unique pr\u00e9sente dans le jeu de donn\u00e9es, mais doit \u00eatre interpol\u00e9e entre les deux observations d&rsquo;ordre central situ\u00e9es aux rangs <em>k<\/em> = <em>n<\/em>\/2 et <em>k<\/em>+1 apr\u00e8s un tri ascendant. Par d\u00e9faut, NumPy met en \u0153uvre une interpolation lin\u00e9aire standard, consistant \u00e0 calculer la moyenne arithm\u00e9tique de ces deux points pivots centraux.<\/p>\n<p>Toutefois, dans la fonction <code>numpy.median<\/code> comme dans la fonction plus g\u00e9n\u00e9rale <code>numpy.percentile<\/code>, le comportement de l&rsquo;interpolateur peut \u00eatre explicitement param\u00e9tr\u00e9 via l&rsquo;argument <code>method<\/code> (auparavant d\u00e9sign\u00e9 sous le terme <code>interpolation<\/code> dans les versions ant\u00e9rieures de NumPy). Les options disponibles incluent notamment l&rsquo;interpolation lin\u00e9aire (<code>'linear'<\/code>), le choix de la borne inf\u00e9rieure (<code>'lower'<\/code>), le choix de la borne sup\u00e9rieure (<code>'higher'<\/code>), le point le plus proche (<code>'nearest'<\/code>) ou la moyenne m\u00e9diane discr\u00e8te (<code>'midpoint'<\/code>).<\/p>\n<p>En psychom\u00e9trie, le choix de cette m\u00e9thode d&rsquo;interpolation n&rsquo;est pas anodin lorsque l&rsquo;on manipule des \u00e9chelles discr\u00e8tes ou semi-continues, telles que les inventaires de personnalit\u00e9 de Likert gradu\u00e9s de 1 \u00e0 5 ou de 1 \u00e0 7. L&rsquo;application d&rsquo;une interpolation lin\u00e9aire sur une \u00e9chelle ordinale peut produire une m\u00e9diane centrale fractionnaire (par exemple 3,5). Lors de la seconde \u00e9tape de soustraction vectorielle, tous les \u00e9carts absolus deviennent des d\u00e9cimales se terminant par ,5, alt\u00e9rant ainsi la nature strictement enti\u00e8re de l&rsquo;\u00e9chelle originelle. Si le cadre \u00e9pist\u00e9mologique du chercheur exige que les indices de tendance centrale et de dispersion demeurent ancr\u00e9s dans l&rsquo;espace discret des r\u00e9ponses observables, il sera pr\u00e9f\u00e9rable de sp\u00e9cifier une m\u00e9thode d&rsquo;interpolation discr\u00e8te (par exemple <code>method='nearest'<\/code>). En revanche, dans le cadre de variables chronom\u00e9triques continues \u00e0 haute r\u00e9solution temporelle, l&rsquo;interpolation lin\u00e9aire conventionnelle (<code>'linear'<\/code>) doit \u00eatre maintenue par souci d&rsquo;exactitude asymptotique.<\/p>\n<h2>5. Utilisation du module statsmodels.robust pour le calcul standardis\u00e9<\/h2>\n<h3>5.1 Syntaxe fondamentale et structure de la fonction robust.mad<\/h3>\n<p>Bien que l&rsquo;impl\u00e9mentation manuelle via NumPy offre une excellente valeur p\u00e9dagogique, la pratique de la recherche empirique privil\u00e9gie l&rsquo;utilisation de biblioth\u00e8ques \u00e9prouv\u00e9es et optimis\u00e9es. L&rsquo;\u00e9cosyst\u00e8me <a rel=\"noopener noreferrer\" href=\"https:\/\/www.statsmodels.org\/\">Statsmodels<\/a> propose \u00e0 cet \u00e9gard une impl\u00e9mentation hautement standardis\u00e9e au sein de son sous-module d&rsquo;analyse robuste, accessible via la fonction <code>statsmodels.robust.scale.mad<\/code>.<\/p>\n<p>L&rsquo;utilisation fondamentale de cette fonction s&rsquo;illustre par une syntaxe concise et \u00e9l\u00e9gante :<\/p>\n<p><code>from statsmodels.robust import scale<br \/>import numpy as np<\/p>\n<p>observations = np.array([450, 465, 472, 480, 495, 510, 525, 1850])<br \/>dispersion_robuste = scale.mad(observations)<\/code><\/p>\n<p>Cette fonction accepte une grande diversit\u00e9 d&rsquo;objets en entr\u00e9e, qu&rsquo;il s&rsquo;agisse de listes Python scalaires conventionnelles, de vecteurs unidimensionnels <code>numpy.ndarray<\/code>, ou encore de colonnes index\u00e9es <code>pandas.Series<\/code>. Contrairement \u00e0 l&rsquo;impl\u00e9mentation NumPy basique d\u00e9taill\u00e9e \u00e0 la section pr\u00e9c\u00e9dente, la sortie num\u00e9rique produite par d\u00e9faut par <code>scale.mad<\/code> ne correspond pas au MAD brut non param\u00e9trique, mais incorpore nativement une constante d&rsquo;ajustement destin\u00e9e \u00e0 l&rsquo;aligner sur l&rsquo;\u00e9cart-type d&rsquo;une distribution normale. La valeur retourn\u00e9e dans l&rsquo;exemple ci-dessus traduit donc directement une estimation robuste de l&rsquo;\u00e9cart-type asymptotique du processus g\u00e9n\u00e9rateur sous-jacent, immunis\u00e9e contre l&rsquo;impact d\u00e9stabilisateur de l&rsquo;observation atypique de 1850 millisecondes.<\/p>\n<h3>5.2 Analyse du code source sous-jacent et m\u00e9canismes internes<\/h3>\n<p>L&rsquo;examen du code source sous-jacent \u00e0 <code>statsmodels.robust.scale.mad<\/code> met en lumi\u00e8re des choix d&rsquo;ing\u00e9nierie logicielle particuli\u00e8rement rigoureux. La signature formelle de la fonction se pr\u00e9sente ainsi :<\/p>\n<p><code>statsmodels.robust.scale.mad(a, c=None, axis=0, center=np.median)<\/code><\/p>\n<p>Plusieurs m\u00e9canismes internes m\u00e9ritent d&rsquo;\u00eatre explicit\u00e9s pour une utilisation avanc\u00e9e :<\/p>\n<ul>\n<li><strong>Le param\u00e8tre <code>center<\/code><\/strong> : Par d\u00e9faut, la fonction utilise la m\u00e9diane conventionnelle (<code>np.median<\/code>) pour d\u00e9finir le point d&rsquo;ancrage central. Toutefois, l&rsquo;architecture autorise l&rsquo;injection de toute autre fonction de localisation univari\u00e9e. Un chercheur souhaitant centrer la dispersion autour de la moyenne tronqu\u00e9e (<em>trimmed mean<\/em>) ou d&rsquo;un M-estimateur de localisation de Huber peut directement passer cette fonction personnalis\u00e9e comme argument \u00e0 <code>center<\/code>.<\/li>\n<li><strong>La gestion des axes multidimensionnels (<code>axis<\/code>)<\/strong> : \u00c0 l&rsquo;instar des primitives vectoris\u00e9es de NumPy, l&rsquo;argument <code>axis<\/code> gouverne la direction de r\u00e9duction du calcul tensoriel. Face \u00e0 une matrice de donn\u00e9es exp\u00e9rimentales de dimension <em>M<\/em> \u00d7 <em>N<\/em> (o\u00f9 les lignes repr\u00e9sentent les participants et les colonnes diff\u00e9rentes conditions exp\u00e9rimentales r\u00e9p\u00e9t\u00e9es), la sp\u00e9cification de <code>axis=0<\/code> calcule le MAD le long de chaque colonne de mani\u00e8re ind\u00e9pendante et simultan\u00e9e. Cette op\u00e9ration \u00e9vite toute it\u00e9ration manuelle et maximise l&rsquo;exploitation des registres SIMD (<em>Single Instruction, Multiple Data<\/em>) des processeurs contemporains.<\/li>\n<li><strong>La gestion interne de l&rsquo;\u00e9chelle (<code>c<\/code>)<\/strong> : Dans le code interne de Statsmodels, si la variable <code>c<\/code> est laiss\u00e9e \u00e0 sa valeur par d\u00e9faut <code>None<\/code>, la biblioth\u00e8que proc\u00e8de \u00e0 une assignation automatique conditionnelle bas\u00e9e sur la fonction de r\u00e9partition inverse de la loi normale standard.<\/li>\n<\/ul>\n<p>Cette architecture conf\u00e8re \u00e0 Statsmodels une polyvalence remarquable pour traiter aussi bien de micro-\u00e9chantillons cliniques que de vastes matrices de variabilit\u00e9 en psychologie computationnelle.<\/p>\n<h2>6. Le facteur d&rsquo;\u00e9chelle et l&rsquo;ajustement \u00e0 la distribution normale<\/h2>\n<h3>6.1 Fondement math\u00e9matique du facteur de normalisation c = 1 \/ \u03a6\u207b\u00b9(3\/4)<\/h3>\n<p>L&rsquo;un des aspects les plus cruciaux et fr\u00e9quemment mal compris de l&rsquo;\u00e9cart absolu m\u00e9dian r\u00e9side dans la n\u00e9cessit\u00e9 d&rsquo;appliquer un coefficient multiplicatif de correction, commun\u00e9ment appel\u00e9 facteur d&rsquo;\u00e9chelle ou constante de normalisation (not\u00e9 couramment <em>b<\/em> ou <em>k<\/em> dans la litt\u00e9rature statistique, et d\u00e9sign\u00e9 par 1\/<em>c<\/em> dans certaines biblioth\u00e8ques informatiques). Si l&rsquo;on calcule le MAD brut d&rsquo;une population infinie ob\u00e9issant rigoureusement \u00e0 une loi normale standard de moyenne nulle et de variance unitaire, not\u00e9e <em>Z ~ N(0, 1)<\/em>, la valeur obtenue n&rsquo;est pas \u00e9gale \u00e0 1,0.<\/p>\n<p>Analysons la d\u00e9monstration analytique sous-jacente. Pour une variable normale standard <em>Z<\/em>, la m\u00e9diane centrale de la distribution est \u00e9gale \u00e0 z\u00e9ro en raison de la parfaite sym\u00e9trie de la densit\u00e9 de probabilit\u00e9 gaussienne autour de son esp\u00e9rance. Par cons\u00e9quent, les \u00e9carts absolus se r\u00e9duisent simplement \u00e0 la valeur absolue de la variable : |<em>Z<\/em> &#8211; 0| = |<em>Z<\/em>|. Le MAD th\u00e9orique de cette loi correspond donc au r\u00e9el positif <em>m<\/em> tel que l&rsquo;int\u00e9grale de probabilit\u00e9 de la valeur absolue de <em>Z<\/em> soit \u00e9quitablement partitionn\u00e9e \u00e0 50 % :<\/p>\n<p><strong>P(|Z| \u2264 m) = 0,50<\/strong><\/p>\n<p>Par les propri\u00e9t\u00e9s fondamentales de la sym\u00e9trie bilat\u00e9rale de la loi normale, cette \u00e9quation est strictement \u00e9quivalente \u00e0 :<\/p>\n<p><strong>P(-m \u2264 Z \u2264 m) = 0,50<\/strong>, ce qui implique directement que <strong>P(Z \u2264 m) &#8211; P(Z \u2264 -m) = 0,50<\/strong>.<\/p>\n<p>En exploitant la relation de sym\u00e9trie de la fonction de r\u00e9partition gaussienne <em>\u03a6(-m) = 1 &#8211; \u03a6(m)<\/em>, l&rsquo;\u00e9galit\u00e9 se reformule selon l&rsquo;alg\u00e8bre \u00e9l\u00e9mentaire :<\/p>\n<p><strong>\u03a6(m) &#8211; (1 &#8211; \u03a6(m)) = 0,50 \u21d4 2\u03a6(m) &#8211; 1 = 0,50 \u21d4 2\u03a6(m) = 1,50 \u21d4 \u03a6(m) = 0,75<\/strong><\/p>\n<p>Il en d\u00e9coule sans \u00e9quivoque que la valeur du MAD th\u00e9orique d&rsquo;une loi normale centr\u00e9e r\u00e9duite co\u00efncide exactement avec le 75\u1d49 percentile (troisi\u00e8me quartile) de ladite distribution. En inversant la fonction de r\u00e9partition cumulative normale <em>\u03a6<\/em>, nous obtenons la valeur exacte :<\/p>\n<p><strong>m = \u03a6\u207b\u00b9(0,75) \u2248 0,6744897501960817<\/strong><\/p>\n<p>Pour qu&rsquo;un estimateur de dispersion robuste soit asymptotiquement sans biais et conceptuellement interchangeable avec l&rsquo;\u00e9cart-type traditionnel <em>\u03c3<\/em> lorsque les donn\u00e9es proviennent d&rsquo;une distribution normale, il est n\u00e9cessaire de diviser le MAD empirique calcul\u00e9 par cette constante <em>m<\/em>, ou, ce qui revient strictement au m\u00eame, de le multiplier par son inverse arithm\u00e9tique :<\/p>\n<p><strong>k = 1 \/ \u03a6\u207b\u00b9(0,75) = 1 \/ 0,6744897501960817 \u2248 1,482602218505602<\/strong><\/p>\n<p>Ce multiplicateur d&rsquo;\u00e9chelle, universellement arrondi \u00e0 <strong>1,4826<\/strong>, constitue le pont math\u00e9matique fondamental permettant d&rsquo;exprimer la dispersion non param\u00e9trique du MAD dans la m\u00eame unit\u00e9 m\u00e9trique que l&rsquo;\u00e9cart-type d&rsquo;une population gaussienne.<\/p>\n<h3>6.2 Param\u00e9trage pratique du facteur d&rsquo;\u00e9chelle dans Python<\/h3>\n<p>Dans la pratique de la programmation scientifique sous Python, la divergence d&rsquo;impl\u00e9mentation de cette constante entre les diff\u00e9rentes biblioth\u00e8ques constitue un pi\u00e8ge r\u00e9current pour les chercheurs non avertis. Il importe de ma\u00eetriser la fa\u00e7on dont NumPy, Statsmodels et SciPy articulent ce param\u00e8tre d&rsquo;\u00e9chelle.<\/p>\n<p>Dans la fonction standard <code>scipy.stats.median_abs_deviation<\/code>, introduite pour remplacer l&rsquo;ancienne m\u00e9thode d\u00e9pr\u00e9ci\u00e9e, l&rsquo;argument gouvernant cette normalisation se nomme <code>scale<\/code>. Par d\u00e9faut, SciPy adopte une position non param\u00e9trique stricte et fixe <code>scale=1.0<\/code> (ou <code>scale='normal'<\/code> selon les versions). Pour obtenir le MAD corrig\u00e9 pour la normalit\u00e9 (asymptotiquement \u00e9quivalent \u00e0 l&rsquo;\u00e9cart-type), le chercheur doit express\u00e9ment passer la cha\u00eene de caract\u00e8res d\u00e9di\u00e9e :<\/p>\n<p><code>from scipy import stats<br \/>mad_normalise = stats.median_abs_deviation(donnees, scale='normal')<\/code><\/p>\n<p>Lorsque le param\u00e8tre <code>scale='normal'<\/code> est invoqu\u00e9, SciPy proc\u00e8de en coulisses \u00e0 la division par <code>stats.norm.ppf(0.75)<\/code>, garantissant une pr\u00e9cision num\u00e9rique optimale sur l&rsquo;architecture flottante 64 bits. Si l&rsquo;on d\u00e9sire obtenir le MAD pur brut sans ajustement distributionnel, il convient de forcer <code>scale=1.0<\/code>.<\/p>\n<p>\u00c0 l&rsquo;inverse, dans le module <code>statsmodels.robust.scale.mad<\/code>, la convention est diam\u00e9tralement oppos\u00e9e : le facteur d&rsquo;ajustement est activ\u00e9 par d\u00e9faut ! L&rsquo;argument de la fonction est libell\u00e9 sous le nom de variable <code>c<\/code>, o\u00f9 <em>c<\/em> repr\u00e9sente le diviseur. Par d\u00e9faut, Statsmodels d\u00e9finit <code>c = stats.norm.ppf(0.75)<\/code> (soit approximativement 0,6745), ce qui \u00e9quivaut \u00e0 multiplier par 1,4826. Si l&rsquo;analyste souhaite annuler cette normalisation pour obtenir le MAD brut de l&rsquo;\u00e9chantillon, il doit explicitement d\u00e9clarer <code>c=1<\/code> :<\/p>\n<p><code>mad_brut = scale.mad(donnees, c=1.0)<\/code><\/p>\n<p>L&rsquo;omission d&rsquo;une documentation claire de ce param\u00e8tre dans un protocole d&rsquo;analyse comportementale conduit in\u00e9vitablement \u00e0 des \u00e9carts d&rsquo;environ 48 % dans l&rsquo;estimation de la dispersion, faussant radicalement toute tentative de comparaison inter-laboratoires ou d&rsquo;int\u00e9gration m\u00e9ta-analytique.<\/p>\n<p>En outre, ce facteur d&rsquo;\u00e9chelle peut \u00eatre th\u00e9oriquement recalcul\u00e9 pour d&rsquo;autres lois de probabilit\u00e9. Si l&rsquo;on postule a priori que les temps de r\u00e9ponse ob\u00e9issent \u00e0 une loi de Laplace (distribution doublement exponentielle, fr\u00e9quente dans les processus cognitifs avec accumulation rapide d&rsquo;information), la constante de normalisation ne vaut plus 1,4826 mais <em>1 \/ ln(2) \u2248 1,4427<\/em>. Pour une loi de Student \u00e0 5 degr\u00e9s de libert\u00e9, mod\u00e9lisant des queues plus \u00e9paisses, le facteur doit \u00eatre r\u00e9ajust\u00e9 aux quantiles sp\u00e9cifiques de cette distribution pour conserver son absence de biais asymptotique.<\/p>\n<h2>7. Calcul vectoris\u00e9 sur des donn\u00e9es psychologiques avec Pandas<\/h2>\n<h3>7.1 Int\u00e9gration du MAD dans les DataFrames et s\u00e9ries temporelles<\/h3>\n<p>L&rsquo;organisation standard des donn\u00e9es de recherche comportementale se mat\u00e9rialise sous la forme de matrices tabulaires g\u00e9r\u00e9es par la biblioth\u00e8que <a rel=\"noopener noreferrer\" href=\"https:\/\/pandas.pydata.org\/\">Pandas<\/a>, o\u00f9 chaque ligne consigne un essai exp\u00e9rimental ou une passation clinique, et chaque colonne correspond \u00e0 une variable sp\u00e9cifique. Bien que Pandas int\u00e8gre des m\u00e9thodes natives d&rsquo;agr\u00e9gation statistique pour les m\u00e9triques classiques (telles que <code>df.mean()<\/code>, <code>df.std()<\/code> ou <code>df.median()<\/code>), il ne dispose pas d&rsquo;une m\u00e9thode unifi\u00e9e native <code>df.mad()<\/code> dans ses versions modernes \u2014 l&rsquo;ancienne fonction \u00e9ponyme ayant \u00e9t\u00e9 d\u00e9pr\u00e9ci\u00e9e puis totalement supprim\u00e9e en raison de son ambigu\u00eft\u00e9 s\u00e9mantique (elle calculait historiquement l&rsquo;\u00e9cart absolu moyen, et non m\u00e9dian !).<\/p>\n<p>Pour int\u00e9grer le v\u00e9ritable \u00e9cart absolu m\u00e9dian dans un pipeline Pandas sans sacrifier la performance de vectorisation, la strat\u00e9gie idoine consiste \u00e0 combiner la puissance calculatoire de <code>scipy.stats.median_abs_deviation<\/code> avec la m\u00e9thode d&rsquo;extension ou les fonctions fonctionnelles de Pandas. Consid\u00e9rons une colonne repr\u00e9sentative contenant des scores d&rsquo;inventaire psychom\u00e9trique :<\/p>\n<p><code>import pandas as pd<br \/>from scipy import stats<\/p>\n<p>df = pd.DataFrame({'score_anxiete': [12, 14, 15, 13, 14, 16, 12, 48, 14, 15]})<br \/>mad_score = stats.median_abs_deviation(df['score_anxiete'], scale='normal')<\/code><\/p>\n<p>Lorsqu&rsquo;il s&rsquo;agit d&rsquo;appliquer cette m\u00e9trique robuste sur l&rsquo;ensemble des colonnes num\u00e9riques d&rsquo;un jeu de donn\u00e9es complexe, l&rsquo;utilisation de la m\u00e9thode <code>apply<\/code> constitue l&rsquo;approche idiomatique la plus lisible :<\/p>\n<p><code>colonnes_numeriques = df.select_dtypes(include=['float64', 'int64'])<br \/>indices_dispersion = colonnes_numeriques.apply(stats.median_abs_deviation, scale='normal')<\/code><\/p>\n<p>Cette approche vectoris\u00e9e garantit que le code demeure concis et maintenable, tout en d\u00e9l\u00e9guant l&rsquo;ex\u00e9cution algorithmique sous-jacente aux routines de bas niveau hautement optimis\u00e9es de SciPy.<\/p>\n<h3>7.2 Gestion des sous-groupes cliniques et structures hi\u00e9rarchiques<\/h3>\n<p>En psychologie exp\u00e9rimentale et en neurobiologie comportementale, les plans factoriels combinent fr\u00e9quemment des facteurs inter-sujets (par exemple, un groupe exp\u00e9rimental recevant une th\u00e9rapie cognitive et un groupe t\u00e9moin plac\u00e9 sur liste d&rsquo;attente) et des facteurs intra-sujets (mesures r\u00e9p\u00e9t\u00e9es avant traitement, post-traitement et lors du suivi longitudinal \u00e0 6 mois). L&rsquo;analyse de la dispersion ne peut \u00eatre r\u00e9alis\u00e9e de mani\u00e8re monolithique sur l&rsquo;ensemble de la table, mais doit \u00eatre conditionn\u00e9e selon les strates exp\u00e9rimentales.<\/p>\n<p>Pandas offre une structure d&rsquo;agr\u00e9gation d&rsquo;une puissance exceptionnelle \u00e0 travers la m\u00e9thode <code>groupby<\/code>, qui partitionne virtuellement les donn\u00e9es selon les variables cat\u00e9gorielles sp\u00e9cifi\u00e9es, applique la fonction de calcul robuste sur chaque sous-ensemble, puis recombine les r\u00e9sultats au sein d&rsquo;une nouvelle structure hi\u00e9rarchique :<\/p>\n<p><code>resultats_groupes = df.groupby(['diagnostic', 'phase_evaluation'])['temps_reaction'].apply(<br \/>&nbsp;&nbsp;&nbsp;&nbsp;lambda x: stats.median_abs_deviation(x.dropna(), scale='normal')<br \/>).reset_index()<\/code><\/p>\n<p>Cette commande permet d&rsquo;isoler avec une rigueur absolue la dispersion robuste au sein de chaque sous-groupe clinique, \u00e9vitant que la variabilit\u00e9 inter-groupes ne vienne parasiter l&rsquo;estimation de la variabilit\u00e9 intra-groupe. Les r\u00e9sultats structur\u00e9s sous forme de tableau agr\u00e9g\u00e9 peuvent \u00eatre directement reformat\u00e9s (via <code>pivot_table<\/code> ou <code>unstack<\/code>) afin de g\u00e9n\u00e9rer des tableaux de statistiques descriptives pr\u00eats \u00e0 \u00eatre export\u00e9s vers des formats de publication acad\u00e9mique conformes aux standards de l&rsquo;American Psychological Association (APA).<\/p>\n<h2>8. D\u00e9tection et traitement des donn\u00e9es aberrantes exp\u00e9rimentales par le MAD<\/h2>\n<h3>8.1 Le crit\u00e8re de Leys et al. (2013) en psychologie exp\u00e9rimentale<\/h3>\n<p>La question du rep\u00e9rage et du traitement des donn\u00e9es aberrantes (<em>outliers<\/em>) est l&rsquo;une des probl\u00e9matiques les plus critiques et les plus sujettes \u00e0 controverses m\u00e9thodologiques dans la recherche exp\u00e9rimentale. Historiquement, la pratique empirique la plus r\u00e9pandue en psychologie consistait \u00e0 utiliser la moyenne arithm\u00e9tique et l&rsquo;\u00e9cart-type pour \u00e9tablir un corridor de validit\u00e9, classant comme valeur aberrante toute observation s&rsquo;\u00e9loignant de plus de deux ou trois \u00e9carts-types de la moyenne de l&rsquo;\u00e9chantillon (crit\u00e8re conventionnel <em>\u03bc \u00b1 2\u03c3<\/em> ou <em>\u03bc \u00b1 3\u03c3<\/em>).<\/p>\n<p>Comme l&rsquo;ont magistralement d\u00e9montr\u00e9 <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1016\/j.jesp.2013.03.013\">Christophe Leys et ses collaborateurs dans leur article de r\u00e9f\u00e9rence (2013)<\/a> paru dans le <em>Journal of Experimental Social Psychology<\/em>, cette proc\u00e9dure classique souffre d&rsquo;un vice logique r\u00e9dhibitoire : l&rsquo;incoh\u00e9rence circulaire. En effet, l&rsquo;\u00e9cart-type et la moyenne arithm\u00e9tique \u00e9tant eux-m\u00eames extr\u00eamement sensibles aux valeurs aberrantes que l&rsquo;on cherche pr\u00e9cis\u00e9ment \u00e0 d\u00e9tecter, la pr\u00e9sence d&rsquo;une valeur extr\u00eame gonfle l&rsquo;\u00e9cart-type et d\u00e9place la moyenne. Deux cons\u00e9quences d\u00e9l\u00e9t\u00e8res en r\u00e9sultent :<\/p>\n<ul>\n<li><strong>Le masquage (<em>masking<\/em>)<\/strong> : L&rsquo;augmentation artificielle de l&rsquo;\u00e9cart-type \u00e9largit excessivement l&rsquo;intervalle d&rsquo;acceptation, emp\u00eachant l&rsquo;identification d&rsquo;autres valeurs aberrantes authentiques situ\u00e9es l\u00e9g\u00e8rement en de\u00e7\u00e0 du seuil d\u00e9form\u00e9.<\/li>\n<li><strong>Le d\u00e9bordement (<em>swamping<\/em>)<\/strong> : Le d\u00e9placement de la moyenne en direction d&rsquo;une valeur extr\u00eame de grande magnitude peut conduire \u00e0 exclure \u00e0 tort des observations tout \u00e0 fait saines situ\u00e9es \u00e0 l&rsquo;autre extr\u00e9mit\u00e9 de la distribution.<\/li>\n<\/ul>\n<p>Pour rem\u00e9dier d\u00e9finitivement \u00e0 ces biais \u00e9pist\u00e9mologiques, Leys et al. (2013) pr\u00e9conisent l&rsquo;adoption universelle d&rsquo;un seuillage robuste fond\u00e9 sur la m\u00e9diane et le MAD normalis\u00e9 (not\u00e9 <em>MAD_norm<\/em>). Selon cette m\u00e9thodologie, un score individuel <em>x\u1d62<\/em> est \u00e9tiquet\u00e9 comme aberrant s&rsquo;il franchit l&rsquo;intervalle sym\u00e9trique robuste :<\/p>\n<p><strong>[ m\u00e9diane(X) &#8211; k \u00d7 MAD_norm ; m\u00e9diane(X) + k \u00d7 MAD_norm ]<\/strong><\/p>\n<p>Dans ce protocole, la constante de d\u00e9cision <em>k<\/em> est typiquement fix\u00e9e \u00e0 <strong>2,5<\/strong> pour un filtrage mod\u00e9r\u00e9ment conservateur (adapt\u00e9 aux t\u00e2ches cognitives o\u00f9 la pr\u00e9cision est primordiale), ou \u00e0 <strong>3,0<\/strong> pour un filtrage tr\u00e8s conservateur (afin de n&rsquo;\u00e9liminer que les perturbations hautement suspectes sans amputer la variance naturelle du ph\u00e9nom\u00e8ne psychologique).<\/p>\n<h3>8.2 Script Python pour l&rsquo;identification et l&rsquo;\u00e9tiquetage des observations extr\u00eames<\/h3>\n<p>La mise en \u0153uvre algorithmique du crit\u00e8re de Leys et al. s&rsquo;effectue ais\u00e9ment en Python gr\u00e2ce \u00e0 la modularit\u00e9 vectorielle. On peut d\u00e9finir une fonction globale de standardisation robuste qui convertit les observations brutes en scores <em>Z<\/em> robustes (souvent appel\u00e9s scores MAD standardis\u00e9s) :<\/p>\n<p><code>import numpy as np<br \/>from scipy import stats<\/p>\n<p>def detecter_outliers_mad(serie, seuil=2.5):<br \/>&nbsp;&nbsp;&nbsp;&nbsp;valeurs = np.asarray(serie)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;mediane = np.nanmedian(valeurs)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;mad = stats.median_abs_deviation(valeurs, scale='normal', nan_policy='omit')<br \/>&nbsp;&nbsp;&nbsp;&nbsp;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;if mad == 0:<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return np.zeros(len(valeurs), dtype=bool)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;<br \/>&nbsp;&nbsp;&nbsp;&nbsp;scores_z_robustes = np.abs(valeurs - mediane) \/ mad<br \/>&nbsp;&nbsp;&nbsp;&nbsp;est_aberrant = scores_z_robustes &gt; seuil<br \/>&nbsp;&nbsp;&nbsp;&nbsp;return est_aberrant<\/code><\/p>\n<p>Une fois les observations aberrantes formellement \u00e9tiquet\u00e9es au moyen de ce masque bool\u00e9en, trois strat\u00e9gies m\u00e9thodologiques s&rsquo;offrent au chercheur :<\/p>\n<ul>\n<li><strong>L&rsquo;exclusion pure et simple (<em>trimming<\/em>)<\/strong> : Les donn\u00e9es aberrantes sont supprim\u00e9es de l&rsquo;analyse finale. Cette strat\u00e9gie est justifi\u00e9e lorsque les valeurs extr\u00eames proviennent de pannes instrumentales attest\u00e9es ou d&rsquo;erreurs manifestes de codage.<\/li>\n<li><strong>La winsorisation robuste<\/strong> : Plut\u00f4t que de supprimer l&rsquo;observation (ce qui r\u00e9duirait la taille de l&rsquo;\u00e9chantillon et modifierait les degr\u00e9s de libert\u00e9), les valeurs situ\u00e9es au-del\u00e0 des bornes [m\u00e9diane \u00b1 <em>k<\/em> \u00d7 MAD_norm] sont rabattues sur la valeur exacte de la borne respective. Cette technique pr\u00e9serve l&rsquo;information ordinale selon laquelle l&rsquo;individu poss\u00e9dait un score \u00e9lev\u00e9, tout en neutralisant son pouvoir de distorsion m\u00e9trique sur les calculs ult\u00e9rieurs.<\/li>\n<li><strong>L&rsquo;imputation robuste<\/strong> : Remplacement de la valeur aberrante par la m\u00e9diane du groupe exp\u00e9rimental respectif ou par une estimation fond\u00e9e sur un mod\u00e8le de r\u00e9gression robuste.<\/li>\n<\/ul>\n<h2>9. Gestion des valeurs manquantes (NaN) et cas limites<\/h2>\n<h3>9.1 Traitement de l&rsquo;absence de r\u00e9ponse dans les questionnaires psychologiques<\/h3>\n<p>Dans la recherche empirique sur le terrain, l&rsquo;absence de r\u00e9ponse constitue la r\u00e8gle plut\u00f4t que l&rsquo;exception. Les participants \u00e0 des enqu\u00eates en ligne peuvent omettre involontairement de r\u00e9pondre \u00e0 certains items ou refuser de divulguer des informations sensibles relatives \u00e0 leur \u00e9tat de sant\u00e9 mentale ou \u00e0 leurs ant\u00e9c\u00e9dents addictifs. Dans l&rsquo;\u00e9cosyst\u00e8me Python, ces donn\u00e9es manquantes sont universellement repr\u00e9sent\u00e9es par la constante \u00e0 virgule flottante sp\u00e9ciale <code>numpy.nan<\/code> (<em>Not a Number<\/em>).<\/p>\n<p>Par d\u00e9faut, l&rsquo;application d&rsquo;op\u00e9rations arithm\u00e9tiques standard de NumPy sur un tableau renfermant ne serait-ce qu&rsquo;une seule valeur <code>NaN<\/code> d\u00e9clenche ce que l&rsquo;on nomme la contamination virale des calculs : <code>numpy.median([10, 12, np.nan, 14])<\/code> retourne imm\u00e9diatement <code>nan<\/code>, invalidant l&rsquo;ensemble de la cha\u00eene de traitement. Pour immuniser le pipeline contre ce comportement, il est capital de mobiliser les fonctions sp\u00e9cifiquement con\u00e7ues pour l&rsquo;omission s\u00e9curis\u00e9e des donn\u00e9es manquantes.<\/p>\n<p>NumPy dispose de la primitive <code>numpy.nanmedian<\/code>, qui filtre silencieusement les valeurs non d\u00e9finies avant d&rsquo;extraire la m\u00e9diane de la tranche r\u00e9siduelle des donn\u00e9es observ\u00e9es. De mani\u00e8re analogue, la fonction <code>scipy.stats.median_abs_deviation<\/code> dispose d&rsquo;un argument fondamental nomm\u00e9 <code>nan_policy<\/code>. Ce param\u00e8tre accepte trois directives explicites :<\/p>\n<ul>\n<li><code>nan_policy='propagate'<\/code> (valeur par d\u00e9faut) : Retourne syst\u00e9matiquement <code>nan<\/code> d\u00e8s qu&rsquo;une valeur manquante est d\u00e9tect\u00e9e dans l&rsquo;axe de calcul.<\/li>\n<li><code>nan_policy='raise'<\/code> : D\u00e9clenche imm\u00e9diatement une exception logicielle de type <code>ValueError<\/code>, for\u00e7ant le chercheur \u00e0 traiter explicitement les valeurs manquantes avant de poursuivre l&rsquo;ex\u00e9cution.<\/li>\n<li><code>nan_policy='omit'<\/code> : Ex\u00e9cute le calcul du MAD en ignorant totalement les valeurs non d\u00e9finies, garantissant une estimation robuste sur les seuls cas complets disponibles.<\/li>\n<\/ul>\n<p>L&rsquo;utilisation syst\u00e9matique de <code>nan_policy='omit'<\/code> constitue la bonne pratique canonique lors du traitement de questionnaires psychom\u00e9triques complexes.<\/p>\n<h3>9.2 Cas pathologiques : variance nulle et r\u00e9p\u00e9titions massives de scores<\/h3>\n<p>Malgr\u00e9 ses propri\u00e9t\u00e9s formelles de robustesse exceptionnelles, le MAD est confront\u00e9 \u00e0 un cas limite pathologique bien connu de la litt\u00e9rature statistique : le ph\u00e9nom\u00e8ne d&rsquo;effondrement \u00e0 z\u00e9ro (<em>implosion of the scale estimator<\/em>). Ce cas pathologique se manifeste de mani\u00e8re caract\u00e9ristique lorsque plus de 50 % des observations d&rsquo;un \u00e9chantillon partagent rigoureusement la m\u00eame valeur num\u00e9rique scalaire.<\/p>\n<p>Consid\u00e9rons un sc\u00e9nario clinique classique d&rsquo;\u00e9valuation d&rsquo;un sympt\u00f4me d\u00e9pressif s\u00e9v\u00e8re (par exemple, des id\u00e9es suicidaires actives mesur\u00e9es sur une \u00e9chelle ordinale de 0 \u00e0 4) au sein d&rsquo;un groupe t\u00e9moin sain recrut\u00e9 dans la population g\u00e9n\u00e9rale. Dans cette cohorte asymptomatique, il est fr\u00e9quent que 70 % ou 80 % des individus cochent le score minimal absolu de 0. Il s&rsquo;agit d&rsquo;un effet de plancher massif (<em>floor effect<\/em>). Calculons le MAD sur cet \u00e9chantillon :<\/p>\n<ol>\n<li>La m\u00e9diane centrale de la distribution est \u00e9gale \u00e0 0.<\/li>\n<li>Le vecteur des \u00e9carts absolus par rapport \u00e0 la m\u00e9diane (|<em>x\u1d62<\/em> &#8211; 0|) contient donc lui-m\u00eame 70 % ou 80 % de z\u00e9ros.<\/li>\n<li>La m\u00e9diane de ces \u00e9carts absolus est, par d\u00e9finition arithm\u00e9tique \u00e9l\u00e9mentaire, strictement \u00e9gale \u00e0 0.<\/li>\n<\/ol>\n<p>Dans cette configuration, le MAD s&rsquo;effondre et s&rsquo;annule : <strong>MAD = 0<\/strong>, bien qu&rsquo;il existe une variabilit\u00e9 r\u00e9elle chez les 20 % ou 30 % d&rsquo;individus restants pr\u00e9sentant des scores positifs non nuls. Cette annulation induit une catastrophe num\u00e9rique imm\u00e9diate lors de l&rsquo;application de scores Z robustes, provoquant une division par z\u00e9ro (<code>ZeroDivisionError<\/code> ou g\u00e9n\u00e9ration d&rsquo;infinis <code>inf<\/code> en Python).<\/p>\n<p>Pour contourner cet \u00e9cueil th\u00e9orique sans r\u00e9gresser vers la vuln\u00e9rabilit\u00e9 de l&rsquo;\u00e9cart-type, les statisticiens <a rel=\"noopener noreferrer\" href=\"https:\/\/www.tandfonline.com\/doi\/abs\/10.1080\/01621459.1993.10476408\">Peter J. Rousseeuw et Christophe Croux (1993)<\/a> ont d\u00e9velopp\u00e9 deux estimateurs alternatifs de haute performance : les statistiques <strong>S\u2099<\/strong> et <strong>Q\u2099<\/strong>. L&rsquo;estimateur <em>S\u2099<\/em> se d\u00e9finit comme la m\u00e9diane des m\u00e9dianes des diff\u00e9rences absolues par paires d&rsquo;observations, tandis que <em>Q\u2099<\/em> repose sur l&rsquo;ordre des distances mutuelles entre tous les couples d&rsquo;individus sans n\u00e9cessiter d&rsquo;ancrage sur une mesure de tendance centrale unique. L&rsquo;estimateur <em>Q\u2099<\/em> conserve un point de rupture de 50 %, tout en atteignant une efficacit\u00e9 asymptotique de 82 % sous distribution normale (tr\u00e8s sup\u00e9rieure aux 37 % du MAD) et ne s&rsquo;effondre que si plus de 50 % des observations <em>s&rsquo;annulent mutuellement deux \u00e0 deux<\/em>, ce qui n&rsquo;arrive que si une proportion gigantesque de l&rsquo;\u00e9chantillon partage la m\u00eame modalit\u00e9. Bien que non impl\u00e9ment\u00e9 dans le noyau standard de SciPy, des paquets Python sp\u00e9cialis\u00e9s permettent d&rsquo;int\u00e9grer <em>Q\u2099<\/em> lorsque des effets de plancher ou de plafond s\u00e9v\u00e8res sont anticip\u00e9s.<\/p>\n<h2>10. \u00c9valuation comparative des performances et passages \u00e0 l&rsquo;\u00e9chelle<\/h2>\n<h3>10.1 Benchmark d&rsquo;ex\u00e9cution : NumPy, Statsmodels et SciPy<\/h3>\n<p>Dans l&rsquo;\u00e8re contemporaine des m\u00e9gadonn\u00e9es comportementales \u2014 aliment\u00e9es par la t\u00e9l\u00e9m\u00e9trie sur t\u00e9l\u00e9phones intelligents, les interfaces cerveau-machine ou les enregistrements en continu d&rsquo;eye-tracking g\u00e9n\u00e9rant des dizaines de millions de lignes par session exp\u00e9rimentale \u2014, l&rsquo;efficacit\u00e9 computationnelle brute et l&#8217;empreinte m\u00e9moire des algorithmes d&rsquo;analyse robuste deviennent des facteurs hautement discriminants.<\/p>\n<p>Une \u00e9valuation empirique rigoureuse au moyen du module <code>timeit<\/code> de Python permet de quantifier pr\u00e9cis\u00e9ment les \u00e9carts d&rsquo;ordonnancement entre les diff\u00e9rentes approches. Consid\u00e9rons un protocole exp\u00e9rimental simul\u00e9 comprenant un million d&rsquo;observations (<em>N<\/em> = 1 000 000) de variables \u00e0 virgule flottante en double pr\u00e9cision :<\/p>\n<ul>\n<li><strong>NumPy natif (impl\u00e9mentation artisanale vectoris\u00e9e)<\/strong> : Temps d&rsquo;ex\u00e9cution moyen d&rsquo;environ <strong>14 \u00e0 18 millisecondes<\/strong>. La m\u00e9moire allou\u00e9e n\u00e9cessite la cr\u00e9ation d&rsquo;un tableau temporaire interm\u00e9diaire pour h\u00e9berger les \u00e9carts absolus, ce qui double temporairement l&#8217;empreinte RAM (environ 8 Mo suppl\u00e9mentaires pour 1 million de flottants).<\/li>\n<li><strong>SciPy (<code>scipy.stats.median_abs_deviation<\/code>)<\/strong> : Temps d&rsquo;ex\u00e9cution moyen oscillant entre <strong>15 et 20 millisecondes<\/strong>. L&rsquo;impl\u00e9mentation est optimis\u00e9e gr\u00e2ce \u00e0 des routines sous-jacentes compil\u00e9es en C, avec une gestion int\u00e9gr\u00e9e des valeurs manquantes et du redimensionnement d&rsquo;axes qui n&rsquo;introduit qu&rsquo;un surco\u00fbt marginal n\u00e9gligeable.<\/li>\n<li><strong>Statsmodels (<code>statsmodels.robust.scale.mad<\/code>)<\/strong> : Temps d&rsquo;ex\u00e9cution moyen l\u00e9g\u00e8rement sup\u00e9rieur, se situant autour de <strong>25 \u00e0 35 millisecondes<\/strong>. Ce diff\u00e9rentiel d\u00e9coule des couches d&rsquo;abstraction orient\u00e9es objet, de la flexibilit\u00e9 des fonctions de centrage configurables et des contr\u00f4les de typage dynamiques appliqu\u00e9s \u00e0 chaque appel.<\/li>\n<\/ul>\n<p>Pour des micro-donn\u00e9es cliniques (\u00e9chantillons de 20 \u00e0 500 sujets), les \u00e9carts absolus de temps de calcul demeurent de l&rsquo;ordre de la fraction de milliseconde et sont totalement imperceptibles pour l&rsquo;utilisateur. En revanche, lorsque le protocole implique des simulations r\u00e9p\u00e9t\u00e9es ou le traitement de s\u00e9ries volumineuses, l&rsquo;adoption de l&rsquo;impl\u00e9mentation de <strong>SciPy<\/strong> s&rsquo;impose comme le standard optimal, alliant une vitesse d&rsquo;ex\u00e9cution de premier ordre \u00e0 une s\u00e9curit\u00e9 s\u00e9mantique maximale.<\/p>\n<h3>10.2 Parall\u00e9lisation pour les \u00e9tudes \u00e0 grande \u00e9chelle et simulations de Monte-Carlo<\/h3>\n<p>L&rsquo;estimation de la robustesse des mod\u00e8les psychom\u00e9triques modernes mobilise fr\u00e9quemment des architectures de r\u00e9\u00e9chantillonnage intensif de type <em>bootstrap<\/em> non param\u00e9trique ou des simulations num\u00e9riques de Monte-Carlo. Dans de tels paradigmes, le calcul du MAD doit \u00eatre r\u00e9it\u00e9r\u00e9 des centaines de milliers, voire des millions de fois sur des sous-\u00e9chantillons tir\u00e9s al\u00e9atoirement avec remise.<\/p>\n<p>En raison du verrou global d&rsquo;interpr\u00e9teur (GIL, <em>Global Interpreter Lock<\/em>) inh\u00e9rent \u00e0 l&rsquo;impl\u00e9mentation standard CPython, l&rsquo;ex\u00e9cution multi-thread\u00e9e purement interpr\u00e9t\u00e9e n&rsquo;offre aucun gain de performance pour les calculs intensifs li\u00e9s au processeur. La parall\u00e9lisation efficace requiert une architecture multi-processus, pouvant \u00eatre d\u00e9ploy\u00e9e au moyen de la biblioth\u00e8que standard <code>multiprocessing<\/code> ou, plus \u00e9l\u00e9gamment, via la biblioth\u00e8que <a rel=\"noopener noreferrer\" href=\"https:\/\/joblib.readthedocs.io\/\">Joblib<\/a> :<\/p>\n<p><code>from joblib import Parallel, delayed<br \/>from scipy import stats<br \/>import numpy as np<\/p>\n<p>def calculer_mad_iter(donnees):<br \/>&nbsp;&nbsp;&nbsp;&nbsp;echantillon_bootstrap = np.random.choice(donnees, size=len(donnees), replace=True)<br \/>&nbsp;&nbsp;&nbsp;&nbsp;return stats.median_abs_deviation(echantillon_bootstrap, scale='normal')<\/p>\n<p>resultats_paralleles = Parallel(n_jobs=-1)(<br \/>&nbsp;&nbsp;&nbsp;&nbsp;delayed(calculer_mad_iter)(serie_cognitive) for _ in range(10000)<br \/>)<\/code><\/p>\n<p>L&rsquo;allocation sur l&rsquo;ensemble des c\u0153urs physiques disponibles via <code>n_jobs=-1<\/code> permet une mise \u00e0 l&rsquo;\u00e9chelle quasi lin\u00e9aire de la vitesse de traitement. Par ailleurs, dans le domaine de l&rsquo;analyse des s\u00e9ries temporelles physiologiques (comme la variabilit\u00e9 de la fr\u00e9quence cardiaque au repos ou les variations d&rsquo;oxyg\u00e9nation c\u00e9r\u00e9brale par spectroscopie dans le proche infrarouge, fNIRS), l&rsquo;analyse par fen\u00eatres glissantes (<em>rolling window<\/em>) b\u00e9n\u00e9ficie grandement des optimisations vectorielles de Pandas (via <code>df.rolling(window=100).apply(...)<\/code>), permettant de surveiller en temps r\u00e9el l&rsquo;\u00e9volution dynamique de la dispersion sans goulet d&rsquo;\u00e9tranglement informatique.<\/p>\n<h2>11. \u00c9tudes de cas concr\u00e8tes en recherche psychologique et cognitive<\/h2>\n<h3>11.1 Nettoyage robuste des temps de r\u00e9action dans les t\u00e2ches cognitives de type Stroop<\/h3>\n<p>Pour illustrer de mani\u00e8re concr\u00e8te et appliqu\u00e9e la puissance de l&rsquo;\u00e9cart absolu m\u00e9dian, examinons une \u00e9tude de cas prototypique en psychologie cognitive exp\u00e9rimentale : l&rsquo;effet d&rsquo;interf\u00e9rence de Stroop. Dans cette t\u00e2che informatis\u00e9e, les participants doivent identifier le plus rapidement possible la couleur de l&rsquo;encre dans laquelle un mot est imprim\u00e9, tout en ignorant le sens linguistique dudit mot. Deux conditions exp\u00e9rimentales principales s&rsquo;opposent : la condition congruente (le mot \u00ab ROUGE \u00bb \u00e9crit \u00e0 l&rsquo;encre rouge) et la condition incongruente (le mot \u00ab BLEU \u00bb \u00e9crit \u00e0 l&rsquo;encre rouge). La m\u00e9trique d&rsquo;int\u00e9r\u00eat r\u00e9side dans le surco\u00fbt temporel n\u00e9cessaire pour r\u00e9soudre le conflit cognitif dans la condition incongruente.<\/p>\n<p>Les distributions de temps de r\u00e9action (TR) ne suivent jamais une loi normale, mais ob\u00e9issent typiquement \u00e0 une loi ex-gaussienne, caract\u00e9ris\u00e9e par la convolution d&rsquo;une composante gaussienne (refl\u00e9tant les processus d&rsquo;int\u00e9gration sensorielle et d&rsquo;ex\u00e9cution motrice) et d&rsquo;une composante exponentielle unilat\u00e9rale (refl\u00e9tant les processus d\u00e9cisionnels centraux et les fluctuations attentionnelles). Dans un \u00e9chantillon exp\u00e9rimental classique de 200 essais, on observe invariablement quelques latences anormalement courtes (r\u00e9ponses anticipatoires involontaires, <em>TR<\/em> &lt; 150 ms) et des latences anormalement longues (laps attentionnel ponctuel o\u00f9 le sujet regarde ailleurs, <em>TR<\/em> &gt; 2 500 ms).<\/p>\n<p>Proc\u00e9dons \u00e0 l&rsquo;application du pipeline de nettoyage robuste sous Python :<\/p>\n<p><code>import numpy as np<br \/>import pandas as pd<br \/>from scipy import stats<\/p>\n<p># G\u00e9n\u00e9ration d'une distribution simul\u00e9e ex-gaussienne pollu\u00e9e par des artefacts<br \/>np.random.seed(42)<br \/>tr_propres = np.random.normal(loc=550, scale=80, size=200) + np.random.exponential(scale=100, size=200)<br \/>artefacts_rapides = np.array([45, 60, 110])<br \/>artefacts_lents = np.array([3200, 4100, 5800])<br \/>tr_complets = np.concatenate([tr_propres, artefacts_rapides, artefacts_lents])<\/p>\n<p># Calcul des indicateurs classiques et robustes<br \/>moyenne_brute = np.mean(tr_complets)<br \/>ecart_type_brut = np.std(tr_complets, ddof=1)<\/p>\n<p>mediane_brute = np.median(tr_complets)<br \/>mad_normalise = stats.median_abs_deviation(tr_complets, scale='normal')<\/p>\n<p># Application du filtrage de Leys et al. (seuil de 2.5)<br \/>seuil_inferieur = mediane_brute - 2.5 * mad_normalise<br \/>seuil_superieur = mediane_brute + 2.5 * mad_normalise<\/p>\n<p>indices_conserves = (tr_complets &gt;= seuil_inferieur) &amp; (tr_complets &lt;= seuil_superieur)<br \/>tr_nettoyes = tr_complets[indices_conserves]<\/code><\/p>\n<p>Dans cette simulation, la moyenne brute initiale se trouve artificiellement d\u00e9port\u00e9e \u00e0 plus de 715 ms en raison des trois artefacts lents, et l&rsquo;\u00e9cart-type classique explose \u00e0 plus de 440 ms. En revanche, la m\u00e9diane empirique s&rsquo;\u00e9tablit avec stabilit\u00e9 \u00e0 622 ms, et le MAD normalis\u00e9 capture avec pr\u00e9cision la variabilit\u00e9 authentique de la t\u00e2che autour de 125 ms. Le seuil robuste isole et \u00e9limine avec une acuit\u00e9 chirurgicale l&rsquo;ensemble des six artefacts moteurs et attentionnels sans amputer la queue exponentielle l\u00e9gitime du processus d\u00e9cisionnel sous-jacent. L&rsquo;analyse inf\u00e9rentielle ult\u00e9rieure (test <em>t<\/em> appari\u00e9 comparant conditions congruentes et incongruentes) retrouve ainsi sa pleine puissance statistique nominale.<\/p>\n<h3>11.2 Analyse de la fid\u00e9lit\u00e9 et de l&rsquo;accord inter-juges sur \u00e9chelles ordinales<\/h3>\n<p>Une seconde application d\u00e9terminante concerne la psychom\u00e9trie clinique et l&rsquo;\u00e9valuation diagnostique reposant sur des commissions d&rsquo;experts ou des juges ind\u00e9pendants. Consid\u00e9rons un protocole dans lequel des cliniciens psychiatres \u00e9valuent la s\u00e9v\u00e9rit\u00e9 globale de la symptomatologie schizophr\u00e9nique de plusieurs dizaines de patients au moyen de l&rsquo;\u00e9chelle d&rsquo;\u00e9valuation des sympt\u00f4mes positifs et n\u00e9gatifs (PANSS), gradu\u00e9e sur une \u00e9chelle de Likert en 7 points.<\/p>\n<p>L&rsquo;objectif m\u00e9thodologique est d&rsquo;\u00e9valuer le consensus et la dispersion des \u00e9valuations inter-juges pour chaque profil clinique. Si un patient re\u00e7oit des notes unanimes de 4, 4, 4, 5, 4 de la part de cinq cliniciens, le consensus est \u00e9lev\u00e9. Si, en revanche, un sixi\u00e8me juge subit un biais d&rsquo;\u00e9valuation idiosyncrasique et attribue un score discordant de 1 ou de 7, l&rsquo;\u00e9cart-type de cet item subit une \u00e9l\u00e9vation disproportionn\u00e9e, concluant faussement \u00e0 une absence g\u00e9n\u00e9rale d&rsquo;accord clinique.<\/p>\n<p>Le MAD fournit une m\u00e9trique directe et robuste de fid\u00e9lit\u00e9 inter-\u00e9valuateurs. En calculant le MAD des cotations par patient, les coordinateurs de l&rsquo;essai clinique peuvent imm\u00e9diatement identifier les profils cliniques ambigus qui suscitent une v\u00e9ritable division m\u00e9diane de l&rsquo;\u00e9valuation clinique, tout en isolant les items o\u00f9 un clinicien singulier d\u00e9vie de l&rsquo;accord g\u00e9n\u00e9ral.<\/p>\n<p>Pour valoriser ces r\u00e9sultats dans une communication scientifique, l&rsquo;association du MAD avec des repr\u00e9sentations visuelles modernes s&rsquo;av\u00e8re particuli\u00e8rement \u00e9loquente. L&rsquo;int\u00e9gration de la biblioth\u00e8que <code>seaborn<\/code> permet de juxtaposer une bo\u00eete \u00e0 moustaches robuste (<em>boxplot<\/em> fond\u00e9e sur les quantiles) et un trac\u00e9 de densit\u00e9 en violon (<em>violin plot<\/em>), o\u00f9 le MAD est mat\u00e9rialis\u00e9 par des barres d&rsquo;erreur explicites. Ce dispositif visuel restitue imm\u00e9diatement aux \u00e9valuateurs la forme int\u00e9grale de la densit\u00e9 empirique et certifie la conformit\u00e9 de l&rsquo;interpr\u00e9tation clinique face aux d\u00e9viations ordinales isol\u00e9es.<\/p>\n<h2>12. Recommandations m\u00e9thodologiques et bonnes pratiques de publication<\/h2>\n<h3>12.1 Transparence scientifique et conformit\u00e9 aux normes APA<\/h3>\n<p>L&rsquo;int\u00e9gration grandissante des statistiques robustes au sein des revues savantes \u00e0 comit\u00e9 de lecture n\u00e9cessite une adaptation des normes de r\u00e9daction acad\u00e9mique. Le manuel de publication de l&rsquo;American Psychological Association (APA, 7\u1d49 \u00e9dition) insiste de mani\u00e8re explicite sur la n\u00e9cessit\u00e9 de fournir aux lecteurs une description fid\u00e8le de la forme distributionnelle des donn\u00e9es et de justifier m\u00e9thodologiquement le choix des indicateurs de centralit\u00e9 et de dispersion.<\/p>\n<p>Lorsqu&rsquo;un chercheur rapporte l&rsquo;\u00e9cart absolu m\u00e9dian dans la section des r\u00e9sultats d&rsquo;un article empirique, il ne suffit pas d&rsquo;ins\u00e9rer un simple acronyme isol\u00e9. Il est imp\u00e9ratif d&rsquo;expliciter le traitement math\u00e9matique appliqu\u00e9, notamment le facteur d&rsquo;\u00e9chelle. La formulation textuelle canonique doit ob\u00e9ir \u00e0 une rigueur d&rsquo;exposition sans faille, par exemple :<\/p>\n<p><em>\u00ab En raison de l&rsquo;asym\u00e9trie positive marqu\u00e9e des temps de r\u00e9action (asym\u00e9trie = 1,84, aplatissement = 4,21), nous avons rapport\u00e9 la m\u00e9diane comme mesure de tendance centrale et l&rsquo;\u00e9cart absolu m\u00e9dian normalis\u00e9 (MAD, avec un facteur d&rsquo;\u00e9chelle k = 1,4826) comme indice de dispersion robuste. Pour la condition exp\u00e9rimentale incongruente, les latences comportementales se sont caract\u00e9ris\u00e9es par une dispersion robuste mod\u00e9r\u00e9e (Mdn = 612 ms, MAD = 84 ms), comparativement \u00e0 la condition congruente (Mdn = 524 ms, MAD = 58 ms). \u00bb<\/em><\/p>\n<p>De surcro\u00eet, les principes de la science ouverte (<em>Open Science<\/em>) encouragent vivement le partage transparent des scripts computationnels sur des plateformes d&rsquo;archivage p\u00e9rennes telles que le Centre pour la science ouverte (OSF) ou GitHub. L&rsquo;inclusion du script Python exact ayant servi \u00e0 l&rsquo;identification des donn\u00e9es aberrantes, assorti de la documentation explicite des biblioth\u00e8ques mobilis\u00e9es (par exemple <code>scipy.stats.median_abs_deviation<\/code> version 1.10+), garantit l&rsquo;auditabilit\u00e9 totale des r\u00e9sultats et immunise le laboratoire contre les suspicions de manipulation s\u00e9lective des seuils statistiques (<em>p-hacking<\/em>).<\/p>\n<h3>12.2 Synth\u00e8se d\u00e9cisionnelle pour le choix des indices de variabilit\u00e9<\/h3>\n<p>Pour guider les chercheurs, cliniciens et ing\u00e9nieurs de donn\u00e9es dans leurs choix analytiques quotidiens, il est f\u00e9cond de formaliser le processus d\u00e9cisionnel sous la forme d&rsquo;un arbre d&rsquo;orientation m\u00e9thodologique unifi\u00e9, articul\u00e9 autour des caract\u00e9ristiques intrins\u00e8ques des donn\u00e9es empiriques recueillies :<\/p>\n<ol>\n<li><strong>V\u00e9rification des propri\u00e9t\u00e9s distributionnelles et de la structure th\u00e9orique de la variable :<\/strong>\n<ul>\n<li>La variable r\u00e9pond-elle strictement aux postulats de la normalit\u00e9 univari\u00e9e (absence d&rsquo;asym\u00e9trie, aplatissement proche de 3, histogramme parfaitement en cloche sans tra\u00eene) ET l&rsquo;absence totale de valeurs aberrantes est-elle structurellement garantie par le protocole ?\n<ul>\n<li><em>Si Oui<\/em> : L&rsquo;<strong>\u00e9cart-type classique (SD)<\/strong> demeure l&rsquo;estimateur le plus efficient d&rsquo;un point de vue asymptotique (ARE = 100 %). Son emploi optimise la puissance des mod\u00e8les lin\u00e9aires g\u00e9n\u00e9raux subs\u00e9quents.<\/li>\n<li><em>Si Non<\/em> : Poursuivre le cheminement d\u00e9cisionnel vers les estimateurs robustes et non param\u00e9triques.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u00c9valuation de la nature de la non-normalit\u00e9 et du taux d&rsquo;\u00e9galit\u00e9 des scores :<\/strong>\n<ul>\n<li>La distribution manifeste-t-elle un effet de plancher ou de plafond massif avec plus de 50 % des observations rigoureusement identiques sur un score discret ?\n<ul>\n<li><em>Si Oui<\/em> : Le MAD est susceptible de s&rsquo;effondrer \u00e0 z\u00e9ro. Il convient d&rsquo;adopter l&rsquo;<strong>\u00e9cart interquartile (IQR)<\/strong> ou, de pr\u00e9f\u00e9rence, l&rsquo;estimateur robuste <strong>Q\u2099 de Rousseeuw et Croux<\/strong>.<\/li>\n<li><em>Si Non<\/em> : Poursuivre vers l&rsquo;option robuste standard.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Objectif scientifique et tol\u00e9rance au point de rupture :<\/strong>\n<ul>\n<li>Recherche-t-on une m\u00e9trique immunis\u00e9e jusqu&rsquo;\u00e0 50 % de contamination pour caract\u00e9riser la dispersion intrins\u00e8que ou filtrer m\u00e9thodologiquement les valeurs aberrantes selon le crit\u00e8re de Leys et al. (2013) ?\n<ul>\n<li><em>Conclusion<\/em> : L&rsquo;<strong>\u00e9cart absolu m\u00e9dian (MAD normalis\u00e9, k = 1,4826)<\/strong> s&rsquo;impose comme l&rsquo;\u00e9talon m\u00e9thodologique absolu.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>La formation acad\u00e9mique en sciences psychologiques et en neurosciences computationnelles doit imp\u00e9rativement int\u00e9grer ces consid\u00e9rations d\u00e8s l&rsquo;apprentissage initial de la m\u00e9thodologie quantitative. L&rsquo;\u00e9mancipation progressive vis-\u00e0-vis des automatismes param\u00e9triques fond\u00e9s sur la moyenne et l&rsquo;\u00e9cart-type, combin\u00e9e \u00e0 la ma\u00eetrise rigoureuse des environnements informatiques modernes comme Python, constitue l&rsquo;un des piliers m\u00e9thodologiques les plus prometteurs pour asseoir la recherche comportementale contemporaine sur des fondations empiriques solides, transparentes et p\u00e9rennes.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>Hampel, F. R. (1974). The influence curve and its role in robust estimation. <em>Journal of the American Statistical Association<\/em>, 69(346), 383\u2013393. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1080\/01621459.1974.10482962\">https:\/\/doi.org\/10.1080\/01621459.1974.10482962<\/a><\/li>\n<li>Huber, P. J. (1964). Robust estimation of a location parameter. <em>The Annals of Mathematical Statistics<\/em>, 35(1), 73\u2013101. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1214\/aoms\/1177703732\">https:\/\/doi.org\/10.1214\/aoms\/1177703732<\/a><\/li>\n<li>Leys, C., Ley, C., Klein, O., Bernard, P., &amp; Licata, L. (2013). Detecting outliers: Do not use standard deviation around the mean, use absolute deviation around the median. <em>Journal of Experimental Social Psychology<\/em>, 49(4), 764\u2013766. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1016\/j.jesp.2013.03.013\">https:\/\/doi.org\/10.1016\/j.jesp.2013.03.013<\/a><\/li>\n<li>Rousseeuw, P. J., &amp; Croux, C. (1993). Alternatives to the median absolute deviation. <em>Journal of the American Statistical Association<\/em>, 88(424), 1273\u20131283. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1080\/01621459.1993.10476408\">https:\/\/doi.org\/10.1080\/01621459.1993.10476408<\/a><\/li>\n<li>Rousseeuw, P. J., &amp; Leroy, A. M. (1987). <em>Robust regression and outlier detection<\/em>. John Wiley &amp; Sons. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1002\/9781118186435\">https:\/\/doi.org\/10.1002\/9781118186435<\/a><\/li>\n<li>Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T., Cournapeau, D., Burovski, E., Peterson, P., Weckesser, W., Bright, J., van der Walt, S. J., Brett, M., Wilson, J., Millman, K. J., Mayorov, N., Nelson, A. R. J., Jones, E., Kern, R., Larson, E., Carey, C. J., \u2026 SciPy 1.0 Contributors (2020). SciPy 1.0: Fundamental algorithms for scientific computing in Python. <em>Nature Methods<\/em>, 17(3), 261\u2013272. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1038\/s41592-019-0686-2\">https:\/\/doi.org\/10.1038\/s41592-019-0686-2<\/a><\/li>\n<li>Wilcox, R. R. (2017). <em>Introduction to robust estimation and hypothesis testing<\/em> (4th ed.). Academic Press. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1016\/C2015-0-02269-8\">https:\/\/doi.org\/10.1016\/C2015-0-02269-8<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet pour calculer l&rsquo;\u00e9cart absolu m\u00e9dian (MAD) en Python appliqu\u00e9 aux donn\u00e9es psychom\u00e9triques et \u00e0 l&rsquo;\u00e9limination robuste des donn\u00e9es aberrantes.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[1829,7604],"tags":[7606,7605,2468,1983,2903],"class_list":["post-5726","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-statistique","category-psychometrie-et-programmation","tag-donnees-comportementales","tag-ecart-absolu-median","tag-python","tag-statistiques-robustes","tag-statsmodels"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/5726","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=5726"}],"version-history":[{"count":0,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/5726\/revisions"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5726"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5726"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5726"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}