{"id":4303,"date":"2026-09-11T07:16:27","date_gmt":"2026-09-11T07:16:27","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-calculer-skewness-kurtosis-python\/"},"modified":"2026-09-11T07:16:27","modified_gmt":"2026-09-11T07:16:27","slug":"comment-calculer-skewness-kurtosis-python","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-calculer-skewness-kurtosis-python","title":{"rendered":"Comment calculer le skewness et le kurtosis en Python"},"content":{"rendered":"<p>Dans le champ de la psychom\u00e9trie contemporaine, de la neuropsychologie cognitive et de l&rsquo;analyse computationnelle des donn\u00e9es comportementales, la caract\u00e9risation rigoureuse de la forme des distributions empiriques constitue une condition pr\u00e9alable fondamentale \u00e0 toute inf\u00e9rence statistique valide. Bien trop souvent, la pratique analytique standard se borne \u00e0 l&rsquo;\u00e9valuation des param\u00e8tres de tendance centrale et de dispersion \u2014 au premier rang desquels figurent la moyenne arithm\u00e9tique et la variance \u2014, r\u00e9duisant ainsi des ph\u00e9nom\u00e8nes cognitifs hautement complexes \u00e0 une synth\u00e8se excessivement simplificatrice. Or, les distributions r\u00e9elles issues d&rsquo;\u00e9valuations standardis\u00e9es, de batteries de tests neuropsychologiques ou de paradigmes exp\u00e9rimentaux mesurant la latence des r\u00e9ponses ne pr\u00e9sentent que tr\u00e8s rarement les propri\u00e9t\u00e9s id\u00e9alis\u00e9es de sym\u00e9trie et de retomb\u00e9e exponentielle caract\u00e9ristiques de la loi normale th\u00e9orique formul\u00e9e par Carl Friedrich Gauss.<\/p>\n<p>L&rsquo;exploration approfondie des moments statistiques d&rsquo;ordre sup\u00e9rieur, sp\u00e9cifiquement le troisi\u00e8me moment centr\u00e9 normalis\u00e9 nomm\u00e9 <em>skewness<\/em> (ou coefficient d&rsquo;asym\u00e9trie) et le quatri\u00e8me moment centr\u00e9 normalis\u00e9 d\u00e9sign\u00e9 sous le terme de <em>kurtosis<\/em> (ou coefficient d&rsquo;aplatissement et d&rsquo;\u00e9paisseur des queues), permet de d\u00e9passer ces lacunes structurelles. Ces m\u00e9triques apportent un \u00e9clairage quantitatif indispensable sur la morphologie des distributions : elles r\u00e9v\u00e8lent la pr\u00e9sence de planchers ou de plafonds cliniques, l&rsquo;asym\u00e9trie intrins\u00e8que des processus attentionnels, ainsi que la propension d&rsquo;un \u00e9chantillon \u00e0 produire des observations extr\u00eames et atypiques. Ignorer ces propri\u00e9t\u00e9s de forme expose le chercheur \u00e0 des distorsions s\u00e9v\u00e8res lors de l&rsquo;application de mod\u00e8les lin\u00e9aires g\u00e9n\u00e9raux, menant \u00e0 une inflation pernicieuse des erreurs d&rsquo;inf\u00e9rence de type I ou de type II.<\/p>\n<p>Le langage de programmation <a rel=\"noopener noreferrer\" href=\"https:\/\/www.python.org\/\">Python<\/a> s&rsquo;est impos\u00e9 au cours de la derni\u00e8re d\u00e9cennie comme l&rsquo;infrastructure computationnelle pr\u00e9dominante pour la mod\u00e9lisation statistique avanc\u00e9e, la science des donn\u00e9es et la recherche reproductible en sciences humaines et comportementales. Gr\u00e2ce \u00e0 la synergie fonctionnelle \u00e9tablie entre des biblioth\u00e8ques scientifiques de premier ordre telles que <a rel=\"noopener noreferrer\" href=\"https:\/\/numpy.org\/\">NumPy<\/a>, <a rel=\"noopener noreferrer\" href=\"https:\/\/scipy.org\/\">SciPy<\/a> et <a rel=\"noopener noreferrer\" href=\"https:\/\/pandas.pydata.org\/\">Pandas<\/a>, les chercheurs disposent d\u00e9sormais d&rsquo;outils algorithmiques d&rsquo;une remarquable puissance pour quantifier, tester et mod\u00e9liser l&rsquo;asym\u00e9trie et l&rsquo;aplatissement de donn\u00e9es multidimensionnelles complexes. Ce manuel d&rsquo;expertise se propose de diss\u00e9quer de mani\u00e8re exhaustive les fondements math\u00e9matiques, les implications psychom\u00e9triques et les protocoles d&rsquo;impl\u00e9mentation logicielle du skewness et du kurtosis au sein de l&rsquo;\u00e9cosyst\u00e8me Python contemporain.<\/p>\n<h2>1. Introduction aux moments statistiques d&rsquo;ordre sup\u00e9rieur en psychom\u00e9trie<\/h2>\n<h3>1.1 Au-del\u00e0 de la moyenne et de la variance : les moments d&rsquo;ordre 3 et 4<\/h3>\n<p>L&rsquo;analyse distributionnelle classique repose traditionnellement sur la th\u00e9orie des moments d&rsquo;une variable al\u00e9atoire, concepts math\u00e9matiques directement h\u00e9rit\u00e9s de la m\u00e9canique rationnelle o\u00f9 ils d\u00e9crivent la distribution de la masse dans l&rsquo;espace. En statistique descriptive, le premier moment brut correspond \u00e0 l&rsquo;esp\u00e9rance math\u00e9matique ou moyenne arithm\u00e9tique, agissant comme le centre de gravit\u00e9 de la masse probabiliste, tandis que le deuxi\u00e8me moment centr\u00e9 quantifie la variance, c&rsquo;est-\u00e0-dire l&rsquo;inertie ou la dispersion globale des observations autour de ce point d&rsquo;\u00e9quilibre. N\u00e9anmoins, deux distributions empiriques poss\u00e9dant une moyenne rigoureusement identique et une variance parfaitement \u00e9quivalente peuvent pr\u00e9senter des topologies radicalement divergentes : l&rsquo;une peut \u00eatre harmonieusement \u00e9quilibr\u00e9e tandis que l&rsquo;autre concentre sa densit\u00e9 d&rsquo;observations d&rsquo;un c\u00f4t\u00e9 de l&rsquo;axe tout en projetant une longue tra\u00eene unidirectionnelle vers des valeurs extr\u00eames.<\/p>\n<p>C&rsquo;est pr\u00e9cis\u00e9ment pour lever cette ind\u00e9termination fonctionnelle que s&rsquo;imposent les moments centr\u00e9s d&rsquo;ordre sup\u00e9rieur. Le moment centr\u00e9 d&rsquo;ordre trois permet de formaliser l&rsquo;asym\u00e9trie structurelle d&rsquo;une distribution. Math\u00e9matiquement, il correspond \u00e0 l&rsquo;esp\u00e9rance des d\u00e9viations individuelles \u00e0 la moyenne \u00e9lev\u00e9es \u00e0 la troisi\u00e8me puissance. En \u00e9levant les \u00e9carts au cube, l&rsquo;op\u00e9ration pr\u00e9serve le signe alg\u00e9brique de la distance \u00e0 la moyenne : une valeur tr\u00e8s sup\u00e9rieure \u00e0 celle-ci contribuera de fa\u00e7on positive et massive \u00e0 la somme globale, alors qu&rsquo;une valeur tr\u00e8s inf\u00e9rieure exercera une traction n\u00e9gative sym\u00e9trique. Ainsi, ce moment capte la pr\u00e9pond\u00e9rance directionnelle des \u00e9carts et mesure le d\u00e9s\u00e9quilibre dynamique entre le flanc gauche et le flanc droit de la courbe de densit\u00e9.<\/p>\n<p>Le moment centr\u00e9 d&rsquo;ordre quatre, pour sa part, \u00e9l\u00e8ve les d\u00e9viations \u00e0 la quatri\u00e8me puissance. Cette exponentiation paire neutralise tout effet directionnel tout en surpond\u00e9rant drastiquement les observations situ\u00e9es aux confins de la distribution. Contrairement \u00e0 une id\u00e9e re\u00e7ue largement v\u00e9hicul\u00e9e dans la litt\u00e9rature p\u00e9dagogique \u00e9l\u00e9mentaire, ce quatri\u00e8me moment ne mesure pas simplement la \u00ab pointicit\u00e9 \u00bb du sommet de la distribution, mais renseigne avant tout sur la propension d&rsquo;une loi \u00e0 g\u00e9n\u00e9rer des \u00e9v\u00e9nements rares situ\u00e9s dans ses zones distales. Dans le contexte des scores psychologiques \u2014 qu&rsquo;il s&rsquo;agisse de quotients intellectuels, de mesures d&rsquo;anxi\u00e9t\u00e9 ou d&rsquo;indices de d\u00e9clin mn\u00e9sique \u2014, ces deux indicateurs constituent des m\u00e9triques descriptives capitales pour attester de la morphologie r\u00e9elle des traits latents mesur\u00e9s et v\u00e9rifier la plausibilit\u00e9 des postulats d&rsquo;\u00e9chantillonnage.<\/p>\n<h3>1.2 L&rsquo;hypoth\u00e8se de normalit\u00e9 dans les sciences cognitives et psychologiques<\/h3>\n<p>La quasi-totalit\u00e9 des architectures statistiques param\u00e9triques classiques employ\u00e9es en sciences cognitives, en psychom\u00e9trie et en neurosciences computationnelles \u2014 incluant l&rsquo;analyse de variance univari\u00e9e et multivari\u00e9e (ANOVA\/MANOVA), la r\u00e9gression lin\u00e9aire ordinaire (OLS) et la mod\u00e9lisation par \u00e9quations structurelles (SEM) \u2014 repose sur le postulat fondamental de normalit\u00e9 distributionnelle des r\u00e9sidus ou des variables manifestes. La distribution normale, formul\u00e9e par la densit\u00e9 gaussienne, requiert th\u00e9oriquement une sym\u00e9trie parfaite ainsi qu&rsquo;un profil d&rsquo;extinction des queues d\u00e9termin\u00e9 avec exactitude par ses deux uniques param\u00e8tres libres : son esp\u00e9rance et son \u00e9cart-type. D\u00e8s lors qu&rsquo;un jeu de donn\u00e9es empirique s&rsquo;\u00e9carte substantiellement de cette structure th\u00e9orique, la validit\u00e9 des conclusions math\u00e9matiques se trouve compromise.<\/p>\n<p>Dans la pratique clinique et de laboratoire, les d\u00e9viations par rapport \u00e0 la courbe de Gauss constituent la norme plut\u00f4t que l&rsquo;exception. Les temps de r\u00e9action observ\u00e9s lors de paradigmes attentionnels ou de chronom\u00e9trie mentale pr\u00e9sentent invariablement une asym\u00e9trie positive prononc\u00e9e, caract\u00e9ris\u00e9e par une accumulation rapide de r\u00e9ponses physiologiques rapides suivie d&rsquo;un \u00e9talement asym\u00e9trique li\u00e9 aux fluctuations attentionnelles intermittentes. Inversement, les \u00e9chelles standardis\u00e9es d&rsquo;\u00e9valuation clinique de la d\u00e9pression, du stress post-traumatique ou des comp\u00e9tences ex\u00e9cutives appliqu\u00e9es \u00e0 des cohortes non psychiatriques souffrent structurellement d&rsquo;effets de plancher s\u00e9v\u00e8res, concentrant une masse critique d&rsquo;individus sur le score minimal de l&rsquo;\u00e9chelle, g\u00e9n\u00e9rant ainsi des singularit\u00e9s distributives incompatibles avec la continuit\u00e9 gaussienne.<\/p>\n<p>Le non-respect d\u00e9lib\u00e9r\u00e9 ou non diagnostiqu\u00e9 de ces postulats morphologiques engendre des r\u00e9percussions s\u00e9v\u00e8res sur l&rsquo;inf\u00e9rence statistique. D&rsquo;une part, l&rsquo;asym\u00e9trie alt\u00e8re l&rsquo;estimation des erreurs types associ\u00e9es aux coefficients de r\u00e9gression, r\u00e9duisant artificiellement la puissance statistique et gonflant le taux d&rsquo;erreur de type II (incapacit\u00e9 \u00e0 d\u00e9tecter un effet exp\u00e9rimental pourtant r\u00e9el). D&rsquo;autre part, un aplatissement anormal marqu\u00e9 par des queues \u00e9paisses fragilise la r\u00e9silience du test <em>F<\/em> de Fisher et du test <em>t<\/em> de Student en provoquant une sur\u00e9valuation de la significativit\u00e9 statistique conduisant \u00e0 des faux positifs dommageables (erreurs de type I). D\u00e8s lors, l&rsquo;\u00e9valuation syst\u00e9matique et rigoureuse du skewness et du kurtosis s&rsquo;affirme non pas comme une \u00e9tape exploratoire facultative, mais comme un imp\u00e9ratif m\u00e9thodologique incontournable r\u00e9gissant le choix \u00e9clair\u00e9 entre analyses param\u00e9triques, transformations math\u00e9matiques correctives ou basculement vers la mod\u00e9lisation non param\u00e9trique robuste.<\/p>\n<h3>1.3 L&rsquo;\u00e9cosyst\u00e8me Python pour l&rsquo;analyse distributionnelle avanc\u00e9e<\/h3>\n<p>Historiquement domin\u00e9 par des progiciels propri\u00e9taires et payants tels que SPSS, SAS ou Statistica, le paysage computationnel de la recherche psychologique et comportementale a connu une mutation paradigmatique au cours de la d\u00e9cennie \u00e9coul\u00e9e en faveur des environnements scientifiques ouverts et orient\u00e9s vers le code source, parmi lesquels Python occupe une place de tout premier ordre. Cette transition s&rsquo;explique par l&rsquo;exigence contemporaine de reproductibilit\u00e9 scientifique int\u00e9grale des analyses, de tra\u00e7abilit\u00e9 des transformations de donn\u00e9es et d&rsquo;automatisation des pipelines de traitement statistique, exigences auxquelles les interfaces graphiques classiques peinent \u00e0 r\u00e9pondre avec la flexibilit\u00e9 requise.<\/p>\n<p>L&rsquo;\u00e9cosyst\u00e8me Python tire son extraordinaire efficience analytique de la compl\u00e9mentarit\u00e9 symbiotique de ses trois piliers scientifiques fondamentaux : NumPy, SciPy et Pandas. La biblioth\u00e8que <a rel=\"noopener noreferrer\" href=\"https:\/\/numpy.org\/\">NumPy<\/a> procure la structure de donn\u00e9es matricielle ultra-performante du tableau multidimensionnel (<code>ndarray<\/code>), ex\u00e9cutant des calculs vectoris\u00e9s pr\u00e9compil\u00e9s en langage C, ce qui \u00e9limine les goulots d&rsquo;\u00e9tranglement inh\u00e9rents aux boucles it\u00e9ratives du langage interpr\u00e9t\u00e9. Par-dessus cette couche de calcul matriciel, <a rel=\"noopener noreferrer\" href=\"https:\/\/scipy.org\/\">SciPy<\/a> d\u00e9ploie son module sp\u00e9cialis\u00e9 <code>scipy.stats<\/code>, qui renferme une panoplie monumentale de distributions de probabilit\u00e9s continues et discr\u00e8tes, ainsi que des algorithmes d\u00e9di\u00e9s \u00e0 l&rsquo;estimation des moments statistiques et au d\u00e9ploiement de tests d&rsquo;hypoth\u00e8se formels avec gestion diff\u00e9renti\u00e9e des degr\u00e9s de libert\u00e9 et des corrections d&rsquo;\u00e9chantillonnage.<\/p>\n<p>Enfin, <a rel=\"noopener noreferrer\" href=\"https:\/\/pandas.pydata.org\/\">Pandas<\/a> vient couronner cet \u00e9difice en introduisant les objets <code>Series<\/code> et <code>DataFrame<\/code>, particuli\u00e8rement adapt\u00e9s \u00e0 la manipulation de matrices de donn\u00e9es complexes issues d&rsquo;enqu\u00eates psychom\u00e9triques ou de cohortes cliniques. Pandas encapsule les algorithmes bas niveau de NumPy et SciPy au sein d&rsquo;interfaces expressives, permettant de calculer les indices d&rsquo;asym\u00e9trie et d&rsquo;aplatissement \u00e0 travers de multiples sous-groupes cliniques ou conditions exp\u00e9rimentales en quelques lignes de commande d&rsquo;une remarquable limpidit\u00e9 syntaxique. Comparativement aux bo\u00eetes noires logicielles de l&rsquo;informatique propri\u00e9taire, Python autorise une personnalisation algorithmique absolue, garantissant aux chercheurs un contr\u00f4le algorithmique total sur les corrections de biais appliqu\u00e9es \u00e0 leurs s\u00e9ries de donn\u00e9es.<\/p>\n<h2>2. Fondements th\u00e9oriques de l&rsquo;asym\u00e9trie (skewness) dans les donn\u00e9es comportementales<\/h2>\n<h3>2.1 D\u00e9finition math\u00e9matique du coefficient d&rsquo;asym\u00e9trie<\/h3>\n<p>D&rsquo;un point de vue axiomatique, le coefficient d&rsquo;asym\u00e9trie d&rsquo;une variable al\u00e9atoire continue <span class=\"arabpsy-math-inline\" data-latex=\"X\">$X$<\/span> d&rsquo;esp\u00e9rance <span class=\"arabpsy-math-inline\" data-latex=\"\\mu\">$\\mu$<\/span> et d&rsquo;\u00e9cart-type <span class=\"arabpsy-math-inline\" data-latex=\"\\sigma\">$\\sigma$<\/span> est d\u00e9fini comme le troisi\u00e8me moment centr\u00e9 standardis\u00e9, d\u00e9sign\u00e9 usuellement par la lettre grecque gamma <span class=\"arabpsy-math-inline\" data-latex=\"\\gamma_1\">$\\gamma_1$<\/span> dans la formulation originale introduite par Karl Pearson. Son expression formelle dans la population th\u00e9orique s&rsquo;\u00e9crit :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"\\gamma_1 = \\mathbb{E}\\left[ \\left( \\frac{X - \\mu}{\\sigma} \\right)^3 \\right] = \\frac{\\mathbb{E}[(X - \\mu)^3]}{(\\mathbb{E}[(X - \\mu)^2])^{3\/2}} = \\frac{\\mu_3}{\\sigma^3}\">$$\\gamma_1 = \\mathbb{E}\\left[ \\left( \\frac{X &#8211; \\mu}{\\sigma} \\right)^3 \\right] = \\frac{\\mathbb{E}[(X &#8211; \\mu)^3]}{(\\mathbb{E}[(X &#8211; \\mu)^2])^{3\/2}} = \\frac{\\mu_3}{\\sigma^3}$$<\/span><\/p>\n<p>Cette formulation poss\u00e8de une propri\u00e9t\u00e9 math\u00e9matique cruciale : l&rsquo;invariance d&rsquo;\u00e9chelle et de translation. Si l&rsquo;on applique une transformation affine <span class=\"arabpsy-math-inline\" data-latex=\"Y = aX + b\">$Y = aX + b$<\/span> avec <span class=\"arabpsy-math-inline\" data-latex=\"a &gt; 0\">$a > 0$<\/span>, le coefficient <span class=\"arabpsy-math-inline\" data-latex=\"\\gamma_1\">$\\gamma_1$<\/span> demeure strictement invariant, ce qui rend cet indice directement comparable entre des \u00e9chelles psychom\u00e9triques dot\u00e9es de m\u00e9triques d&rsquo;unit\u00e9s ou d&rsquo;\u00e9tendues totalement arbitraires.<\/p>\n<p>Dans le contexte empirique d&rsquo;un \u00e9chantillon fini de taille <span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span>, compos\u00e9 d&rsquo;observations <span class=\"arabpsy-math-inline\" data-latex=\"x_1, x_2, dots, x_n\">$x_1, x_2, dots, x_n$<\/span> de moyenne <span class=\"arabpsy-math-inline\" data-latex=\"\\bar{x}\">$\\bar{x}$<\/span>, l&rsquo;estimateur brut ou \u00ab plug-in \u00bb \u2014 fr\u00e9quemment appel\u00e9 coefficient d&rsquo;asym\u00e9trie d&rsquo;\u00e9chantillon de Fisher et not\u00e9 <span class=\"arabpsy-math-inline\" data-latex=\"g_1\">$g_1$<\/span> \u2014 repose sur les moments empiriques d&rsquo;ordre deux (<span class=\"arabpsy-math-inline\" data-latex=\"m_2\">$m_2$<\/span>) et trois (<span class=\"arabpsy-math-inline\" data-latex=\"m_3\">$m_3$<\/span>) :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"m_2 = \\frac{1}{n}\\sum_{i=1}^n (x_i - \\bar{x})^2 \\quad ; \\quad m_3 = \\frac{1}{n}\\sum_{i=1}^n (x_i - \\bar{x})^3 \\quad ; \\quad g_1 = \\frac{m_3}{m_2^{3\/2}} = \\frac{\\frac{1}{n}\\sum_{i=1}^n (x_i - \\bar{x})^3}{\\left( \\frac{1}{n}\\sum_{i=1}^n (x_i - \\bar{x})^2 \\right)^{3\/2}}\">$$m_2 = \\frac{1}{n}\\sum_{i=1}^n (x_i &#8211; \\bar{x})^2 \\quad ; \\quad m_3 = \\frac{1}{n}\\sum_{i=1}^n (x_i &#8211; \\bar{x})^3 \\quad ; \\quad g_1 = \\frac{m_3}{m_2^{3\/2}} = \\frac{\\frac{1}{n}\\sum_{i=1}^n (x_i &#8211; \\bar{x})^3}{\\left( \\frac{1}{n}\\sum_{i=1}^n (x_i &#8211; \\bar{x})^2 \\right)^{3\/2}}$$<\/span><\/p>\n<p>Toutefois, cet estimateur na\u00eff souffre d&rsquo;un biais syst\u00e9matique lorsque la taille de l&rsquo;\u00e9chantillon est restreinte. Pour corriger cette d\u00e9rive pour une distribution sous-jacente gaussienne, on introduit l&rsquo;estimateur sans biais ajust\u00e9 d&rsquo;\u00e9chantillon, not\u00e9 <span class=\"arabpsy-math-inline\" data-latex=\"G_1\">$G_1$<\/span>, impl\u00e9ment\u00e9 originellement par Cram\u00e9r et adopt\u00e9 par de multiples progiciels statistiques :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"G_1 = \\frac{\\sqrt{n(n-1)}}{n-2} , g_1 = \\frac{n}{(n-1)(n-2)} \\sum_{i=1}^n \\left( \\frac{x_i - \\bar{x}}{s} \\right)^3\">$$G_1 = \\frac{\\sqrt{n(n-1)}}{n-2} , g_1 = \\frac{n}{(n-1)(n-2)} \\sum_{i=1}^n \\left( \\frac{x_i &#8211; \\bar{x}}{s} \\right)^3$$<\/span><\/p>\n<p>o\u00f9 <span class=\"arabpsy-math-inline\" data-latex=\"s\">$s$<\/span> repr\u00e9sente l&rsquo;\u00e9cart-type d&rsquo;\u00e9chantillon corrig\u00e9 de Bessel (avec <span class=\"arabpsy-math-inline\" data-latex=\"n-1\">$n-1$<\/span> au d\u00e9nominateur). Pour interpr\u00e9ter ces valeurs, les statisticiens se r\u00e9f\u00e8rent fr\u00e9quemment \u00e0 la taxonomie empirique formalis\u00e9e par Bulmer. Selon cette convention classique : une valeur de $|G_1| < 0{,}5$ indique une distribution approximativement sym\u00e9trique ; une valeur comprise entre <span class=\"arabpsy-math-inline\" data-latex=\"0{,}5\">$0{,}5$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"1{,}0\">$1{,}0$<\/span> signale une asym\u00e9trie mod\u00e9r\u00e9e ; enfin, un coefficient exc\u00e9dant <span class=\"arabpsy-math-inline\" data-latex=\"1{,}0\">$1{,}0$<\/span> en valeur absolue caract\u00e9rise une distribution hautement asym\u00e9trique imposant des pr\u00e9cautions m\u00e9thodologiques substantielles.<\/p>\n<h3>2.2 Asym\u00e9trie positive versus asym\u00e9trie n\u00e9gative : interpr\u00e9tations cliniques<\/h3>\n<p>Le signe alg\u00e9brique issu du calcul du skewness traduit la dynamique morphologique de la tra\u00eene de distribution. Une asym\u00e9trie positive (<span class=\"arabpsy-math-inline\" data-latex=\"\\gamma_1 &gt; 0\">$\\gamma_1 > 0$<\/span>, ou <em>right-skewed<\/em>) refl\u00e8te une distribution dont la masse des observations est concentr\u00e9e sur les valeurs inf\u00e9rieures de l&rsquo;axe num\u00e9rique, tandis que la queue de distribution s&rsquo;\u00e9tire de fa\u00e7on prolong\u00e9e vers l&rsquo;extr\u00e9mit\u00e9 droite (les valeurs \u00e9lev\u00e9es). En neuropsychologie cognitive, ce patron morphologique constitue la signature universelle des paradigmes de chronom\u00e9trie mentale. Les temps de r\u00e9action observ\u00e9s dans des t\u00e2ches de discrimination perceptive ou de type Go\/No-Go pr\u00e9sentent invariablement une telle morphologie : le syst\u00e8me cognitif produit la majeure partie des r\u00e9ponses motrices dans une fen\u00eatre physiologique incompressible (autour de 250 \u00e0 400 millisecondes), mais des d\u00e9faillances attentionnelles transitoires ou des fluctuations de vigilance g\u00e9n\u00e8rent une longue tra\u00eene de r\u00e9ponses retard\u00e9es pouvant atteindre plusieurs secondes.<\/p>\n<p>\u00c0 l&rsquo;oppos\u00e9, une asym\u00e9trie n\u00e9gative ($gamma_1 < 0$, ou <em>left-skewed<\/em>) mat\u00e9rialise une distribution dont le gros de la densit\u00e9 probabiliste s&rsquo;accumule sur les valeurs \u00e9lev\u00e9es, \u00e9tirant une longue queue vers la gauche, c&rsquo;est-\u00e0-dire vers les valeurs basses. Ce ph\u00e9nom\u00e8ne est particuli\u00e8rement pr\u00e9valent lors de l&rsquo;administration d&rsquo;\u00e9preuves de d\u00e9pistage cognitif global \u2014 telles que le Mini-Mental State Examination (MMSE) ou l&rsquo;\u00e9valuation cognitive de Montr\u00e9al (MoCA) \u2014 appliqu\u00e9es \u00e0 des populations saines ou pr\u00e9sentant des troubles neurocognitifs tr\u00e8s l\u00e9gers. En raison d&rsquo;un effet de plafond massif, une vaste majorit\u00e9 d&rsquo;individus sains atteindra le score maximal ou quasi-maximal (28 \u00e0 30 points), tandis que les quelques sujets manifestant des dysfonctionnements ex\u00e9cutifs ou amn\u00e9siques s&rsquo;\u00e9chelonneront le long de la queue gauche, \u00e9tendant artificiellement le flanc inf\u00e9rieur de la distribution.<\/p>\n<p>Sur le plan topologique \u00e9l\u00e9mentaire, le signe de l&rsquo;asym\u00e9trie brise l&rsquo;alignement classique des param\u00e8tres de position. Dans une distribution unimodale parfaitement sym\u00e9trique, la moyenne arithm\u00e9tique, la m\u00e9diane et le mode se superposent rigoureusement en un point unique d&rsquo;abscisse. D\u00e8s qu&rsquo;une asym\u00e9trie positive s&rsquo;installe, la moyenne arithm\u00e9tique se trouve irr\u00e9m\u00e9diablement tract\u00e9e vers la droite sous l&rsquo;effet disproportionn\u00e9 des valeurs extr\u00eames positives, positionnant les m\u00e9triques dans l&rsquo;ordre hi\u00e9rarchique suivant : $text{Mode} < text{M\u00e9diane} < text{Moyenne}<span class=\"arabpsy-math-inline\" data-latex=\". \u00c0 l&#039;inverse, en r\u00e9gime d&#039;asym\u00e9trie n\u00e9gative, la relation ordinale s&#039;inverse m\u00e9caniquement :\">$. \u00c0 l&rsquo;inverse, en r\u00e9gime d&rsquo;asym\u00e9trie n\u00e9gative, la relation ordinale s&rsquo;inverse m\u00e9caniquement :$<\/span>text{Moyenne} < text{M\u00e9diane} < text{Mode}$. Notons avec insistance qu'un coefficient de skewness rigoureusement nul n'implique nullement que la distribution soit normale : une distribution bimodale ou uniforme parfaitement sym\u00e9trique poss\u00e9dera un skewness \u00e9gal \u00e0 z\u00e9ro tout en violant frontalement la morphologie de Gauss.<\/p>\n<h3>2.3 Impact de l&rsquo;asym\u00e9trie sur l&rsquo;inf\u00e9rence statistique<\/h3>\n<p>L&rsquo;asym\u00e9trie ne repr\u00e9sente pas un simple artefact cosm\u00e9tique de repr\u00e9sentation graphique : elle affecte de mani\u00e8re directe et d\u00e9l\u00e9t\u00e8re les fondements de la th\u00e9orie de l&rsquo;\u00e9chantillonnage. En premier lieu, lorsque la distribution d&rsquo;origine est fortement asym\u00e9trique, le th\u00e9or\u00e8me central limite requiert un volume d&rsquo;\u00e9chantillons consid\u00e9rablement plus \u00e9lev\u00e9 que les 30 observations couramment prescrites dans les manuels introductifs pour que la distribution d&rsquo;\u00e9chantillonnage de la moyenne converge de mani\u00e8re acceptable vers la normalit\u00e9. Dans des conditions de skewness s\u00e9v\u00e8re (<span class=\"arabpsy-math-inline\" data-latex=\"|G_1| &gt; 2\">$|G_1| > 2$<\/span>), des \u00e9chantillons atteignant <span class=\"arabpsy-math-inline\" data-latex=\"n = 100\">$n = 100$<\/span> \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"n = 500\">$n = 500$<\/span> peuvent demeurer insuffisants pour neutraliser les d\u00e9formations de l&rsquo;erreur type, compromettant la pr\u00e9cision des intervalles de confiance param\u00e9triques bas\u00e9s sur la distribution <em>t<\/em> de Student.<\/p>\n<p>En second lieu, la robustesse du mod\u00e8le lin\u00e9aire g\u00e9n\u00e9ralis\u00e9 face aux d\u00e9viations d&rsquo;asym\u00e9trie est asym\u00e9trique selon les conditions exp\u00e9rimentales. Lorsque les tailles d&rsquo;\u00e9chantillons entre deux groupes cliniques sont in\u00e9gales et que les distributions manifestent une asym\u00e9trie divergente coupl\u00e9e \u00e0 une h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 (in\u00e9galit\u00e9 des variances), le taux d&rsquo;erreur de premi\u00e8re esp\u00e8ce de l&rsquo;ANOVA s&rsquo;effondre dramatiquement, pouvant faire culminer le risque <span class=\"arabpsy-math-inline\" data-latex=\"\\alpha\">$\\alpha$<\/span> r\u00e9el au-del\u00e0 de 15 % pour un seuil nominal fix\u00e9 \u00e0 5 %. La comparaison de groupes de tailles dissemblables devient alors fallacieuse, les tests d&rsquo;hypoth\u00e8se produisant des d\u00e9cisions erron\u00e9es bas\u00e9es sur des estimations distordues des moyennes de groupes.<\/p>\n<p>Enfin, dans le domaine sp\u00e9cifique de la psychom\u00e9trie multivari\u00e9e, l&rsquo;impact de l&rsquo;asym\u00e9trie est particuli\u00e8rement destructeur sur les analyses factorielles exploratoires (EFA) et confirmatoires (CFA). Les coefficients de corr\u00e9lation lin\u00e9aire de Pearson calcul\u00e9s entre des variables manifestes pr\u00e9sentant des degr\u00e9s d&rsquo;asym\u00e9trie oppos\u00e9s ou divergents subissent une att\u00e9nuation math\u00e9matique artificielle : leur valeur absolue se trouve syst\u00e9matiquement born\u00e9e en de\u00e7\u00e0 de 1. Ce ph\u00e9nom\u00e8ne g\u00e9n\u00e8re l&rsquo;\u00e9mergence d&rsquo;artefacts factoriels pernicieux (\u00ab facteurs de difficult\u00e9 \u00bb ou \u00ab facteurs de forme \u00bb), incitant le psychom\u00e9tricien \u00e0 scinder un construit psychologique pourtant unitaire en multiples sous-dimensions artificielles qui ne refl\u00e8tent que des disparit\u00e9s de skewness entre items.<\/p>\n<h2>3. Fondements th\u00e9oriques de l&rsquo;aplatissement (kurtosis) et d\u00e9tection des valeurs extr\u00eames<\/h2>\n<h3>3.1 D\u00e9finition math\u00e9matique et concept d&rsquo;\u00e9paississement des queues<\/h3>\n<p>Le quatri\u00e8me moment statistique standardis\u00e9, traditionnellement d\u00e9sign\u00e9 sous l&rsquo;appellation de kurtosis, a fait l&rsquo;objet d&rsquo;un contresens historique tenace au sein de la litt\u00e9rature statistique et psychologique. Pendant pr\u00e8s d&rsquo;un si\u00e8cle, d&rsquo;innombrables manuels ont qualifi\u00e9 le kurtosis d&rsquo;indicateur d&rsquo;\u00ab acuit\u00e9 \u00bb, de \u00ab pointicit\u00e9 \u00bb ou de \u00ab pic \u00bb du sommet de la cloche distributionnelle. Des d\u00e9monstrations math\u00e9matiques formelles, notamment synth\u00e9tis\u00e9es par Peter H. Westfall en 2014, ont pourtant \u00e9tabli sans ambigu\u00eft\u00e9 que le kurtosis ne renseigne presque rien sur la configuration centrale de la distribution : il constitue exclusivement une mesure de l&rsquo;\u00e9paisseur relative et de la propension des queues de distribution \u00e0 engendrer des valeurs rares, distantes et extr\u00eames.<\/p>\n<p>Sur le plan populationnel, la formulation th\u00e9orique formalis\u00e9e par Karl Pearson pour d\u00e9finir le kurtosis, usuellement d\u00e9sign\u00e9e sous le symbole <span class=\"arabpsy-math-inline\" data-latex=\"\\beta_2\">$\\beta_2$<\/span>, s&rsquo;exprime par le ratio du quatri\u00e8me moment centr\u00e9 sur le carr\u00e9 du deuxi\u00e8me moment centr\u00e9 (c&rsquo;est-\u00e0-dire le carr\u00e9 de la variance) :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"\\beta_2 = \\mathbb{E}\\left[ \\left( \\frac{X - \\mu}{\\sigma} \\right)^4 \\right] = \\frac{\\mathbb{E}[(X - \\mu)^4]}{(\\mathbb{E}[(X - \\mu)^2])^2} = \\frac{\\mu_4}{\\sigma^4}\">$$\\beta_2 = \\mathbb{E}\\left[ \\left( \\frac{X &#8211; \\mu}{\\sigma} \\right)^4 \\right] = \\frac{\\mathbb{E}[(X &#8211; \\mu)^4]}{(\\mathbb{E}[(X &#8211; \\mu)^2])^2} = \\frac{\\mu_4}{\\sigma^4}$$<\/span><\/p>\n<p>Dans cette \u00e9quation, l&rsquo;\u00e9l\u00e9vation des scores centr\u00e9s et r\u00e9duits \u00e0 la puissance quatre a pour effet de compresser de mani\u00e8re infinit\u00e9simale les observations situ\u00e9es dans l&rsquo;intervalle <span class=\"arabpsy-math-inline\" data-latex=\"[-\\sigma, +\\sigma]\">$[-\\sigma, +\\sigma]$<\/span> : un \u00e9cart de <span class=\"arabpsy-math-inline\" data-latex=\"0{,}5\">$0{,}5$<\/span> \u00e9cart-type \u00e9lev\u00e9 \u00e0 la puissance quatre devient <span class=\"arabpsy-math-inline\" data-latex=\"0{,}0625\">$0{,}0625$<\/span>, exer\u00e7ant un poids n\u00e9gligeable sur la valeur finale. En revanche, une observation atypique situ\u00e9e \u00e0 4 \u00e9carts-types de la moyenne se voit propuls\u00e9e \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"4^4 = 256\">$4^4 = 256$<\/span>. En cons\u00e9quence, la valeur num\u00e9rique du kurtosis est quasi int\u00e9gralement dict\u00e9e par la pr\u00e9sence, la fr\u00e9quence et l&rsquo;\u00e9loignement des points de donn\u00e9es log\u00e9s dans les queues extr\u00eames de la distribution empirique.<\/p>\n<h3>3.2 Distributions leptokurtiques, m\u00e9sokurtiques et platykurtiques<\/h3>\n<p>La typologie morphologique des distributions s&rsquo;organise autour d&rsquo;un continuum tripartite dont l&rsquo;\u00e9talon de mesure universel est constitu\u00e9 par la distribution normale gaussienne, qualifi\u00e9e d&rsquo;\u00e9tat <em>m\u00e9sokurtique<\/em>. Par int\u00e9gration math\u00e9matique de la fonction de densit\u00e9 gaussienne, il est d\u00e9montr\u00e9 de mani\u00e8re exacte que pour toute loi normale, le ratio de Pearson <span class=\"arabpsy-math-inline\" data-latex=\"\\beta_2\">$\\beta_2$<\/span> \u00e9quivaut rigoureusement \u00e0 3. Toute distribution empirique ou th\u00e9orique dont le quatri\u00e8me moment standardis\u00e9 est \u00e9gal \u00e0 3 pr\u00e9sente des queues dont le taux de d\u00e9croissance exponentielle est congruent \u00e0 celui de la loi de Gauss standard.<\/p>\n<p>Lorsque le coefficient de kurtosis exc\u00e8de cette valeur seuil de 3, la distribution est qualifi\u00e9e de <em>leptokurtique<\/em>. Ces lois de probabilit\u00e9s \u2014 dont la loi de Student \u00e0 faibles degr\u00e9s de libert\u00e9, la loi logistique ou la loi de Laplace offrent des illustrations prototypiques \u2014 se caract\u00e9risent structurellement par des \u00ab queues \u00e9paisses \u00bb ou \u00ab lourdes \u00bb (<em>heavy-tailed distributions<\/em>). Dans le champ de la neuropsychologie clinique et des sciences comportementales, un profil leptokurtique indique qu&rsquo;au sein de l&rsquo;\u00e9chantillon, la survenue de performances cognitives exceptionnellement erratiques ou ralenties est substantiellement plus fr\u00e9quente que ce que ne pr\u00e9dirait une mod\u00e9lisation gaussienne standard. Ces distributions g\u00e9n\u00e8rent des amas de points distaux que l&rsquo;analyste inexp\u00e9riment\u00e9 est souvent tent\u00e9 de supprimer \u00e0 tort en les qualifiant d&rsquo;\u00ab outliers \u00bb ou d&rsquo;observations aberrantes, alors qu&rsquo;ils incarnent l&rsquo;expression authentique du processus biologique sous-jacent.<\/p>\n<p>Inversement, lorsque le coefficient est inf\u00e9rieur \u00e0 3, la distribution est dite <em>platykurtique<\/em>. Ces distributions \u2014 \u00e0 l&rsquo;instar de la loi uniforme continue ou de la loi b\u00eata sym\u00e9trique \u00e0 param\u00e8tres inf\u00e9rieurs \u00e0 un \u2014 se distinguent par des queues remarquablement \u00ab l\u00e9g\u00e8res \u00bb ou \u00ab tronqu\u00e9es \u00bb (<em>light-tailed distributions<\/em>), traduisant une extinction abrupte des probabilit\u00e9s aux bornes de l&rsquo;espace \u00e9chantillonnal. Dans ce cas, les valeurs extr\u00eames sont virtuelles ou quasi inexistantes : la dispersion des individus s&rsquo;op\u00e8re de fa\u00e7on r\u00e9guli\u00e8re \u00e0 travers l&rsquo;ensemble de l&rsquo;\u00e9tendue de l&rsquo;\u00e9chelle sans produire d&rsquo;isolats num\u00e9riques en p\u00e9riph\u00e9rie.<\/p>\n<h3>3.3 Kurtosis de Pearson versus exc\u00e8s de kurtosis de Fisher<\/h3>\n<p>La coexistence historique de deux d\u00e9finitions computationnelles concurrentes constitue l&rsquo;une des sources les plus r\u00e9currentes d&rsquo;incompr\u00e9hension et d&rsquo;erreurs de transcription au sein des rapports de recherche scientifique. Pour clarifier la communication et centrer l&rsquo;indicateur d&rsquo;aplatissement sur la distribution normale de r\u00e9f\u00e9rence, Sir Ronald Fisher a propos\u00e9 une modification \u00e9l\u00e9mentaire mais syst\u00e9matique : l&rsquo;exc\u00e8s de kurtosis (souvent d\u00e9sign\u00e9 par <span class=\"arabpsy-math-inline\" data-latex=\"\\gamma_2\">$\\gamma_2$<\/span> ou <em>excess kurtosis<\/em>). L&rsquo;exc\u00e8s de kurtosis de Fisher se d\u00e9finit rigoureusement par la soustraction de la constante 3 au kurtosis historique de Pearson :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"\\gamma_2 = \\beta_2 - 3 = \\frac{\\mu_4}{\\sigma^4} - 3\">$$\\gamma_2 = \\beta_2 &#8211; 3 = \\frac{\\mu_4}{\\sigma^4} &#8211; 3$$<\/span><\/p>\n<p>Sous cette convention de Fisher :<br \/>\nUne distribution m\u00e9sokurtique (parfaitement normale) poss\u00e8de un exc\u00e8s de kurtosis de <span class=\"arabpsy-math-inline\" data-latex=\"\\gamma_2 = 0\">$\\gamma_2 = 0$<\/span>.<br \/>\nUne distribution leptokurtique affiche un exc\u00e8s strictement positif (<span class=\"arabpsy-math-inline\" data-latex=\"\\gamma_2 &gt; 0\">$\\gamma_2 > 0$<\/span>).<br \/>\nUne distribution platykurtique g\u00e9n\u00e8re un exc\u00e8s strictement n\u00e9gatif ($gamma_2 < 0<span class=\"arabpsy-math-inline\" data-latex=\"), born\u00e9 inf\u00e9rieurement par\">$), born\u00e9 inf\u00e9rieurement par$<\/span>-2$ (valeur atteinte par la distribution binaire \u00e9quiprobable de Bernoulli).<\/p>\n<p>Sur un \u00e9chantillon empirique fini de taille <span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span>, l&rsquo;estimateur de l&rsquo;exc\u00e8s de Fisher sans biais pour une population normale, not\u00e9 <span class=\"arabpsy-math-inline\" data-latex=\"G_2\">$G_2$<\/span>, n\u00e9cessite une double correction d&rsquo;\u00e9chantillonnage complexe bas\u00e9e sur la th\u00e9orie des k-statistiques, s&rsquo;\u00e9crivant :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"G_2 = \\frac{n-1}{(n-2)(n-3)} \\left( (n+1) g_2 + 6 \\right) = \\frac{n(n+1)}{(n-1)(n-2)(n-3)} \\sum_{i=1}^n \\left( \\frac{x_i - \\bar{x}}{s} \\right)^4 - \\frac{3(n-1)^2}{(n-2)(n-3)}\">$$G_2 = \\frac{n-1}{(n-2)(n-3)} \\left( (n+1) g_2 + 6 \\right) = \\frac{n(n+1)}{(n-1)(n-2)(n-3)} \\sum_{i=1}^n \\left( \\frac{x_i &#8211; \\bar{x}}{s} \\right)^4 &#8211; \\frac{3(n-1)^2}{(n-2)(n-3)}$$<\/span><\/p>\n<p>o\u00f9 <span class=\"arabpsy-math-inline\" data-latex=\"g_2\">$g_2$<\/span> est l&rsquo;estimateur empirique brut centr\u00e9 sur z\u00e9ro : <span class=\"arabpsy-math-inline\" data-latex=\"g_2 = (m_4 \/ m_2^2) - 3\">$g_2 = (m_4 \/ m_2^2) &#8211; 3$<\/span>. Lors de la r\u00e9daction acad\u00e9mique ou de l&rsquo;exploitation de logiciels statistiques, il est rigoureusement imp\u00e9ratif d&rsquo;expliciter sans ambigu\u00eft\u00e9 si le coefficient rapport\u00e9 correspond au kurtosis brut de Pearson (<span class=\"arabpsy-math-inline\" data-latex=\"\\text{valeur normale} = 3\">$\\text{valeur normale} = 3$<\/span>) ou \u00e0 l&rsquo;exc\u00e8s de kurtosis de Fisher (<span class=\"arabpsy-math-inline\" data-latex=\"\\text{valeur normale} = 0\">$\\text{valeur normale} = 0$<\/span>), sous peine de fausser radicalement la lecture critique des donn\u00e9es publi\u00e9es.<\/p>\n<h2>4. Pr\u00e9paration de l&rsquo;environnement Python pour l&rsquo;analyse distributionnelle<\/h2>\n<h3>4.1 Configuration des biblioth\u00e8ques fondamentales<\/h3>\n<p>L&rsquo;impl\u00e9mentation d&rsquo;une cha\u00eene de traitement distributionnel hautement reproductible en Python exige une structuration rigoureuse de l&rsquo;environnement logiciel. Il est fortement recommand\u00e9 aux chercheurs en sciences computationnelles et cognitives d&rsquo;isoler leurs projets analytiques au moyen d&rsquo;environnements virtuels (tels que <code>venv<\/code> ou <code>conda<\/code>), garantissant ainsi l&rsquo;immuabilit\u00e9 des versions des biblioth\u00e8ques au cours du cycle de vie de la recherche. Le d\u00e9ploiement standard d&rsquo;une session de travail n\u00e9cessite l&rsquo;invocation conjointe des biblioth\u00e8ques fondamentales de calcul num\u00e9rique, d&rsquo;analyse statistique et de visualisation graphique :<\/p>\n<pre><code>import sys\nimport warnings\nimport numpy as np\nimport scipy.stats as stats\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\n# Configuration de la reproductibilite et des affichages\nnp.random.seed(42)\nwarnings.filterwarnings('ignore', category=FutureWarning)\npd.set_option('display.precision', 4)<\/code><\/pre>\n<p>La v\u00e9rification des versions logicielles constitue une \u00e9tape m\u00e9thodologique indispensable, particuli\u00e8rement dans le cadre de d\u00e9ploiements collaboratifs ou de soumissions acad\u00e9miques exigeant la mise \u00e0 disposition du code source. Des disparit\u00e9s d&rsquo;impl\u00e9mentation entre des versions mineures de SciPy ou de Pandas peuvent en effet modifier substantiellement les comportements par d\u00e9faut de certains hyperparam\u00e8tres algorithmiques, notamment la prise en charge des degr\u00e9s de libert\u00e9 dans l&rsquo;estimation sans biais du kurtosis.<\/p>\n<h3>4.2 Importation et nettoyage de donn\u00e9es psychom\u00e9triques<\/h3>\n<p>Les matrices de donn\u00e9es brutes collect\u00e9es lors de protocoles exp\u00e9rimentaux ou de passations psychom\u00e9triques se pr\u00e9sentent g\u00e9n\u00e9ralement sous la forme de fichiers tabulaires d\u00e9limit\u00e9s (formats CSV, TSV) ou de classeurs \u00e9lectroniques tabulaires (format Excel). Leur int\u00e9gration dans une structure de donn\u00e9es optimis\u00e9e s&rsquo;op\u00e8re au moyen des m\u00e9thodes de lecture de Pandas, \u00e0 l&rsquo;instar de <code>pd.read_csv()<\/code>. D\u00e8s cette \u00e9tape liminaire d&rsquo;ingestion, le psychom\u00e9tricien doit appliquer des contraintes de typage strictes :<\/p>\n<pre><code># Importation structuree d'une cohorte neuropsychologique\ndf = pd.read_csv(\n    \"neuro_clinical_cohort.csv\",\n    dtype={\n        'subject_id': 'str',\n        'diagnostic_group': 'category',\n        'gender': 'category'\n    },\n    na_values=['NA', '999', '-99', 'Missing']\n)\n\n# Verification de la conformite des types numeriques\nnumerical_cols = ['stroop_rt', 'wisc_digit_span', 'bdi_depression_score']\ndf[numerical_cols] = df[numerical_cols].apply(pd.to_numeric, errors='coerce')<\/code><\/pre>\n<p>La gestion rigoureuse des r\u00e9ponses omises, des d\u00e9fections de passation ou des dysfonctionnements instrumentaux repr\u00e9sente un pr\u00e9requis cat\u00e9gorique. Dans le calcul des moments d&rsquo;ordre sup\u00e9rieur, une seule valeur d&rsquo;encodage erron\u00e9e (par exemple l&rsquo;utilisation du code sentinelle classique <code>999<\/code> laiss\u00e9 sous forme num\u00e9rique) \u00e9l\u00e8ve la dispersion \u00e0 des puissances de trois et de quatre, pulv\u00e9risant instantan\u00e9ment le calcul du skewness et du kurtosis et induisant des coefficients fictifs totalement d\u00e9nu\u00e9s de validit\u00e9 empirique.<\/p>\n<h3>4.3 Pr\u00e9traitement des \u00e9chelles ordinales de Likert<\/h3>\n<p>L&rsquo;application d&rsquo;analyses distributionnelles continues \u00e0 des \u00e9chelles d&rsquo;auto-\u00e9valuation de type Likert (fr\u00e9quemment \u00e9chelonn\u00e9es de 1 \u00e0 5 ou de 0 \u00e0 7) soul\u00e8ve une controverse \u00e9pist\u00e9mologique classique en psychom\u00e9trie : la l\u00e9gitimit\u00e9 du traitement d&rsquo;items ordinaux sous l&rsquo;hypoth\u00e8se de m\u00e9trique d&rsquo;intervalle continue. Lorsque l&rsquo;analyse porte sur des items individuels isol\u00e9s, les distributions sont par nature discr\u00e8tes, born\u00e9es et souvent s\u00e9v\u00e8rement asym\u00e9triques. Le calcul standard des moments d&rsquo;ordre 3 et 4 sur un item unique doit \u00eatre interpr\u00e9t\u00e9 avec la plus grande prudence math\u00e9matique en raison du confinement strict de la variance.<\/p>\n<p>En revanche, selon les th\u00e9or\u00e8mes de convolution et les principes de la th\u00e9orie classique des tests (CTT), l&rsquo;agr\u00e9gation de multiples items corr\u00e9l\u00e9s au sein d&rsquo;un score composite ou dimensionnel global g\u00e9n\u00e8re une variable al\u00e9atoire pseudo-continue dont le spectre de valeurs s&rsquo;\u00e9largit substantiellement. Lors de cette phase de pr\u00e9traitement, le code analytique doit identifier et filtrer les patrons de r\u00e9ponses unilat\u00e9rales aberrantes (par exemple, des r\u00e9pondants s\u00e9lectionnant uniform\u00e9ment la modalit\u00e9 maximale \u00ab 5 \u00bb sur l&rsquo;ensemble des 60 items d&rsquo;un inventaire de personnalit\u00e9 sans variation aucune), car ces profils artificiels compriment artificiellement le kurtosis et alt\u00e8rent la v\u00e9racit\u00e9 des coefficients morphologiques calcul\u00e9s.<\/p>\n<h2>5. Calcul du skewness avec la biblioth\u00e8que SciPy<\/h2>\n<h3>5.1 Mise en \u0153uvre de `scipy.stats.skew` : syntaxe et param\u00e8tres<\/h3>\n<p>Le module statistique sp\u00e9cialis\u00e9 de la biblioth\u00e8que SciPy propose une impl\u00e9mentation computationnelle optimis\u00e9e et vectoris\u00e9e du calcul de l&rsquo;asym\u00e9trie \u00e0 travers sa fonction canonique <code>scipy.stats.skew()<\/code>. Cette fonction accepte en entr\u00e9e des structures vectorielles ou matricielles h\u00e9t\u00e9rog\u00e8nes, incluant des listes natives Python, des tableaux NumPy unidimensionnels ou multidimensionnels, ainsi que des s\u00e9ries extraites de Pandas. Sa signature formelle int\u00e8gre plusieurs arguments cl\u00e9s r\u00e9gissant le traitement algorithmique :<\/p>\n<pre><code>import numpy as np\nfrom scipy import stats\n\n# Echantillon representatif de temps de reaction (millisecondes)\nreaction_times = np.array([320, 345, 330, 380, 410, 395, 360, 450, 780, 920])\n\n# Calcul du skewness brut par defaut\nskew_default = stats.skew(reaction_times)\nprint(f\"Skewness standard (SciPy) : {skew_default:.4f}\")<\/code><\/pre>\n<p>Par d\u00e9faut, la fonction op\u00e8re le calcul en adoptant le param\u00e9trage <code>bias=True<\/code> et <code>nan_policy='propagate'<\/code>. Lorsque le vecteur soumis contient des valeurs manquantes non filtr\u00e9es (<code>np.nan<\/code>), l&rsquo;\u00e9valuation num\u00e9rique propage le statut ind\u00e9fini et renvoie syst\u00e9matiquement <code>nan<\/code> comme r\u00e9sultat scalaire. Afin de pallier cette interruption computationnelle sans modifier pr\u00e9alablement la structure physique du tableau sous-jacent, le param\u00e8tre <code>nan_policy<\/code> peut \u00eatre express\u00e9ment fix\u00e9 \u00e0 <code>'omit'<\/code> pour ex\u00e9cuter une exclusion locale des enregistrements manquants, ou \u00e0 <code>'raise'<\/code> pour d\u00e9clencher une exception logicielle bloquante d\u00e8s la d\u00e9tection d&rsquo;une anomalie de saisie.<\/p>\n<h3>5.2 Ajustement du biais d&rsquo;\u00e9chantillonnage avec le param\u00e8tre `bias=False`<\/h3>\n<p>L&rsquo;une des nuances techniques les plus cruciales de la mod\u00e9lisation sous SciPy r\u00e9side dans l&rsquo;ajustement du biais d&rsquo;\u00e9chantillon. Lorsque l&rsquo;argument <code>bias<\/code> est laiss\u00e9 \u00e0 sa valeur par d\u00e9faut (<code>True<\/code>), SciPy \u00e9value l&rsquo;asym\u00e9trie en utilisant l&rsquo;estimateur plug-in brut de la population <span class=\"arabpsy-math-inline\" data-latex=\"g_1\">$g_1$<\/span>. Or, cet estimateur sous-estime de mani\u00e8re syst\u00e9matique le skewness th\u00e9orique de la population sous-jacente lorsque la taille de l&rsquo;\u00e9chantillon <span class=\"arabpsy-math-inline\" data-latex=\"n\">$n$<\/span> est r\u00e9duite ou mod\u00e9r\u00e9e (typiquement lorsque $n < 50$, configuration fr\u00e9quente en neuropsychologie interventionnelle ou en imagerie c\u00e9r\u00e9brale fonctionnelle).<\/p>\n<p>Pour aligner les r\u00e9sultats computationnels de SciPy sur les sorties standards \u00e9dit\u00e9es par les logiciels statistiques institutionnels historiques tels que SPSS, SAS ou le paquet <code>e1071<\/code> sous R (type 2), le chercheur doit obligatoirement expliciter l&rsquo;argument <code>bias=False<\/code> :<\/p>\n<pre><code># Calcul compare de l'estimateur avec et sans correction de biais\nskew_biased = stats.skew(reaction_times, bias=True)\nskew_unbiased = stats.skew(reaction_times, bias=False)\n\nprint(f\"Estimateur biaise (plug-in, n=10)   : {skew_biased:.4f}\")\nprint(f\"Estimateur sans biais (SPSS\/SAS)      : {skew_unbiased:.4f}\")<\/code><\/pre>\n<p>Sur le plan math\u00e9matique, l&rsquo;instruction <code>bias=False<\/code> d\u00e9clenche l&rsquo;application du multiplicateur correcteur de Cram\u00e9r <span class=\"arabpsy-math-inline\" data-latex=\"\\frac{\\sqrt{n(n-1)}}{n-2}\">$\\frac{\\sqrt{n(n-1)}}{n-2}$<\/span>. Pour un \u00e9chantillon de <span class=\"arabpsy-math-inline\" data-latex=\"n = 10\">$n = 10$<\/span>, ce coefficient multiplicateur s&rsquo;\u00e9l\u00e8ve \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"\\frac{\\sqrt{10 \\times 9}}{8} = \\frac{\\sqrt{90}}{8} \\approx 1{,}1858\">$\\frac{\\sqrt{10 \\times 9}}{8} = \\frac{\\sqrt{90}}{8} \\approx 1{,}1858$<\/span>, majorant ainsi m\u00e9caniquement l&rsquo;asym\u00e9trie mesur\u00e9e de pr\u00e8s de 18,6 % par rapport \u00e0 l&rsquo;estimation brute. N\u00e9gliger cette correction conduit \u00e0 des distorsions comparatives substantielles lorsque l&rsquo;on confronte des r\u00e9sultats calcul\u00e9s en Python \u00e0 la litt\u00e9rature clinique historique produite sous progiciels ferm\u00e9s.<\/p>\n<h3>5.3 Traitement matriciel sur donn\u00e9es multidimensionnelles<\/h3>\n<p>L&rsquo;architecture algorithmique sous-jacente de <code>scipy.stats.skew<\/code> exploite l&rsquo;infrastructure C de NumPy pour appliquer des calculs vectoris\u00e9s sur des matrices \u00e0 plusieurs dimensions sans n\u00e9cessiter le recours \u00e0 des boucles explicites en langage Python pur, dont l&#8217;empreinte temporelle serait prohibitive sur de grands protocoles d&rsquo;exp\u00e9rimentation cognitive. Le comportement multidimensionnel est enti\u00e8rement r\u00e9gi par le param\u00e8tre <code>axis<\/code> :<\/p>\n<pre><code># Matrice neuropsychologique : 100 participants (lignes) x 5 tests cognitifs (colonnes)\ncognitive_battery = np.random.gamma(shape=2.0, scale=1.5, size=(100, 5))\n\n# Calcul simultane de l'asymetricite le long de l'axe vertical (axe des sujets)\nskew_per_test = stats.skew(cognitive_battery, axis=0, bias=False)\n\nfor idx, val in enumerate(skew_per_test):\n    print(f\"Test cognitif {idx + 1} - Asymetrie sans biais : {val:.4f}\")<\/code><\/pre>\n<p>L&rsquo;attribution de la valeur <code>axis=0<\/code> enjoint l&rsquo;algorithme \u00e0 comprimer les 100 lignes d&rsquo;observations individuelles afin de calculer les moments verticaux, g\u00e9n\u00e9rant un vecteur \u00e0 une dimension dont chaque \u00e9l\u00e9ment correspond exactement au skewness sans biais de l&rsquo;une des 5 batteries de tests standardis\u00e9s. Inversement, l&rsquo;assignation de l&rsquo;argument <code>axis=1<\/code> calculerait l&rsquo;asym\u00e9trie intra-individuelle des profils pour chaque sujet \u00e0 travers les 5 \u00e9preuves cognitives administr\u00e9es. Cette vectorisation matricielle garantit une vitesse d&rsquo;ex\u00e9cution optimale, permettant le traitement instantan\u00e9 de jeux de donn\u00e9es massifs issus de banques de donn\u00e9es g\u00e9nomiques ou neuro-imagerie.<\/p>\n<h2>6. Calcul du kurtosis avec SciPy (formulations de Pearson vs. Fisher)<\/h2>\n<h3>6.1 Utilisation de `scipy.stats.kurtosis` et param\u00e9trage par d\u00e9faut<\/h3>\n<p>Le calcul de l&rsquo;aplatissement et de l&rsquo;\u00e9paisseur des queues s&rsquo;op\u00e8re sous SciPy au moyen de la fonction <code>scipy.stats.kurtosis()<\/code>. \u00c0 l&rsquo;instar de son homologue d\u00e9di\u00e9e au skewness, cette fonction impl\u00e9mente des optimisations de vectorisation matricielle avanc\u00e9es. Cependant, une particularit\u00e9 algorithmique fondamentale de SciPy \u2014 qui la distingue nettement de biblioth\u00e8ques math\u00e9matiques g\u00e9n\u00e9ralistes non orient\u00e9es vers les statistiques appliqu\u00e9es \u2014 r\u00e9side dans son choix de param\u00e9trage conventionnel par d\u00e9faut :<\/p>\n<pre><code># Calcul standard du kurtosis sur le vecteur des temps de reaction\nkurt_default = stats.kurtosis(reaction_times)\nprint(f\"Kurtosis par defaut (Fisher, excess) : {kurt_default:.4f}\")<\/code><\/pre>\n<p>Par d\u00e9faut, l&rsquo;argument bool\u00e9en <code>fisher<\/code> est formellement configur\u00e9 \u00e0 <code>True<\/code> au sein de la fonction. Cela signifie que SciPy op\u00e8re d&#8217;embl\u00e9e la soustraction de la constante 3 et renvoie par cons\u00e9quent <strong>l&rsquo;exc\u00e8s de kurtosis de Fisher<\/strong> (<span class=\"arabpsy-math-inline\" data-latex=\"\\gamma_2\">$\\gamma_2$<\/span>). D\u00e8s lors, toute interpr\u00e9tation du r\u00e9sultat produit doit s&rsquo;articuler autour du seuil fondamental de 0, et non de 3. Une valeur positive d\u00e9note formellement une distribution leptokurtique dot\u00e9e de queues \u00e9paisses, tandis qu&rsquo;une valeur n\u00e9gative signe une loi platykurtique aux queues tronqu\u00e9es par rapport \u00e0 l&rsquo;\u00e9talon gaussien normalis\u00e9.<\/p>\n<h3>6.2 Restitution du kurtosis de Pearson avec `fisher=False`<\/h3>\n<p>Dans certains contextes de mod\u00e9lisation math\u00e9matique th\u00e9orique, de physique computationnelle ou lors de la r\u00e9plication stricte d&rsquo;\u00e9quations fondamentales bas\u00e9es sur les moments de Karl Pearson originels, le chercheur peut souhaiter acc\u00e9der au kurtosis brut de Pearson (<span class=\"arabpsy-math-inline\" data-latex=\"\\beta_2\">$\\beta_2$<\/span>) non centr\u00e9 sur z\u00e9ro. Cette commutation s&rsquo;effectue en basculant explicitement le param\u00e8tre <code>fisher<\/code> sur <code>False<\/code> :<\/p>\n<pre><code># Calcul contrastif des formulations de Fisher et de Pearson\nkurt_fisher = stats.kurtosis(reaction_times, fisher=True, bias=True)\nkurt_pearson = stats.kurtosis(reaction_times, fisher=False, bias=True)\n\nprint(f\"Kurtosis de Fisher (exces, reference normale = 0)  : {kurt_fisher:.4f}\")\nprint(f\"Kurtosis de Pearson (brut, reference normale = 3)   : {kurt_pearson:.4f}\")\nprint(f\"Verification de l'ecart mathematique : {kurt_pearson - kurt_fisher:.4f}\")<\/code><\/pre>\n<p>Comme le d\u00e9montre le code ex\u00e9cutable, l&rsquo;\u00e9cart diff\u00e9rentiel entre les deux scalaires r\u00e9sultants \u00e9quivaut invariablement et exactement \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"3{,}0\">$3{,}0$<\/span>. Sur le plan de la rigueur \u00e9pist\u00e9mologique et de la communicabilit\u00e9 scientifique internationale, la mention formelle de cette dualit\u00e9 dans les publications acad\u00e9miques s&rsquo;av\u00e8re capitale : stipuler qu&rsquo;une distribution poss\u00e8de \u00ab un kurtosis de 1,2 \u00bb peut \u00eatre interpr\u00e9t\u00e9 soit comme une distribution leptokurtique marqu\u00e9e si l&rsquo;auteur applique Fisher, soit comme une distribution platykurtique extr\u00eame si l&rsquo;analyste sous-entendait le coefficient de Pearson.<\/p>\n<h3>6.3 Correction du biais d&rsquo;\u00e9chantillonnage pour le kurtosis<\/h3>\n<p>\u00c0 l&rsquo;instar du skewness, l&rsquo;estimation de l&rsquo;exc\u00e8s de kurtosis souffre d&rsquo;un biais statistique s\u00e9v\u00e8re sur les \u00e9chantillons d&rsquo;\u00e9tendue finie. L&rsquo;estimateur brut plug-in <span class=\"arabpsy-math-inline\" data-latex=\"g_2\">$g_2$<\/span> sous-estime syst\u00e9matiquement la lourdeur th\u00e9orique des queues de la distribution parente, particuli\u00e8rement lorsque des \u00e9v\u00e9nements extr\u00eames sont sous-repr\u00e9sent\u00e9s du fait de la modicit\u00e9 de la cohorte observ\u00e9e. Pour activer l&rsquo;estimateur sans biais d&rsquo;\u00e9chantillon <span class=\"arabpsy-math-inline\" data-latex=\"G_2\">$G_2$<\/span> de Fisher-Cram\u00e9r, l&rsquo;analyste doit combiner le param\u00e8tre <code>fisher=True<\/code> avec <code>bias=False<\/code> :<\/p>\n<pre><code># Impact de la correction de biais d'echantillonnage sur le kurtosis\nkurt_biased = stats.kurtosis(reaction_times, fisher=True, bias=True)\nkurt_unbiased = stats.kurtosis(reaction_times, fisher=True, bias=False)\n\nprint(f\"Kurtosis Fisher biaise (n=10)       : {kurt_biased:.4f}\")\nprint(f\"Kurtosis Fisher sans biais (SPSS)   : {kurt_unbiased:.4f}\")<\/code><\/pre>\n<p>L&rsquo;application de l&rsquo;algorithme sans biais met en \u0153uvre une formule d&rsquo;ajustement hautement non lin\u00e9aire tributaire des polyn\u00f4mes d&rsquo;\u00e9chantillons <span class=\"arabpsy-math-inline\" data-latex=\"(n-1)\">$(n-1)$<\/span>, <span class=\"arabpsy-math-inline\" data-latex=\"(n-2)\">$(n-2)$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"(n-3)\">$(n-3)$<\/span>. Sur les petites s\u00e9ries de donn\u00e9es psychologiques (par exemple, des \u00e9tudes pilotes men\u00e9es sur des patients porteurs de l\u00e9sions c\u00e9r\u00e9brales rares avec <span class=\"arabpsy-math-inline\" data-latex=\"n \\approx 10\">$n \\approx 10$<\/span> \u00e0 $15$), la correction de biais peut accro\u00eetre le coefficient d&rsquo;exc\u00e8s de plus de 50 \u00e0 100 % en amplitude absolue. Il convient de souligner que cette correction de biais requiert rigoureusement que la taille de l&rsquo;\u00e9chantillon soit sup\u00e9rieure ou \u00e9gale \u00e0 4 (<span class=\"arabpsy-math-inline\" data-latex=\"n ge 4\">$n ge 4$<\/span>) ; en de\u00e7\u00e0 de ce seuil arithm\u00e9tique, le d\u00e9nominateur <span class=\"arabpsy-math-inline\" data-latex=\"(n-3)\">$(n-3)$<\/span> s&rsquo;annule ou devient n\u00e9gatif, rendant l&rsquo;estimation math\u00e9matiquement ind\u00e9finie.<\/p>\n<h2>7. Calcul du skewness et du kurtosis avec Pandas sur des jeux de donn\u00e9es psychologiques<\/h2>\n<h3>7.1 Calcul direct via `Series.skew()` et `Series.kurtosis()`<\/h3>\n<p>Dans la pratique quotidienne de l&rsquo;ing\u00e9nierie des donn\u00e9es et de l&rsquo;analyse exploratoire, la biblioth\u00e8que Pandas offre une interface fonctionnelle d&rsquo;un niveau d&rsquo;abstraction sup\u00e9rieur, \u00e9vitant au chercheur de manipuler directement des tableaux NumPy bruts ou d&rsquo;importer explicitement SciPy pour des op\u00e9rations descriptives r\u00e9currentes. Les objets de classe <code>pd.Series<\/code> et <code>pd.DataFrame<\/code> int\u00e8grent nativement les m\u00e9thodes d&rsquo;instance <code>.skew()<\/code> et <code>.kurtosis()<\/code> (cette derni\u00e8re \u00e9tant \u00e9galement accessible via l&rsquo;alias syntaxique <code>.kurt()<\/code>) :<\/p>\n<pre><code># Creation d'une structure de donnees psychometriques structuree\npsych_data = pd.DataFrame({\n    'participant_id': [f\"P{i:03d}\" for i in range(1, 11)],\n    'visuospatial_score': [45, 48, 50, 49, 52, 47, 51, 48, 49, 50],\n    'processing_speed_ms': [320, 345, 330, 380, 410, 395, 360, 450, 780, 920],\n    'anxiety_scale': [12, 14, 11, 13, 12, 15, 12, 14, 28, 30]\n})\n\n# Calcul direct des moments de forme sur une sous-echelle\nvisuo_skew = psych_data['visuospatial_score'].skew()\nvisuo_kurt = psych_data['visuospatial_score'].kurtosis()\n\nprint(f\"Echelle visuo-spatiale - Skewness : {visuo_skew:.4f} | Kurtosis : {visuo_kurt:.4f}\")<\/code><\/pre>\n<p>Une distinction d&rsquo;ing\u00e9nierie logicielle capitale doit \u00eatre imp\u00e9rativement assimil\u00e9e par le data scientist : <strong>contrairement \u00e0 SciPy, Pandas applique par d\u00e9faut et de mani\u00e8re inconditionnelle la correction de biais d&rsquo;\u00e9chantillonnage (l&rsquo;\u00e9quivalent de <code>bias=False<\/code>) ainsi que la m\u00e9trique d&rsquo;exc\u00e8s de Fisher (centr\u00e9e sur z\u00e9ro pour le kurtosis)<\/strong>. De surcro\u00eet, les m\u00e9thodes natives de Pandas excluent automatiquement toutes les entr\u00e9es nulles ou manquantes (<code>NaN<\/code>) au cours de l&rsquo;\u00e9valuation num\u00e9rique, sans requ\u00e9rir de configuration pr\u00e9alable de masques bool\u00e9ens. D\u00e8s lors, les valeurs num\u00e9riques issues directement de <code>DataFrame.skew()<\/code> et <code>DataFrame.kurtosis()<\/code> correspondent imm\u00e9diatement aux m\u00e9triques \u00e9dit\u00e9es par les modules descriptifs g\u00e9n\u00e9raux de SPSS.<\/p>\n<h3>7.2 Analyse comparative par groupes cliniques avec `groupby()`<\/h3>\n<p>L&rsquo;\u00e9valuation des propri\u00e9t\u00e9s distributionnelles prend toute sa pertinence psychom\u00e9trique lorsque l&rsquo;on proc\u00e8de \u00e0 une analyse stratifi\u00e9e ou segment\u00e9e en fonction de variables ind\u00e9pendantes cat\u00e9gorielles, telles que l&rsquo;assignation \u00e0 un groupe clinique (ex. cohorte de patients pr\u00e9sentant un Trouble D\u00e9pressif Majeur versus groupe contr\u00f4le de sujets sains appari\u00e9s) ou l&rsquo;exposition \u00e0 diverses conditions de charge cognitive en laboratoire :<\/p>\n<pre><code># Simulation d'un jeu de donnees bi-groupal\nnp.random.seed(101)\nn_per_group = 80\n\ncontrols = np.random.normal(loc=50, scale=8, size=n_per_group)\npatients = np.random.exponential(scale=15, size=n_per_group) + 30\n\ncohort_df = pd.DataFrame({\n    'clinical_status': ['Controle'] * n_per_group + ['Patient'] * n_per_group,\n    'cognitive_deficit_score': np.concatenate([controls, patients])\n})\n\n# Calcul partitionne du skewness et du kurtosis par statut clinique\ngrouped_morphology = cohort_df.groupby('clinical_status')['cognitive_deficit_score'].agg(\n    skewness=lambda s: s.skew(),\n    excess_kurtosis=lambda s: s.kurtosis()\n)\n\nprint(grouped_morphology)<\/code><\/pre>\n<p>Cette approche combinatoire r\u00e9v\u00e8le instantan\u00e9ment les mutations morphologiques induites par la pathologie sous-jacente. Alors que le groupe contr\u00f4le pr\u00e9sentera un skewness proche de 0 et un exc\u00e8s de kurtosis voisin de 0 (t\u00e9moignant d&rsquo;une r\u00e9ponse cognitive normale et homog\u00e8ne), la cohorte clinique exhibera fr\u00e9quemment une asym\u00e9trie fortement positive et une leptokurticit\u00e9 marqu\u00e9e. Cette divergence signe une rupture fondamentale de la dynamique cognitive : au sein du groupe pathologique, la maladie d\u00e9stabilise l&rsquo;hom\u00e9ostasie des performances, engendrant une sous-population de patients s\u00e9v\u00e8rement d\u00e9t\u00e9rior\u00e9s qui projettent la queue de la distribution vers des valeurs extr\u00eames.<\/p>\n<h3>7.3 Automatisation d&rsquo;une table descriptive globale avec `agg()`<\/h3>\n<p>La formalisation des r\u00e9sultats pr\u00e9liminaires dans les manuscrits scientifiques exige la production de tables de statistiques descriptives exhaustives regroupant simultan\u00e9ment les moments d&rsquo;ordre 1, 2, 3 et 4 pour l&rsquo;ensemble des instruments psychom\u00e9triques administr\u00e9s. L&rsquo;association de la m\u00e9thode <code>.agg()<\/code> de Pandas avec des fonctions lambda sur-mesure permet de compiler une matrice d&rsquo;\u00e9dition acad\u00e9mique pr\u00eate \u00e0 l&#8217;emploi :<\/p>\n<pre><code>def compute_distributional_profile(df, columns):\n    \"\"\"Genere une synthese descriptive complete incluant les moments d'ordre 1 a 4.\"\"\"\n    summary = df[columns].agg([\n        ('Taille (n)', 'count'),\n        ('Moyenne', 'mean'),\n        ('Ecart-Type', 'std'),\n        ('Erreur-Type Moyenne', lambda x: stats.sem(x, nan_policy='omit')),\n        ('Skewness (G1)', lambda x: x.skew()),\n        ('Erreur-Type Skew', lambda x: np.sqrt((6 * len(x.dropna()) * (len(x.dropna()) - 1)) \/ \n                                              ((len(x.dropna()) - 2) * (len(x.dropna()) + 1) * (len(x.dropna()) + 3)))),\n        ('Kurtosis (G2)', lambda x: x.kurtosis()),\n        ('Erreur-Type Kurt', lambda x: 2 * np.sqrt((6 * len(x.dropna()) * (len(x.dropna()) - 1)) \/ \n                                                   ((len(x.dropna()) - 2) * (len(x.dropna()) + 1) * (len(x.dropna()) + 3))) * \n                                      np.sqrt((len(x.dropna())**2 - 1) \/ ((len(x.dropna()) - 3) * (len(x.dropna()) + 5))))\n    ]).T\n    return summary\n\n# Application sur nos mesures cognitives\nmetrics_table = compute_distributional_profile(\n    psych_data, \n    ['visuospatial_score', 'processing_speed_ms', 'anxiety_scale']\n)\n\n# Exportation automatique au format LaTeX pour redaction de manuscrit\nlatex_output = metrics_table.to_latex(float_format=\"%.3f\")\nprint(metrics_table)<\/code><\/pre>\n<p>Ce pipeline automatis\u00e9 agr\u00e8ge rigoureusement les m\u00e9triques requises par les standards de publication m\u00e9thodologiques les plus stricts. L&rsquo;incorporation algorithmique des erreurs-types asymptotiques associ\u00e9es au skewness et au kurtosis procure une vision probabiliste de l&rsquo;incertitude d&rsquo;\u00e9chantillonnage, fournissant un tableau synoptique directement exportable vers des formats de publication professionnelle (LaTeX, CSV, HTML) sans risque d&rsquo;erreur de saisie manuelle.<\/p>\n<h2>8. Calcul matriciel et impl\u00e9mentation manuelle avec NumPy<\/h2>\n<h3>8.1 Calcul vectoriel des moments centr\u00e9s d&rsquo;ordre k<\/h3>\n<p>Pour appr\u00e9hender intimement la m\u00e9canique computationnelle sous-jacente et s&rsquo;affranchir de toute d\u00e9pendance logicielle \u00e0 l&rsquo;\u00e9gard de modules de haut niveau, il est formateur et souvent indispensable d&rsquo;impl\u00e9menter les algorithmes de calcul distributionnel en syntaxe vectoris\u00e9e NumPy pure. Cette d\u00e9marche pr\u00e9sente un int\u00e9r\u00eat computationnel d\u00e9terminant lors du d\u00e9ploiement de proc\u00e9dures d&rsquo;apprentissage automatique intensives, de simulations de Monte-Carlo \u00e0 grande \u00e9chelle ou d&rsquo;algorithmes de r\u00e9\u00e9chantillonnage bootstrap o\u00f9 l&rsquo;instanciation r\u00e9p\u00e9t\u00e9e des classes de haut niveau de SciPy ou Pandas induirait une surcharge logicielle p\u00e9nalisante.<\/p>\n<p>Le calcul g\u00e9n\u00e9rique d&rsquo;un moment centr\u00e9 d&rsquo;ordre arbitraire <span class=\"arabpsy-math-inline\" data-latex=\"k\">$k$<\/span>, d\u00e9sign\u00e9 par <span class=\"arabpsy-math-inline\" data-latex=\"m_k\">$m_k$<\/span>, repose sur l&rsquo;\u00e9valuation vectoris\u00e9e des \u00e9carts diff\u00e9rentiels individuels par rapport \u00e0 la moyenne arithm\u00e9tique globale, \u00e9lev\u00e9s \u00e0 la puissance <span class=\"arabpsy-math-inline\" data-latex=\"k\">$k$<\/span> :<\/p>\n<pre><code>def empirical_central_moment(data_array, order_k):\n    \"\"\"Calcule le k-ieme moment centre empirique d'un vecteur NumPy sans biais.\"\"\"\n    x = np.asarray(data_array, dtype=np.float64)\n    n = x.size\n    if n == 0:\n        return np.nan\n    # Calcul vectoriel de la moyenne arithmetique (ordre 1)\n    mean_val = np.mean(x)\n    # Vectorisation de l'elevation a la puissance k des deviations\n    central_moment = np.sum((x - mean_val) ** order_k) \/ n\n    return central_moment\n\n# Validation empirique sur les ordres 2, 3 et 4\nm2 = empirical_central_moment(reaction_times, 2)\nm3 = empirical_central_moment(reaction_times, 3)\nm4 = empirical_central_moment(reaction_times, 4)\n\nprint(f\"Moments centres empiriques -> m2: {m2:.2f}, m3: {m3:.2f}, m4: {m4:.2f}\")<\/code><\/pre>\n<p>L&rsquo;exploitation de l&rsquo;op\u00e9rateur de sommation matricielle <code>np.sum()<\/code> coupl\u00e9 au broadcast arithm\u00e9tique de NumPy permet de traiter des millions d&rsquo;observations simultan\u00e9ment au niveau du processeur, sans qu&rsquo;aucune boucle d&rsquo;it\u00e9ration explicite n&rsquo;intervienne dans l&rsquo;interpr\u00e9teur Python.<\/p>\n<h3>8.2 Codage explicite de l&rsquo;algorithme du skewness<\/h3>\n<p>En combinant les moments centr\u00e9s empiriques d&rsquo;ordre 2 et 3, il devient ais\u00e9 de construire une fonction Python compl\u00e8te, modulaire et hautement performante pour d\u00e9terminer l&rsquo;asym\u00e9trie, tout en int\u00e9grant dynamiquement la possibilit\u00e9 d&rsquo;appliquer la correction de biais d&rsquo;\u00e9chantillonnage pour la population :<\/p>\n<pre><code>def custom_skewness(data, bias=False):\n    \"\"\"Implementation NumPy complete du coefficient d'asymetrie.\"\"\"\n    x = np.asarray(data, dtype=np.float64)\n    # Elimination preliminaire des valeurs manquantes eventuelles\n    x = x[~np.isnan(x)]\n    n = x.size\n    \n    if n < 3:\n        raise ValueError(\"L'echantillon doit comporter au moins 3 observations pour calculer le skewness.\")\n    \n    mean_x = np.mean(x)\n    deviations = x - mean_x\n    \n    # Moments empiriques non corriges\n    m2 = np.sum(deviations ** 2) \/ n\n    m3 = np.sum(deviations ** 3) \/ n\n    \n    if m2 == 0.0:\n        return 0.0  # Distribution invariante\n    \n    # Estimateur de Fisher plug-in brut\n    g1 = m3 \/ (m2 ** 1.5)\n    \n    if bias:\n        return g1\n    else:\n        # Correction d'echantillonnage de Cramer pour la population\n        g1_unbiased = (np.sqrt(n * (n - 1)) \/ (n - 2)) * g1\n        return g1_unbiased\n\n# Test de concordance unitaire avec scipy.stats.skew\nscipy_result = stats.skew(reaction_times, bias=False)\ncustom_result = custom_skewness(reaction_times, bias=False)\nassert np.isclose(scipy_result, custom_result), \"Divergence algorithmique detectee !\"\nprint(f\"Validation algorithmique reussie : custom = {custom_result:.6f} == scipy = {scipy_result:.6f}\")<\/code><\/pre>\n<p>L'assertion formelle <code>np.isclose()<\/code> certifie la parfaite \u00e9quivalence num\u00e9rique entre cette impl\u00e9mentation artisanale et l'algorithme pr\u00e9compil\u00e9 de SciPy, confirmant la fid\u00e9lit\u00e9 math\u00e9matique de la transcription logicielle.<\/p>\n<h3>8.3 Codage de l'algorithme du kurtosis et validation crois\u00e9e<\/h3>\n<p>L'\u00e9laboration de la routine consacr\u00e9e au quatri\u00e8me moment exige une vigilance arithm\u00e9tique sup\u00e9rieure en raison de la complexit\u00e9 des facteurs d'ajustement de degr\u00e9s de libert\u00e9 et de l'enchev\u00eatrement des conventions de Pearson et de Fisher :<\/p>\n<pre><code>def custom_kurtosis(data, fisher=True, bias=False):\n    \"\"\"Implementation NumPy complete du kurtosis avec double param\u00e9trage canonique.\"\"\"\n    x = np.asarray(data, dtype=np.float64)\n    x = x[~np.isnan(x)]\n    n = x.size\n    \n    if n < 4:\n        raise ValueError(\"L'echantillon doit comporter au moins 4 observations pour le kurtosis sans biais.\")\n    \n    mean_x = np.mean(x)\n    deviations = x - mean_x\n    \n    m2 = np.sum(deviations ** 2) \/ n\n    m4 = np.sum(deviations ** 4) \/ n\n    \n    if m2 == 0.0:\n        return 0.0\n    \n    # Kurtosis brut de Pearson plug-in\n    b2 = m4 \/ (m2 ** 2)\n    \n    if bias:\n        # Version biaisee d'echantillon\n        return (b2 - 3.0) if fisher else b2\n    else:\n        # Estimateur d'exces non biaise de Fisher-Cramer (formule de Bessel generalisee)\n        term1 = (n - 1) \/ ((n - 2) * (n - 3))\n        term2 = (n + 1) * (b2 - 3.0) + 6.0\n        g2_unbiased = term1 * term2\n        \n        if fisher:\n            return g2_unbiased\n        else:\n            # Reconversion vers le kurtosis brut de Pearson sans biais\n            return g2_unbiased + 3.0\n\n# Validation croisee unitaire rigoureuse sur l'ensemble des configurations logiques\nfor f_flag in [True, False]:\n    for b_flag in [True, False]:\n        sp_res = stats.kurtosis(reaction_times, fisher=f_flag, bias=b_flag)\n        ct_res = custom_kurtosis(reaction_times, fisher=f_flag, bias=b_flag)\n        assert np.isclose(sp_res, ct_res), f\"Echec sur combinaison fisher={f_flag}, bias={b_flag}\"\n\nprint(\"Ensemble des tests unitaires valides : parite computationnelle totale avec SciPy.\")<\/code><\/pre>\n<p>Cette suite de tests unitaires crois\u00e9s garantit que l'algorithme d\u00e9velopp\u00e9 restitue avec exactitude chacune des quatre permutations param\u00e9triques possibles, conf\u00e9rant \u00e0 cette routine une fiabilit\u00e9 computationnelle maximale pour une int\u00e9gration au sein de cha\u00eenes de production de donn\u00e9es scientifiques autonomes.<\/p>\n<h2>9. Visualisation graphique de l'asym\u00e9trie et du kurtosis avec Matplotlib et Seaborn<\/h2>\n<h3>9.1 Superposition de densit\u00e9s empiriques (KDE) et loi normale th\u00e9orique<\/h3>\n<p>Bien que la quantification num\u00e9rique des moments d'ordre sup\u00e9rieur soit rigoureusement requise pour l'\u00e9valuation empirique, l'inspection visuelle demeure le compl\u00e9ment diagnostique indissociable de l'analyse distributionnelle. La technique de diagnostic la plus informative consiste \u00e0 projeter simultan\u00e9ment l'histogramme de fr\u00e9quences r\u00e9elles, son estimation de densit\u00e9 par noyau liss\u00e9e (Kernel Density Estimation - KDE) et une densit\u00e9 gaussienne th\u00e9orique parfaitement calibr\u00e9e sur les param\u00e8tres empiriques d'esp\u00e9rance (<span class=\"arabpsy-math-inline\" data-latex=\"\\bar{x}\">$\\bar{x}$<\/span>) et d'\u00e9cart-type (<span class=\"arabpsy-math-inline\" data-latex=\"s\">$s$<\/span>) de l'\u00e9chantillon observ\u00e9 :<\/p>\n<pre><code># Generation d'une cohorte clinique asymetrique\nnp.random.seed(42)\nbdi_scores = np.random.gamma(shape=2.5, scale=4.0, size=250)\n\n# Parametrage de la figure diagnostique\nplt.figure(figsize=(10, 6), dpi=100)\nax = sns.histplot(bdi_scores, kde=True, stat=\"density\", color=\"royalblue\", \n                  label=\"Densite empirique (KDE)\", bins=25, alpha=0.4)\n\n# Generation de la courbe normale theorique de reference\nx_axis = np.linspace(min(bdi_scores), max(bdi_scores), 500)\nnormal_curve = stats.norm.pdf(x_axis, loc=np.mean(bdi_scores), scale=np.std(bdi_scores, ddof=1))\nplt.plot(x_axis, normal_curve, 'r--', linewidth=2.5, label=\"Loi normale theorique equivalente\")\n\n# Annotations statistiques\nsk = stats.skew(bdi_scores, bias=False)\nkt = stats.kurtosis(bdi_scores, fisher=True, bias=False)\nplt.title(f\"Diagnostic Distributionnel : Skewness = {sk:.3f} | Exc\u00e8s de Kurtosis = {kt:.3f}\", fontsize=13)\nplt.xlabel(\"Score clinique d'anxiete \/ depression (BDI)\", fontsize=11)\nplt.ylabel(\"Densite de probabilite\", fontsize=11)\nplt.legend(loc='upper right', frameon=True)\nplt.grid(axis='y', linestyle=':', alpha=0.7)\nplt.show()<\/code><\/pre>\n<p>La confrontation imm\u00e9diate de la trajectoire empirique bleue face \u00e0 la courbe rouge th\u00e9orique mat\u00e9rialise visuellement la d\u00e9rive du skewness : le d\u00e9calage du pic de densit\u00e9 vers la gauche associ\u00e9 \u00e0 une tra\u00eene pro\u00e9minente s'\u00e9tirant au-del\u00e0 de 25 points illustre de fa\u00e7on limpide l'incapacit\u00e9 de la loi normale \u00e0 mod\u00e9liser la structure intrins\u00e8que de ce score clinique.<\/p>\n<h3>9.2 Trac\u00e9 des diagrammes quantile-quantile (Q-Q plots)<\/h3>\n<p>Le diagramme Quantile-Quantile (Q-Q plot) repr\u00e9sente sans doute l'instrument graphique le plus robuste et sensible pour sonder l'int\u00e9grit\u00e9 des queues de distribution et la sym\u00e9trie d'un vecteur de donn\u00e9es. Le principe algorithmique repose sur la mise en correspondance biunivoque entre les quantiles empiriques ordonn\u00e9s de l'\u00e9chantillon et les quantiles th\u00e9oriques exacts calcul\u00e9s \u00e0 partir de l'inverse de la fonction de r\u00e9partition cumulative d'une distribution de Gauss standard :<\/p>\n<pre><code>plt.figure(figsize=(8, 6), dpi=100)\nstats.probplot(bdi_scores, dist=\"norm\", plot=plt)\n\n# Personnalisation stylistique du graphe d'invariance\nplt.title(\"Diagramme Quantile-Quantile (Normal Q-Q Plot)\", fontsize=13)\nplt.xlabel(\"Quantiles theoriques gaussiens\", fontsize=11)\nplt.ylabel(\"Quantiles empiriques observes\", fontsize=11)\nplt.grid(True, linestyle='--', alpha=0.5)\nplt.show()<\/code><\/pre>\n<p>La lecture morphologique d'un Q-Q plot permet de d\u00e9celer instantan\u00e9ment la nature des moments d'ordre 3 et 4 sans m\u00eame recourir au calcul num\u00e9rique. Si les donn\u00e9es proviennent d'une population parfaitement m\u00e9sokurtique et sym\u00e9trique, les points s'alignent rigoureusement le long de la ligne diagonale rouge de r\u00e9f\u00e9rence. En pr\u00e9sence d'une asym\u00e9trie marqu\u00e9e, la trajectoire empirique adopte une forme g\u00e9n\u00e9rale fortement curviligne ou parabolique. De son c\u00f4t\u00e9, une distribution leptokurtique aux queues \u00e9paisses g\u00e9n\u00e8re une d\u00e9formation caract\u00e9ristique en \u00ab S invers\u00e9 \u00bb : les quantiles empiriques s'\u00e9cartent vers le bas sur le flanc gauche et fusent dramatiquement vers le haut sur le flanc droit, r\u00e9v\u00e9lant la projection d'observations bien au-del\u00e0 des bornes pr\u00e9dictibles d'un processus sous contr\u00f4le gaussien.<\/p>\n<h3>9.3 Bo\u00eetes \u00e0 moustaches et diagrammes en violon<\/h3>\n<p>Les diagrammes en bo\u00eete \u00e0 moustaches de Tukey (<em>boxplots<\/em>) et leur extension contemporaine, les diagrammes en violon (<em>violin plots<\/em>), fournissent une restitution morphologique bidimensionnelle particuli\u00e8rement adapt\u00e9e \u00e0 la mise en contraste de conditions cliniques. Le boxplot mat\u00e9rialise l'asym\u00e9trie par le d\u00e9centrement asym\u00e9trique de la ligne m\u00e9diane au sein de la bo\u00eete interquartile (IQR = <span class=\"arabpsy-math-inline\" data-latex=\"Q_3 - Q_1\">$Q_3 - Q_1$<\/span>), ainsi que par l'in\u00e9galit\u00e9 de longueur des deux moustaches inf\u00e9rieure et sup\u00e9rieure :<\/p>\n<pre><code>fig, axes = plt.subplots(1, 2, figsize=(14, 6), dpi=100)\n\n# Visualisation par boite a moustaches standardisee\nsns.boxplot(x='clinical_status', y='cognitive_deficit_score', data=cohort_df, \n            ax=axes[0], palette=\"Set2\")\naxes[0].set_title(\"Detection des anomalies distributionnelles (Boxplot)\", fontsize=12)\naxes[0].set_xlabel(\"Groupe clinique\", fontsize=11)\naxes[0].set_ylabel(\"Score de deficit\", fontsize=11)\n\n# Visualisation par diagramme en violon\nsns.violinplot(x='clinical_status', y='cognitive_deficit_score', data=cohort_df, \n               ax=axes[1], palette=\"Set2\", cut=0, inner=\"quartile\")\naxes[1].set_title(\"Morphologie globale de la densite (Violin Plot)\", fontsize=12)\naxes[1].set_xlabel(\"Groupe clinique\", fontsize=11)\naxes[1].set_ylabel(\"Score de deficit\", fontsize=11)\n\nplt.tight_layout()\nplt.show()<\/code><\/pre>\n<p>Le diagramme en violon synth\u00e9tise avec une remarquable efficacit\u00e9 les avantages du boxplot et de l'estimation par noyau liss\u00e9e (KDE). Il permet d'identifier visuellement d'\u00e9ventuelles bimodalit\u00e9s sous-jacentes \u2014 souvent invisibles sur un boxplot conventionnel qui agr\u00e9gerait les deux composantes sous un kurtosis artificiellement abaiss\u00e9. De multiples renflements lat\u00e9raux sur le corps du violon d\u00e9noncent l'existence de sous-populations cliniques latentes au sein d'un m\u00eame groupe exp\u00e9rimental, exigeant alors une d\u00e9composition des m\u00e9langes de lois avant toute d\u00e9marche d'inf\u00e9rence lin\u00e9aire.<\/p>\n<h2>10. Tests d'inf\u00e9rence statistique sur l'asym\u00e9trie et le kurtosis en Python<\/h2>\n<h3>10.1 Le test d'asym\u00e9trie de D'Agostino (`scipy.stats.skewtest`)<\/h3>\n<p>L'\u00e9valuation quantitative du skewness empirique soul\u00e8ve in\u00e9vitablement une interrogation probabiliste : l'asym\u00e9trie observ\u00e9e s'\u00e9carte-t-elle de z\u00e9ro de fa\u00e7on statistiquement significative, ou ne refl\u00e8te-t-elle que les fluctuations d'\u00e9chantillonnage inh\u00e9rentes au tirage al\u00e9atoire ? Pour r\u00e9pondre \u00e0 cette question, Ralph D'Agostino a d\u00e9velopp\u00e9 en 1970 un test d'hypoth\u00e8se formel sp\u00e9cifiquement d\u00e9volu \u00e0 l'inf\u00e9rence sur le troisi\u00e8me moment, impl\u00e9ment\u00e9 sous Python via la fonction <code>scipy.stats.skewtest()<\/code>.<\/p>\n<p>Le principe computationnel du test ne repose pas sur une simple approximation asymptotique \u00e9l\u00e9mentaire, mais applique une transformation non lin\u00e9aire rigoureuse \u00e0 l'estimateur d'asym\u00e9trie empirique afin de normaliser sa distribution d'\u00e9chantillonnage, produisant une statistique pivot standardis\u00e9e not\u00e9e <span class=\"arabpsy-math-inline\" data-latex=\"Z\">$Z$<\/span> :<\/p>\n<pre><code># Test formel d'asymetrie de D'Agostino\nz_stat_skew, p_val_skew = stats.skewtest(bdi_scores)\n\nprint(f\"Test d'asymetrie de D'Agostino -> Z-statistique : {z_stat_skew:.4f} | p-valeur : {p_val_skew:.4e}\")\nif p_val_skew < 0.05:\n    print(\"Conclusion : Rejet categorique de l'hypothese nulle de symetrie (asymetrie significative).\")<\/code><\/pre>\n<p>L'hypoth\u00e8se nulle (<span class=\"arabpsy-math-inline\" data-latex=\"H_0\">$H_0$<\/span>) stipule que le coefficient d'asym\u00e9trie de la population sous-jacente est rigoureusement nul. Si la p-valeur bilat\u00e9rale r\u00e9sultante est inf\u00e9rieure au seuil de significativit\u00e9 nominal (<span class=\"arabpsy-math-inline\" data-latex=\"\\alpha = 0{,}05\">$\\alpha = 0{,}05$<\/span>), le chercheur rejette <span class=\"arabpsy-math-inline\" data-latex=\"H_0\">$H_0$<\/span> et conclut \u00e0 la pr\u00e9sence d'une asym\u00e9trie intrins\u00e8que structurelle. Sur le plan des pr\u00e9requis op\u00e9rationnels, <code>scipy.stats.skewtest<\/code> exige que la taille de l'\u00e9chantillon soit sup\u00e9rieure ou \u00e9gale \u00e0 8 (<span class=\"arabpsy-math-inline\" data-latex=\"n ge 8\">$n ge 8$<\/span>), seuil en de\u00e7\u00e0 duquel les approximations de la distribution de la statistique <span class=\"arabpsy-math-inline\" data-latex=\"Z\">$Z$<\/span> perdent toute validit\u00e9 th\u00e9orique.<\/p>\n<h3>10.2 Le test d'aplatissement d'Anscombe-Glynn (`scipy.stats.kurtosistest`)<\/h3>\n<p>Parall\u00e8lement au test d'asym\u00e9trie, Francis Anscombe et William Glynn ont formalis\u00e9 en 1983 un test statistique d\u00e9di\u00e9 exclusivement \u00e0 l'\u00e9valuation de l'aplatissement et de l'\u00e9paisseur des queues, disponible au sein de SciPy sous la d\u00e9nomination <code>scipy.stats.kurtosistest()<\/code>. Ce test traite la distribution d'\u00e9chantillonnage du kurtosis empirique \u2014 notoirement asym\u00e9trique et lente \u00e0 converger vers la normalit\u00e9 \u2014 en lui appliquant une transformation logarithmique sophistiqu\u00e9e visant \u00e0 contraindre sa distribution sous l'hypoth\u00e8se nulle vers une loi normale centr\u00e9e r\u00e9duite standard :<\/p>\n<pre><code># Test formel d'aplatissement d'Anscombe-Glynn\nz_stat_kurt, p_val_kurt = stats.kurtosistest(bdi_scores)\n\nprint(f\"Test de kurtosis d'Anscombe-Glynn -> Z-statistique : {z_stat_kurt:.4f} | p-valeur : {p_val_kurt:.4e}\")\nif p_val_kurt < 0.05:\n    print(\"Conclusion : Rejet categorique de la mesokurticite (kurtosis deviant de la loi normale).\")<\/code><\/pre>\n<p>L'hypoth\u00e8se nulle sous-jacente pose que l'exc\u00e8s de kurtosis de la population d'origine est de z\u00e9ro (m\u00e9sokurticit\u00e9 \u00e9quivalente \u00e0 la loi normale). Une statistique standardis\u00e9e <span class=\"arabpsy-math-inline\" data-latex=\"Z\">$Z$<\/span> largement positive associ\u00e9e \u00e0 une p-valeur infinit\u00e9simale signale formellement une leptokurticit\u00e9 statistiquement robuste, attestant d'une surcharge probabiliste substantielle dans les queues de distribution. Pour d\u00e9ployer <code>scipy.stats.kurtosistest<\/code> de fa\u00e7on valide, la taille d'\u00e9chantillon minimale requise s'\u00e9l\u00e8ve \u00e0 20 observations (<span class=\"arabpsy-math-inline\" data-latex=\"n ge 20\">$n ge 20$<\/span>) en raison des contraintes math\u00e9matiques de l'approximation de la transformation d'Anscombe-Glynn.<\/p>\n<h3>10.3 Le test omnibus de D'Agostino-Pearson (`scipy.stats.normaltest`)<\/h3>\n<p>Puisque la conformit\u00e9 \u00e0 la loi normale exige simultan\u00e9ment une sym\u00e9trie parfaite (<span class=\"arabpsy-math-inline\" data-latex=\"\\gamma_1 = 0\">$\\gamma_1 = 0$<\/span>) et une \u00e9paisseur des queues normale (<span class=\"arabpsy-math-inline\" data-latex=\"\\gamma_2 = 0\">$\\gamma_2 = 0$<\/span>), il appara\u00eet m\u00e9thodologiquement coh\u00e9rent de fusionner ces deux diagnostics partiels au sein d'une proc\u00e9dure d\u00e9cisionnelle unifi\u00e9e. C'est exactement le fondement du test omnibus de D'Agostino-Pearson, impl\u00e9ment\u00e9 sous Python via la commande <code>scipy.stats.normaltest()<\/code>.<\/p>\n<p>Ce test conjugue quadratiquement les deux scores standardis\u00e9s <span class=\"arabpsy-math-inline\" data-latex=\"Z(g_1)\">$Z(g_1)$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"Z(g_2)\">$Z(g_2)$<\/span> issus respectivement des transformations du skewness et du kurtosis d\u00e9taill\u00e9es pr\u00e9c\u00e9demment. Sous l'hypoth\u00e8se nulle conjointe de normalit\u00e9 distributionnelle, la statistique combin\u00e9e <span class=\"arabpsy-math-inline\" data-latex=\"K^2\">$K^2$<\/span> converge asymptotiquement vers une loi du Chi-deux \u00e0 deux degr\u00e9s de libert\u00e9 (<span class=\"arabpsy-math-inline\" data-latex=\"\\chi^2_2\">$\\chi^2_2$<\/span>) :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"K^2 = Z(g_1)^2 + Z(g_2)^2 \\sim \\chi^2_2\">$$K^2 = Z(g_1)^2 + Z(g_2)^2 \\sim \\chi^2_2$$<\/span><\/p>\n<pre><code># Test de normalite omnibus de D'Agostino-Pearson\nk2_stat, omnibus_pval = stats.normaltest(bdi_scores)\n\nprint(f\"Test Omnibus D'Agostino-Pearson -> Statistique K2 : {k2_stat:.4f} | p-valeur : {omnibus_pval:.4e}\")\nif omnibus_pval < 0.05:\n    print(\"Conclusion : La distribution empirique devie substantiellement de la normalite gaussienne.\")<\/code><\/pre>\n<p>Comparativement au c\u00e9l\u00e8bre test de Shapiro-Wilk (accessible via <code>scipy.stats.shapiro<\/code>), largement utilis\u00e9 dans les cercles biom\u00e9dicaux, le test omnibus de D'Agostino-Pearson pr\u00e9sente un avantage \u00e9pist\u00e9mologique magistral : en cas de rejet de l'hypoth\u00e8se de normalit\u00e9, il permet d'isoler imm\u00e9diatement la cause structurelle de ce rejet en examinant individuellement les composantes <span class=\"arabpsy-math-inline\" data-latex=\"Z(g_1)\">$Z(g_1)$<\/span> et <span class=\"arabpsy-math-inline\" data-latex=\"Z(g_2)\">$Z(g_2)$<\/span>, indiquant au chercheur si l'infraction est imputable \u00e0 une asym\u00e9trie pr\u00e9pond\u00e9rante, \u00e0 un \u00e9crasement leptokurtique, ou \u00e0 une conjonction des deux ph\u00e9nom\u00e8nes.<\/p>\n<h3>10.4 Le test de Jarque-Bera (`scipy.stats.jarque_bera`)<\/h3>\n<p>Issu originellement de l'\u00e9conom\u00e9trie des s\u00e9ries temporelles et de l'analyse financi\u00e8re quantitative, le test d'hypoth\u00e8se de Jarque-Bera (JB) est \u00e9galement omnipr\u00e9sent dans le traitement computationnel des grands signaux comportementaux (par exemple, les enregistrements \u00e9lectroenc\u00e9phalographiques continus ou les donn\u00e9es d'oculom\u00e9trie \u00e0 haute fr\u00e9quence). Impl\u00e9ment\u00e9 au sein de SciPy via <code>scipy.stats.jarque_bera()<\/code>, il repose directement sur les moments empiriques d'\u00e9chantillon d'ordre 3 et 4 non corrig\u00e9s :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"JB = \\frac{n}{6} \\left( g_1^2 + \\frac{(g_2)^2}{4} \\right) \\sim \\chi^2_2\">$$JB = \\frac{n}{6} \\left( g_1^2 + \\frac{(g_2)^2}{4} \\right) \\sim \\chi^2_2$$<\/span><\/p>\n<pre><code># Application du test asymptotique de Jarque-Bera\njb_stat, jb_pval = stats.jarque_bera(bdi_scores)\n\nprint(f\"Test de Jarque-Bera -> Statistique JB : {jb_stat:.4f} | p-valeur : {jb_pval:.4e}\")<\/code><\/pre>\n<p>Il importe de souligner une limitation m\u00e9thodologique cardinale : la statistique de Jarque-Bera est un test strictement asymptotique. Sa convergence vers la distribution limite du Chi-deux repose sur l'hypoth\u00e8se de tr\u00e8s grands \u00e9chantillons (<span class=\"arabpsy-math-inline\" data-latex=\"n to \\infty\">$n to \\infty$<\/span>). D\u00e8s lors, son utilisation sur de petites cohortes cliniques ($n < 50$) est formellement d\u00e9conseill\u00e9e, car le test devient instable et pr\u00e9sente une inflation prononc\u00e9e du taux de rejet erron\u00e9 de l'hypoth\u00e8se nulle. Sur de vastes registres de donn\u00e9es neuropsychologiques regroupant des milliers de passations informatis\u00e9es, il constitue en revanche une routine d'une v\u00e9locit\u00e9 algorithmique remarquable.<\/p>\n<h2>11. \u00c9tudes de cas empiriques : Analyse de donn\u00e9es psychom\u00e9triques et temps de r\u00e9action<\/h2>\n<h3>11.1 \u00c9tude de cas 1 : Chronom\u00e9trie mentale et distribution ex-gaussienne<\/h3>\n<p>Afin d'illustrer la pertinence empirique de cette mod\u00e9lisation, consid\u00e9rons une cohorte exp\u00e9rimentale de <span class=\"arabpsy-math-inline\" data-latex=\"n = 500\">$n = 500$<\/span> essais recueillis dans le cadre d'un paradigme de temps de r\u00e9action simple d'alerte visuelle. Sur le plan biophysique, la latence des r\u00e9ponses motrices r\u00e9sulte de la convolution d'une composante sensorimotrice normale (li\u00e9e \u00e0 la vitesse de propagation du potentiel d'action et \u00e0 l'ex\u00e9cution motrice p\u00e9riph\u00e9rique) et d'une composante cognitive exponentielle (traduisant les processus d\u00e9cisionnels centraux et la r\u00e9solution des conflits attentionnels). Cette dynamique se mod\u00e9lise par une distribution ex-gaussienne (somme d'une loi normale et d'une loi exponentielle ind\u00e9pendante) :<\/p>\n<pre><code># Simulation d'un profil chronometrique ex-gaussien\nnp.random.seed(2023)\nn_trials = 500\nmu_norm, sigma_norm = 350, 35  # Composante gaussienne motrice (ms)\ntau_exp = 120                  # Composante attentionnelle exponentielle (ms)\n\nrt_data = np.random.normal(mu_norm, sigma_norm, n_trials) + np.random.exponential(tau_exp, n_trials)\n\n# Evaluation distributionnelle complete sous SciPy et Pandas\nrt_series = pd.Series(rt_data, name=\"TempsDeReaction\")\nskew_rt = rt_series.skew()\nkurt_rt = rt_series.kurtosis()\n\nprint(\"--- ETUDE DE CAS 1 : CHRONOMETRIE COGNITIVE ---\")\nprint(f\"Moyenne arithmetique : {rt_series.mean():.2f} ms | Ecart-type : {rt_series.std():.2f} ms\")\nprint(f\"Mediane robuste      : {rt_series.median():.2f} ms\")\nprint(f\"Skewness (G1)        : {skew_rt:.4f}\")\nprint(f\"Exc\u00e8s de Kurt (G2)   : {kurt_rt:.4f}\")<\/code><\/pre>\n<p>L'ex\u00e9cution de cette mod\u00e9lisation met en lumi\u00e8re les propri\u00e9t\u00e9s typiques des chronom\u00e9tries mentales : le coefficient de skewness culmine \u00e0 une valeur avoisinant <span class=\"arabpsy-math-inline\" data-latex=\"+1{,}2\">$+1{,}2$<\/span> \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"+1{,}6\">$+1{,}6$<\/span>, tandis que l'exc\u00e8s de kurtosis d\u00e9passe largement <span class=\"arabpsy-math-inline\" data-latex=\"+2{,}5\">$+2{,}5$<\/span>. Cette signature morphologique porte une signification neuropsychologique majeure : rapporter exclusivement la moyenne arithm\u00e9tique (qui s'\u00e9tablit autour de 470 ms) introduit un biais syst\u00e9matique de sur\u00e9valuation du temps n\u00e9cessaire au traitement de base, la m\u00e9diane robuste se fixant quant \u00e0 elle \u00e0 environ 440 ms. La queue lourde capt\u00e9e par le kurtosis quantifie directement les \u00e9pisodes de rupture transitoire du contr\u00f4le ex\u00e9cutif attentionnel.<\/p>\n<h3>11.2 \u00c9tude de cas 2 : \u00c9chelle de d\u00e9pression clinique (BDI) et effet de plancher<\/h3>\n<p>Consid\u00e9rons \u00e0 pr\u00e9sent une cohorte de <span class=\"arabpsy-math-inline\" data-latex=\"n = 300\">$n = 300$<\/span> \u00e9tudiants universitaires issus de la population g\u00e9n\u00e9rale, soumis \u00e0 une passation syst\u00e9matique de l'inventaire de d\u00e9pression de Beck (Beck Depression Inventory - BDI-II), dont l'\u00e9chelle th\u00e9orique s'\u00e9tend de 0 \u00e0 63 points. Dans un groupe non clinique sain, la pathologie thymique est minoritaire, ce qui entra\u00eene une concentration massive des observations au voisinage imm\u00e9diat du score plancher z\u00e9ro :<\/p>\n<pre><code># Simulation d'un inventaire clinique en population saine (loi B\u00eata asym\u00e9trique)\nnp.random.seed(88)\n# Utilisation d'une loi Beta fortement asymetrique projetee sur l'echelle 0-63\nbdi_simulated = np.random.beta(a=1.2, b=8.0, size=300) * 63.0\n\nbdi_series = pd.Series(bdi_simulated, name=\"Score_BDI\")\nsk_bdi = bdi_series.skew()\nkt_bdi = bdi_series.kurtosis()\n\nprint(\"n--- ETUDE DE CAS 2 : ECHELLE CLINIQUE DU BDI ---\")\nprint(f\"Moyenne arithmetique : {bdi_series.mean():.2f} \/ 63 | Ecart-type : {bdi_series.std():.2f}\")\nprint(f\"Pourcentage de scores inferieurs a 10 points : {(bdi_series < 10).mean()*100:.1f}%\")\nprint(f\"Skewness (G1)        : {sk_bdi:.4f}\")\nprint(f\"Exc\u00e8s de Kurt (G2)   : {kt_bdi:.4f}\")<\/code><\/pre>\n<p>L'analyse distributionnelle met en \u00e9vidence un skewness fortement positif (<span class=\"arabpsy-math-inline\" data-latex=\"G_1 \\approx +1{,}4\">$G_1 \\approx +1{,}4$<\/span>) associ\u00e9 \u00e0 une leptokurticit\u00e9 sensible (<span class=\"arabpsy-math-inline\" data-latex=\"G_2 \\approx +1{,}8\">$G_2 \\approx +1{,}8$<\/span>). Cet effet de plancher prononc\u00e9, o\u00f9 plus de 60 % de la cohorte concentre ses scores sous les 10 points, interdit formellement l'usage de mod\u00e8les param\u00e9triques lin\u00e9aires classiques sans ajustements pr\u00e9alables. Tenter d'effectuer une r\u00e9gression lin\u00e9aire standard pour pr\u00e9dire ce score \u00e0 partir de marqueurs g\u00e9n\u00e9tiques ou neuro-anatomiques violerait frontalement l'hypoth\u00e8se d'homosc\u00e9dasticit\u00e9 et d'ind\u00e9pendance des r\u00e9sidus, imposant le basculement vers des mod\u00e8les de r\u00e9gression de Poisson tronqu\u00e9s, des mod\u00e8les Tobit ou une r\u00e9gression binomiale n\u00e9gative gonfl\u00e9e en z\u00e9ros (ZINB).<\/p>\n<h3>11.3 Comparaison synth\u00e9tique et rapportage statistique<\/h3>\n<p>Afin de synth\u00e9tiser les enseignements diagnostiques de ces deux \u00e9tudes de cas, confrontons leurs caract\u00e9ristiques quantitatives au sein d'une table analytique compar\u00e9e :<\/p>\n<pre><code>comparative_summary = pd.DataFrame({\n    'Metrique': [\n        'Taille echantillon (n)',\n        'Moyenne arithmetique',\n        'Ecart-type d'echantillon',\n        'Asymetrie sans biais (G1)',\n        'Significativite Skew (p-valeur)',\n        'Exces de Kurtosis (G2)',\n        'Significativite Kurt (p-valeur)',\n        'Diagnostic de Normalite'\n    ],\n    'Etude 1 : Chronometrie': [\n        f\"{len(rt_series)}\",\n        f\"{rt_series.mean():.2f} ms\",\n        f\"{rt_series.std():.2f} ms\",\n        f\"{rt_series.skew():.3f}\",\n        f\"{stats.skewtest(rt_series)[1]:.2e}\",\n        f\"{rt_series.kurtosis():.3f}\",\n        f\"{stats.kurtosistest(rt_series)[1]:.2e}\",\n        \"Non-Gaussien (Ex-Gaussien)\"\n    ],\n    'Etude 2 : Clinique BDI': [\n        f\"{len(bdi_series)}\",\n        f\"{bdi_series.mean():.2f} pts\",\n        f\"{bdi_series.std():.2f} pts\",\n        f\"{bdi_series.skew():.3f}\",\n        f\"{stats.skewtest(bdi_series)[1]:.2e}\",\n        f\"{bdi_series.kurtosis():.3f}\",\n        f\"{stats.kurtosistest(bdi_series)[1]:.2e}\",\n        \"Non-Gaussien (Plancher Beta)\"\n    ]\n}).set_index('Metrique')\n\nprint(\"n--- SYNTHESE DES DIAGNOSTICS DISTRIBUTIONNELS COMPARATIFS ---\")\nprint(comparative_summary)<\/code><\/pre>\n<p>L'analyse compar\u00e9e d\u00e9montre que bien que les deux variables exp\u00e9rimentales g\u00e9n\u00e8rent des coefficients d'asym\u00e9trie de m\u00eame signe math\u00e9matique (positif), leurs origines psychom\u00e9triques sont conceptuellement dissemblables : dans l'\u00c9tude 1, l'asym\u00e9trie d\u00e9coule de la cin\u00e9matique intrins\u00e8que du fonctionnement c\u00e9r\u00e9bral humain (latence motrice incompressible), tandis que dans l'\u00c9tude 2, elle provient d'une inad\u00e9quation structurelle entre la sensibilit\u00e9 de l'instrument clinique (con\u00e7u pour graduer la s\u00e9v\u00e9rit\u00e9 d'une pathologie constitu\u00e9e) et le niveau ph\u00e9notypique de l'\u00e9chantillon test\u00e9 (cohorte saine non psychiatrique).<\/p>\n<h2>12. Bonnes pratiques, limites m\u00e9thodologiques et diagnostics compl\u00e9mentaires<\/h2>\n<h3>12.1 Sensibilit\u00e9 extr\u00eame aux valeurs aberrantes et alternatives robustes<\/h3>\n<p>La limite m\u00e9thodologique la plus insidieuse des estimateurs classiques des moments statistiques d'ordre sup\u00e9rieur r\u00e9side dans leur extr\u00eame vuln\u00e9rabilit\u00e9 face aux donn\u00e9es aberrantes isol\u00e9es. En \u00e9levant les \u00e9carts centr\u00e9s \u00e0 la troisi\u00e8me et surtout \u00e0 la quatri\u00e8me puissance, une unique erreur de transcription manuelle (par exemple la saisie d'un temps de r\u00e9action de 12 000 ms au lieu de 1 200 ms) ou un art\u00e9fact instrumental ponctuel peut faire basculer un coefficient d'exc\u00e8s de kurtosis d'une valeur raisonnable de <span class=\"arabpsy-math-inline\" data-latex=\"0{,}5\">$0{,}5$<\/span> \u00e0 plus de <span class=\"arabpsy-math-inline\" data-latex=\"45{,}0\">$45{,}0$<\/span>. D\u00e8s lors, le chercheur court le risque de qualifier \u00e0 tort une distribution enti\u00e8re de hautement leptokurtique sur la base d'un unique artefact technique.<\/p>\n<p>Pour parer \u00e0 cette fragilit\u00e9 math\u00e9matique, la statistique non param\u00e9trique a formalis\u00e9 des estimateurs morphologiques robustes fond\u00e9s sur les quantiles et les percentiles de la distribution. Pour l'asym\u00e9trie, l'estimateur de r\u00e9f\u00e9rence est le <strong>coefficient d'asym\u00e9trie quartile de Bowley<\/strong> (\u00e9galement attribu\u00e9 \u00e0 Galton), d\u00e9fini exclusivement \u00e0 partir des trois quartiles <span class=\"arabpsy-math-inline\" data-latex=\"Q_1\">$Q_1$<\/span> (25e percentile), <span class=\"arabpsy-math-inline\" data-latex=\"Q_2\">$Q_2$<\/span> (m\u00e9diane) et <span class=\"arabpsy-math-inline\" data-latex=\"Q_3\">$Q_3$<\/span> (75e percentile) :<\/p>\n<p><span class=\"arabpsy-math-display\" data-latex=\"B_1 = \\frac{(Q_3 - Q_2) - (Q_2 - Q_1)}{Q_3 - Q_1} = \\frac{Q_3 + Q_1 - 2 Q_2}{Q_3 - Q_1}\">$$B_1 = \\frac{(Q_3 - Q_2) - (Q_2 - Q_1)}{Q_3 - Q_1} = \\frac{Q_3 + Q_1 - 2 Q_2}{Q_3 - Q_1}$$<\/span><\/p>\n<p>Pour le kurtosis, l'alternative robuste est incarn\u00e9e par le <strong>coefficient de Moors<\/strong>, qui segmente la distribution en octiles (<span class=\"arabpsy-math-inline\" data-latex=\"E_1\">$E_1$<\/span> \u00e0 <span class=\"arabpsy-math-inline\" data-latex=\"E_7\">$E_7$<\/span>) :<\/p>\n<pre><code>def robust_distributional_metrics(data):\n    \"\"\"Calcule les estimateurs robustes d'asymetrie (Bowley) et de kurtosis (Moors).\"\"\"\n    x = np.asarray(data, dtype=np.float64)\n    x = x[~np.isnan(x)]\n    \n    # Extraction des quantiles essentiels\n    q25, q50, q75 = np.percentile(x, [25, 50, 75])\n    \n    # Skewness quartile de Bowley (borne entre -1 et +1)\n    bowley_skew = ((q75 - q50) - (q50 - q25)) \/ (q75 - q25)\n    \n    # Kurtosis octile de Moors\n    e1, e2, e3, e5, e6, e7 = np.percentile(x, [12.5, 25, 37.5, 62.5, 75, 87.5])\n    moors_kurt = ((e7 - e5) + (e3 - e1)) \/ (e6 - e2)\n    # Pour une loi normale standard, le Moors kurtosis converge theoriquement vers ~1.233\n    \n    return {\n        'Bowley_Skewness': bowley_skew,\n        'Moors_Kurtosis': moors_kurt\n    }\n\nrobust_metrics = robust_distributional_metrics(rt_data)\nprint(f\"Indicateurs robustes (Chronom\u00e9trie) -> Bowley Skew : {robust_metrics['Bowley_Skewness']:.4f} | Moors Kurt : {robust_metrics['Moors_Kurtosis']:.4f}\")<\/code><\/pre>\n<p>Ces m\u00e9triques robustes poss\u00e8dent un point de rupture statistique tr\u00e8s \u00e9lev\u00e9 : la contamination d'une fraction substantielle d'observations extr\u00eames en queue de distribution ne modifie que marginalement les quantiles centraux, garantissant une quantification incorruptible de la forme du noyau distributionnel de la population.<\/p>\n<h3>12.2 Transformations de variables pour rem\u00e9dier aux d\u00e9viations de distribution<\/h3>\n<p>Lorsqu'un protocole m\u00e9thodologique impose le maintien d'une analyse param\u00e9trique lin\u00e9aire alors que les variables manifestent une asym\u00e9trie intol\u00e9rable, la solution classique consiste \u00e0 appliquer une transformation math\u00e9matique continue afin de normaliser la distribution et stabiliser la variance. Historiquement, les transformations logarithmiques (<span class=\"arabpsy-math-inline\" data-latex=\"ln(X)\">$ln(X)$<\/span> ou <span class=\"arabpsy-math-inline\" data-latex=\"\\log_{10}(X)\">$\\log_{10}(X)$<\/span> pour l'asym\u00e9trie positive mod\u00e9r\u00e9e \u00e0 s\u00e9v\u00e8re) et racine carr\u00e9e (<span class=\"arabpsy-math-inline\" data-latex=\"\\sqrt{X}\">$\\sqrt{X}$<\/span> pour l'asym\u00e9trie positive l\u00e9g\u00e8re) ont \u00e9t\u00e9 abondamment document\u00e9es.<\/p>\n<p>N\u00e9anmoins, la m\u00e9thodologie contemporaine pr\u00e9conise le recours \u00e0 la famille des <strong>transformations de puissances param\u00e9triques de Box-Cox<\/strong>, qui automatise la recherche du param\u00e8tre d'optimisation continu <span class=\"arabpsy-math-inline\" data-latex=\"lambda\">$lambda$<\/span> maximisant la vraisemblance de normalit\u00e9 gaussienne des r\u00e9sidus :<\/p>\n<pre><code># Transformation de Box-Cox sur des donnees strictement positives\ntransformed_rt, optimal_lambda = stats.boxcox(rt_data)\n\nprint(f\"Parametre d'optimisation Box-Cox lambda : {optimal_lambda:.4f}\")\nprint(f\"Skewness avant Box-Cox : {stats.skew(rt_data, bias=False):.4f}\")\nprint(f\"Skewness apres Box-Cox : {stats.skew(transformed_rt, bias=False):.4f}\")<\/code><\/pre>\n<p>Lorsque les donn\u00e9es empiriques comportent des valeurs strictement nulles ou n\u00e9gatives (cas universel sur les \u00e9chelles cliniques comportant des scores de z\u00e9ro, comme l'inventaire BDI \u00e9tudi\u00e9 pr\u00e9c\u00e9demment), la transformation de Box-Cox est math\u00e9matiquement inapplicable. Il convient alors de mobiliser l'algorithme de <strong>Yeo-Johnson<\/strong>, impl\u00e9ment\u00e9 sous Python via <code>scipy.stats.yeojohnson()<\/code>, qui \u00e9tend la formulation de Box-Cox \u00e0 l'ensemble du domaine r\u00e9el (<span class=\"arabpsy-math-inline\" data-latex=\"\\mathbb{R}\">$\\mathbb{R}$<\/span>) sans imposer de constante de translation arbitraire :<\/p>\n<pre><code># Transformation de Yeo-Johnson pour variables contenant des zeros\ntransformed_bdi, yj_lambda = stats.yeojohnson(bdi_simulated)\n\nprint(f\"Parametre lambda Yeo-Johnson   : {yj_lambda:.4f}\")\nprint(f\"Skewness avant Yeo-Johnson     : {stats.skew(bdi_simulated, bias=False):.4f}\")\nprint(f\"Skewness apres Yeo-Johnson     : {stats.skew(transformed_bdi, bias=False):.4f}\")<\/code><\/pre>\n<p>Gr\u00e2ce \u00e0 cette transformation, l'asym\u00e9trie initiale de <span class=\"arabpsy-math-inline\" data-latex=\"+1{,}4\">$+1{,}4$<\/span> se trouve ramen\u00e9e au voisinage imm\u00e9diat de z\u00e9ro, permettant ainsi l'int\u00e9gration de ces scores dans des architectures de r\u00e9gression ou des mod\u00e9lisations structurelles sans violer les postulats probabilistes des estimateurs par le maximum de vraisemblance (ML).<\/p>\n<h3>12.3 Normes de rapportage acad\u00e9mique selon le style APA (7e \u00e9dition)<\/h3>\n<p>La transmission rigoureuse des param\u00e8tres morphologiques au sein des publications universitaires internationales est formellement standardis\u00e9e par les directives de l'American Psychological Association (<a rel=\"noopener noreferrer\" href=\"https:\/\/apastyle.apa.org\/\">APA 7e \u00e9dition<\/a>). La r\u00e8gle fondamentale prescrit d'abandonner les d\u00e9signations textuelles ambigu\u00ebs au profit des symboles math\u00e9matiques universellement \u00e9tablis, tout en rapportant conjointement chaque moment d'ordre sup\u00e9rieur avec son erreur-type asymptotique d'\u00e9chantillonnage associ\u00e9e (not\u00e9e <em>SE<\/em> pour <em>Standard Error<\/em>) :<\/p>\n<p>Les r\u00e8gles r\u00e9dactionnelles imposent :<br \/>\nL'usage de la notation <span class=\"arabpsy-math-inline\" data-latex=\"G_1\">$G_1$<\/span> (ou <em>Skew<\/em>) pour d\u00e9signer l'asym\u00e9trie sans biais d'\u00e9chantillon, et <span class=\"arabpsy-math-inline\" data-latex=\"G_2\">$G_2$<\/span> (ou <em>Kurt<\/em>) pour stipuler explicitement l'exc\u00e8s de kurtosis de Fisher centr\u00e9 sur z\u00e9ro.<br \/>\nLa typographie en italique syst\u00e9matique des lettres latines d\u00e9signant des statistiques d'\u00e9chantillon (ex. <em>M<\/em>, <em>SD<\/em>, <em>SE<\/em>, <em>t<\/em>, <em>F<\/em>, <em>p<\/em>).<br \/>\nL'arrondi uniforme des coefficients de moments \u00e0 deux ou trois d\u00e9cimales de pr\u00e9cision num\u00e9rique.<\/p>\n<p>Voici un mod\u00e8le r\u00e9dactionnel formel satisfaisant rigoureusement aux exigences de la 7e \u00e9dition du style APA pour l'insertion au sein de la section \u00ab R\u00e9sultats \u00bb d'un manuscrit scientifique :<\/p>\n<p><em>\u00ab L'inspection distributionnelle de l'\u00e9preuve de chronom\u00e9trie mentale r\u00e9v\u00e8le une d\u00e9viation substantielle par rapport \u00e0 la normalit\u00e9 univari\u00e9e. La distribution des temps de r\u00e9action est caract\u00e9ris\u00e9e par une asym\u00e9trie positive significative, G\u2081 = 1,42, SE = 0,11, t(499) = 12,91, p < 0,001, ainsi que par un exc\u00e8s de kurtosis leptokurtique marqu\u00e9, G\u2082 = 2,86, SE = 0,22, t(499) = 13,00, p < 0,001. Le test omnibus de D'Agostino-Pearson confirme le rejet cat\u00e9gorique du postulat de distribution gaussienne, K\u00b2 = 184,12, p < 0,001. En cons\u00e9quence de cette morphologie asym\u00e9trique et de l'\u00e9paisseur prononc\u00e9e des queues de distribution, une transformation param\u00e9trique logarithmique (ou une mod\u00e9lisation lin\u00e9aire g\u00e9n\u00e9ralis\u00e9e de Poisson) a \u00e9t\u00e9 appliqu\u00e9e pr\u00e9alablement \u00e0 l'\u00e9valuation des contrastes factoriels au sein de l'ANOVA. \u00bb<\/em><\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>Anscombe, F. J., & Glynn, W. J. (1983). Distribution of the kurtosis statistic b2 for normal samples. <em>Biometrika<\/em>, 70(2), 403-410. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1093\/biomet\/70.2.403\">https:\/\/doi.org\/10.1093\/biomet\/70.2.403<\/a><\/li>\n<li>Box, G. E., & Cox, D. R. (1964). An analysis of transformations. <em>Journal of the Royal Statistical Society: Series B (Methodological)<\/em>, 26(2), 211-243. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1111\/j.2517-6161.1964.tb00553.x\">https:\/\/doi.org\/10.1111\/j.2517-6161.1964.tb00553.x<\/a><\/li>\n<li>Bulmer, M. G. (1979). <em>Principles of Statistics<\/em>. Dover Publications.<\/li>\n<li>Cram\u00e9r, H. (1946). <em>Mathematical Methods of Statistics<\/em>. Princeton University Press.<\/li>\n<li>D'Agostino, R. B. (1970). Transformation to normality of the null distribution of g1. <em>Biometrika<\/em>, 57(3), 679-683. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1093\/biomet\/57.3.679\">https:\/\/doi.org\/10.1093\/biomet\/57.3.679<\/a><\/li>\n<li>D'Agostino, R. B., & Pearson, E. S. (1973). Tests for departure from normality. Empirical results for the distributions of b2 and sqrt(b1). <em>Biometrika<\/em>, 60(3), 613-622. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1093\/biomet\/60.3.613\">https:\/\/doi.org\/10.1093\/biomet\/60.3.613<\/a><\/li>\n<li>Fisher, R. A. (1930). The moments of the distribution for normal samples of measures of departure from normality. <em>Proceedings of the Royal Society of London. Series A<\/em>, 130(812), 16-28. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1098\/rspa.1930.0185\">https:\/\/doi.org\/10.1098\/rspa.1930.0185<\/a><\/li>\n<li>Harris, C. R., Millman, K. J., van der Walt, S. J., Gommers, R., Virtanen, P., Cournapeau, D., ... & Oliphant, T. E. (2020). Array programming with NumPy. <em>Nature<\/em>, 585(7825), 357-362. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1038\/s41586-020-2649-2\">https:\/\/doi.org\/10.1038\/s41586-020-2649-2<\/a><\/li>\n<li>Jarque, C. M., & Bera, A. K. (1987). A test for normality of observations and regression residuals. <em>International Statistical Review<\/em>, 55(2), 163-172. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.2307\/1403192\">https:\/\/doi.org\/10.2307\/1403192<\/a><\/li>\n<li>Micceri, T. (1989). The unicorn, the normal curve, and other improbable creatures. <em>Psychological Bulletin<\/em>, 105(1), 156-166. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1037\/0033-2909.105.1.156\">https:\/\/doi.org\/10.1037\/0033-2909.105.1.156<\/a><\/li>\n<li>Moors, J. J. A. (1988). A quantile alternative for kurtosis. <em>The Statistician<\/em>, 37(1), 25-32. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.2307\/2348376\">https:\/\/doi.org\/10.2307\/2348376<\/a><\/li>\n<li>Pearson, K. (1895). Contributions to the mathematical theory of evolution.\u2014II. Skew variation in homogeneous material. <em>Philosophical Transactions of the Royal Society of London. A<\/em>, 186, 343-414. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1098\/rsta.1895.0010\">https:\/\/doi.org\/10.1098\/rsta.1895.0010<\/a><\/li>\n<li>Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T., Cournapeau, D., ... & SciPy 1.0 Contributors. (2020). SciPy 1.0: Fundamental algorithms for scientific computing in Python. <em>Nature Methods<\/em>, 17(3), 261-272. <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>Westfall, P. H. (2014). Kurtosis as peakedness, 1905\u20132014. R.I.P. <em>The American Statistician<\/em>, 68(3), 191-195. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1080\/00031305.2014.917055\">https:\/\/doi.org\/10.1080\/00031305.2014.917055<\/a><\/li>\n<li>Yeo, I. K., & Johnson, R. A. (2000). A new family of power transformations to improve normality or symmetry. <em>Biometrika<\/em>, 87(4), 954-959. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1093\/biomet\/87.4.954\">https:\/\/doi.org\/10.1093\/biomet\/87.4.954<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet pour calculer et interpr\u00e9ter le skewness et le kurtosis en Python avec SciPy, Pandas et NumPy dans le cadre des sciences psychologiques.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[1829,5039],"tags":[6234,6233,16,5295,6232],"class_list":["post-4303","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-statistique","category-psychometrie-et-data-science","tag-analyse-distributionnelle","tag-kurtosis-python","tag-psychometrie","tag-scipy-stats","tag-skewness-python"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/4303","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=4303"}],"version-history":[{"count":0,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/4303\/revisions"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4303"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}