{"id":5846,"date":"2026-09-16T03:11:15","date_gmt":"2026-09-16T03:11:15","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-effectuer-le-test-de-tukey-en-python\/"},"modified":"2026-09-16T03:11:15","modified_gmt":"2026-09-16T03:11:15","slug":"comment-effectuer-le-test-de-tukey-en-python","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-effectuer-le-test-de-tukey-en-python","title":{"rendered":"Comment effectuer le test de Tukey en Python"},"content":{"rendered":"<p>Dans le domaine des sciences comportementales, de la psychologie exp\u00e9rimentale et des neurosciences cognitives, l&rsquo;\u00e9valuation quantitative des diff\u00e9rences entre conditions exp\u00e9rimentales constitue le socle de la d\u00e9marche empirique. Lorsqu&rsquo;un chercheur manipule une variable ind\u00e9pendante comportant trois modalit\u00e9s ou davantage, l&rsquo;analyse de variance, commun\u00e9ment d\u00e9sign\u00e9e sous le terme d&rsquo;<a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Analysis_of_variance\">analyse de variance (ANOVA)<\/a>, s&rsquo;impose comme l&rsquo;outil standard pour d\u00e9terminer si une variabilit\u00e9 intergroupe significative \u00e9merge au-del\u00e0 des fluctuations purement al\u00e9atoires. Toutefois, l&rsquo;ANOVA ne fournit qu&rsquo;un verdict global : elle signale qu&rsquo;au moins une condition se distingue des autres, sans jamais r\u00e9v\u00e9ler la configuration pr\u00e9cise de ces disparit\u00e9s. Pour \u00e9lucider l&rsquo;architecture exacte de ces effets, le recours \u00e0 des proc\u00e9dures de comparaisons multiples a posteriori, ou tests post-hoc, devient une n\u00e9cessit\u00e9 m\u00e9thodologique incontournable.<\/p>\n<p>Parmi l&rsquo;arsenal des tests post-hoc d\u00e9velopp\u00e9s au cours du vingti\u00e8me si\u00e8cle, le test de la plus petite diff\u00e9rence significative honn\u00eate, formalis\u00e9 par le statisticien John Tukey et universellement connu sous l&rsquo;acronyme de <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Tukey%27s_range_test\">test HSD de Tukey (Honestly Significant Difference)<\/a>, occupe une place pr\u00e9pond\u00e9rante. Fond\u00e9 sur la distribution de l&rsquo;\u00e9tendue studentis\u00e9e, ce test permet de sonder simultan\u00e9ment l&rsquo;ensemble des paires possibles de moyennes tout en maintenant un contr\u00f4le rigoureux et inflexible sur le risque d&rsquo;erreur de premi\u00e8re esp\u00e8ce \u00e0 l&rsquo;\u00e9chelle de l&rsquo;ensemble de la famille de comparaisons. Il r\u00e9sout ainsi avec \u00e9l\u00e9gance la tension fondamentale entre la protection contre les faux positifs et le maintien d&rsquo;une puissance statistique suffisante pour d\u00e9tecter des ph\u00e9nom\u00e8nes psychologiques r\u00e9els mais subtils.<\/p>\n<p>Avec l&rsquo;av\u00e8nement de la science ouverte et la transition progressive des laboratoires vers des \u00e9cosyst\u00e8mes informatiques libres, reproductibles et automatisables, le langage de programmation Python s&rsquo;est impos\u00e9 comme une plateforme de premier plan pour le traitement des donn\u00e9es biom\u00e9dicales et comportementales. Soutenu par des biblioth\u00e8ques scientifiques hautement optimis\u00e9es telles que NumPy, SciPy, Pandas et Statsmodels, Python permet d&rsquo;ex\u00e9cuter avec rigueur l&rsquo;int\u00e9gralit\u00e9 du pipeline analytique, depuis le nettoyage des matrices de donn\u00e9es jusqu&rsquo;\u00e0 l&rsquo;inf\u00e9rence simultan\u00e9e et la g\u00e9n\u00e9ration de visualisations conformes aux exigences acad\u00e9miques. Ce guide exhaustif d\u00e9taille les fondements math\u00e9matiques, les pr\u00e9requis distributionnels et la mise en \u0153uvre pratique pas-\u00e0-pas du test de Tukey en Python, fournissant aux chercheurs et analystes de donn\u00e9es un cadre m\u00e9thodologique complet et imm\u00e9diatement op\u00e9rationnel.<\/p>\n<h2>1. Introduction aux tests post-hoc et au test HSD de Tukey en psychologie<\/h2>\n<h3>1.1 Le r\u00f4le de l&rsquo;analyse de variance (ANOVA) et ses limites intrins\u00e8ques<\/h3>\n<p>L&rsquo;analyse de variance \u00e0 un facteur contr\u00f4l\u00e9 constitue l&rsquo;une des techniques inf\u00e9rentielles les plus r\u00e9pandues en psychologie cognitive, sociale et clinique. Sa finalit\u00e9 consiste \u00e0 comparer les moyennes d&rsquo;une variable d\u00e9pendante quantitative continue observ\u00e9es \u00e0 travers trois groupes exp\u00e9rimentaux ou davantage. L&rsquo;hypoth\u00e8se nulle statistique stipule l&rsquo;\u00e9galit\u00e9 parfaite de l&rsquo;ensemble des param\u00e8tres d&rsquo;esp\u00e9rance math\u00e9matique au sein de la population parente, ce qui s&rsquo;exprime formellement par l&rsquo;\u00e9galit\u00e9 de l&rsquo;ensemble des moyennes des groupes observ\u00e9s. Lorsque la valeur empirique du rapport de variance de Fisher-Snedecor surpasse le seuil critique fix\u00e9 pour les degr\u00e9s de libert\u00e9 correspondants, l&rsquo;hypoth\u00e8se nulle est rejet\u00e9e en faveur de l&rsquo;hypoth\u00e8se alternative, attestant qu&rsquo;au moins une paire de moyennes diff\u00e8re significativement.<\/p>\n<p>N\u00e9anmoins, la limitation fondamentale de l&rsquo;ANOVA r\u00e9side dans son caract\u00e8re omnibus. Le test global indique la pr\u00e9sence d&rsquo;une h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 parmi les groupes, mais ne procure aucune information sur l&rsquo;origine pr\u00e9cise de cette divergence. En pratique, l&rsquo;effet omnibus peut d\u00e9couler du d\u00e9tachement d&rsquo;un seul groupe extr\u00eame vis-\u00e0-vis d&rsquo;un ensemble homog\u00e8ne, d&rsquo;une s\u00e9paration nette entre deux sous-ensembles de conditions, ou encore d&rsquo;une gradation continue entre toutes les modalit\u00e9s exp\u00e9rimentales. Pour un chercheur \u00e9tudiant par exemple l&rsquo;influence de plusieurs dosages pharmacologiques ou de diff\u00e9rents protocoles de rem\u00e9diation cognitive sur le temps de r\u00e9action, le simple constat d&rsquo;un effet global s&rsquo;av\u00e8re insuffisant pour orienter la th\u00e9orie ou la pratique clinique. Une exploration cibl\u00e9e et m\u00e9thodique de chaque contraste bilat\u00e9ral devient d\u00e8s lors indispensable pour cartographier l&rsquo;espace exp\u00e9rimental.<\/p>\n<p>Dans les paradigmes exp\u00e9rimentaux modernes, cette ind\u00e9termination omnibus est particuli\u00e8rement probl\u00e9matique en psychologie sociale et cognitive. Lors de l&rsquo;\u00e9tude de l&rsquo;impact de diff\u00e9rents types d&rsquo;amor\u00e7age s\u00e9mantique sur la reconnaissance lexicale, l&rsquo;ANOVA confirme la sensibilit\u00e9 globale du syst\u00e8me cognitif aux variations contextuelles, mais ne permet pas de d\u00e9terminer si l&rsquo;amor\u00e7age positif se distingue r\u00e9ellement de la condition contr\u00f4le neutre, ni s&rsquo;il surpasse l&rsquo;amor\u00e7age n\u00e9gatif. Sans une proc\u00e9dure d&rsquo;investigation subs\u00e9quente con\u00e7ue pour comparer individuellement chaque paire de modalit\u00e9s, les d\u00e9ductions scientifiques demeurent incompl\u00e8tes et expos\u00e9es \u00e0 des surinterpr\u00e9tations subjectives.<\/p>\n<h3>1.2 La probl\u00e9matique de l&rsquo;inflation de l&rsquo;erreur de type I<\/h3>\n<p>Pour d\u00e9terminer quelles moyennes diff\u00e8rent apr\u00e8s avoir constat\u00e9 la significativit\u00e9 d&rsquo;une ANOVA omnibus, la tentation intuitive consisterait \u00e0 ex\u00e9cuter une s\u00e9rie de tests t de Student ind\u00e9pendants pour chaque paire de conditions. Cette d\u00e9marche comporte un \u00e9cueil m\u00e9thodologique majeur : le ph\u00e9nom\u00e8ne de l&rsquo;inflation du risque d&rsquo;erreur de type I, couramment d\u00e9sign\u00e9 sous le terme d&rsquo;erreur par famille de comparaisons ou <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Family-wise_error_rate\">taux d&rsquo;erreur par famille (Family-Wise Error Rate &#8211; FWER)<\/a>. Lorsqu&rsquo;une hypoth\u00e8se nulle est test\u00e9e au seuil nominal alpha usuel de 5 %, la probabilit\u00e9 de ne pas commettre d&rsquo;erreur de premi\u00e8re esp\u00e8ce sur un test individuel s&rsquo;\u00e9tablit \u00e0 95 %.<\/p>\n<p>Toutefois, d\u00e8s lors que l&rsquo;analyste multiplie les comparaisons mutuellement ind\u00e9pendantes sur un m\u00eame jeu de donn\u00e9es, la probabilit\u00e9 conjointe de ne commettre aucune erreur de type I diminue de fa\u00e7on g\u00e9om\u00e9trique. Pour un nombre de groupes \u00e9gal \u00e0 <em>k<\/em>, le nombre de comparaisons par paires possibles s&rsquo;\u00e9l\u00e8ve \u00e0 <em>k(k &#8211; 1) \/ 2<\/em>. Si l&rsquo;on d\u00e9signe par <em>c<\/em> ce nombre total de comparaisons, la probabilit\u00e9 globale d&rsquo;observer au moins un faux positif au cours de la s\u00e9rie d&rsquo;\u00e9valuations est mod\u00e9lis\u00e9e par l&rsquo;\u00e9quation exponentielle <em>alpha_global = 1 &#8211; (1 &#8211; alpha_individuel)^c<\/em>. Ainsi, dans un protocole clinique comportant cinq groupes distincts, l&rsquo;investigateur doit \u00e9valuer 10 paires de moyennes ; le risque alpha cumul\u00e9 s&rsquo;\u00e9l\u00e8ve alors \u00e0 1 &#8211; (0,95)^10, soit environ 40,1 %. Pr\u00e8s de quatre fois sur dix, une diff\u00e9rence d\u00e9clar\u00e9e statistiquement significative sera le pur produit d&rsquo;une fluctuation d&rsquo;\u00e9chantillonnage al\u00e9atoire.<\/p>\n<p>Il importe de distinguer avec rigueur les comparaisons a priori, ou contrastes planifi\u00e9s, des comparaisons a posteriori ou post-hoc. Les contrastes planifi\u00e9s sont articul\u00e9s en amont de la collecte des donn\u00e9es sur la base d&rsquo;hypoth\u00e8ses th\u00e9oriques pr\u00e9cises et d\u00e9limit\u00e9es, ce qui justifie un ajustement moins conservateur du seuil de d\u00e9cision. \u00c0 l&rsquo;inverse, l&rsquo;approche post-hoc explore l&rsquo;int\u00e9gralit\u00e9 des combinaisons possibles apr\u00e8s observation des r\u00e9sultats. L&rsquo;absence d&rsquo;une correction math\u00e9matique rigoureuse lors de cette fouille exhaustive engendre une prolif\u00e9ration de d\u00e9couvertes illusoires, minant gravement la reproductibilit\u00e9 des r\u00e9sultats scientifiques en psychologie exp\u00e9rimentale et faussant les m\u00e9ta-analyses subs\u00e9quentes.<\/p>\n<h3>1.3 Origine et sp\u00e9cificit\u00e9s du test Honestly Significant Difference (HSD) de Tukey<\/h3>\n<p>Face \u00e0 ce p\u00e9ril m\u00e9thodologique, le statisticien am\u00e9ricain John Wilder Tukey a propos\u00e9 au d\u00e9but des ann\u00e9es 1950 une solution analytique \u00e9l\u00e9gante : le test Honestly Significant Difference (HSD). Cette proc\u00e9dure a \u00e9t\u00e9 express\u00e9ment con\u00e7ue pour tester la totalit\u00e9 des comparaisons par paires possibles entre les moyennes de plusieurs groupes ind\u00e9pendants, tout en garantissant de mani\u00e8re absolue que le taux d&rsquo;erreur par famille ne d\u00e9passe jamais le niveau alpha pr\u00e9d\u00e9fini par le chercheur, quelle que soit la combinaison de moyennes examin\u00e9e.<\/p>\n<p>Le test HSD de Tukey r\u00e9alise un \u00e9quilibre remarquable entre la stricte contention du risque d&rsquo;erreur de type I et la pr\u00e9servation de la puissance statistique, c&rsquo;est-\u00e0-dire la capacit\u00e9 \u00e0 rejeter l&rsquo;hypoth\u00e8se nulle lorsqu&rsquo;elle est effectivement fausse. Contrairement \u00e0 la correction classique de Bonferroni, qui applique une p\u00e9nalit\u00e9 lin\u00e9aire uniforme excessivement conservatrice rendant la d\u00e9tection d&rsquo;effets r\u00e9els difficile lors d&rsquo;un grand nombre de comparaisons, la m\u00e9thode de Tukey prend en compte la covariance inh\u00e9rente aux diff\u00e9rences de moyennes calcul\u00e9es \u00e0 partir d&rsquo;un ensemble commun d&rsquo;\u00e9chantillons. Elle s&rsquo;av\u00e8re \u00e9galement plus puissante que le test de Scheff\u00e9 lorsque l&rsquo;int\u00e9r\u00eat de la recherche se focalise exclusivement sur des contrastes simples par paires plut\u00f4t que sur des contrastes complexes impliquant des combinaisons lin\u00e9aires de groupes.<\/p>\n<p>Comparativement au test de Dunnett, qui restreint son champ d&rsquo;inf\u00e9rence \u00e0 la comparaison de plusieurs conditions exp\u00e9rimentales face \u00e0 un unique groupe t\u00e9moin ou contr\u00f4le, le test HSD de Tukey s&rsquo;adresse aux dispositifs o\u00f9 chaque modalit\u00e9 doit pouvoir \u00eatre confront\u00e9e \u00e0 chacune des autres sans hi\u00e9rarchie pr\u00e9alable. Il constitue le standard d&rsquo;excellence m\u00e9thodologique pour les recherches exploratoires ou confirmatoires dans lesquelles l&rsquo;espace exp\u00e9rimental requiert une cartographie diff\u00e9rentielle bilat\u00e9rale exhaustive, offrant une robustesse formelle adoss\u00e9e \u00e0 une interpr\u00e9tabilit\u00e9 intuitive tant sur le plan des valeurs p que des intervalles de confiance associ\u00e9s.<\/p>\n<h2>2. Fondements th\u00e9oriques et math\u00e9matiques du test de Tukey<\/h2>\n<h3>2.1 La distribution de l&rsquo;\u00e9tendue studentis\u00e9e (Studentized Range Distribution)<\/h3>\n<p>L&rsquo;\u00e9difice math\u00e9matique du test de Tukey repose sur la <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Studentized_range_distribution\">distribution de l&rsquo;\u00e9tendue studentis\u00e9e<\/a>, d\u00e9sign\u00e9e par la variable al\u00e9atoire <em>q<\/em>. Contrairement au test t de Student qui \u00e9value l&rsquo;\u00e9cart standardis\u00e9 entre deux moyennes isol\u00e9es, la statistique <em>q<\/em> mod\u00e9lise le comportement probabiliste de la diff\u00e9rence maximale observ\u00e9e au sein d&rsquo;un ensemble de <em>k<\/em> moyennes ind\u00e9pendantes et identiquement distribu\u00e9es selon une loi normale, normalis\u00e9e par une estimation conjointe de l&rsquo;\u00e9cart-type de la population.<\/p>\n<p>La statistique d&rsquo;\u00e9tendue studentis\u00e9e se d\u00e9finit formellement par le rapport entre l&rsquo;\u00e9tendue brute des moyennes d&rsquo;\u00e9chantillons et l&rsquo;erreur standard de la moyenne estim\u00e9e \u00e0 partir de la variance r\u00e9siduelle de l&rsquo;ANOVA. La formule de la statistique <em>q<\/em> s&rsquo;\u00e9crit :<\/p>\n<p><strong>q = (X_max &#8211; X_min) \/ racine(MSE \/ n)<\/strong><\/p>\n<p>Dans cette expression, <em>X_max<\/em> et <em>X_min<\/em> repr\u00e9sentent respectivement la plus grande et la plus petite moyenne observ\u00e9e parmi les <em>k<\/em> groupes, <em>MSE<\/em> (Mean Squared Error) d\u00e9signe le carr\u00e9 moyen des erreurs issu du tableau de l&rsquo;ANOVA (repr\u00e9sentant la variance r\u00e9siduelle intra-groupe), et <em>n<\/em> symbolise l&rsquo;effectif au sein de chaque groupe exp\u00e9rimental. La distribution th\u00e9orique de <em>q<\/em> est param\u00e9tr\u00e9e par deux valeurs fondamentales : le nombre total de moyennes compar\u00e9es <em>k<\/em> et les degr\u00e9s de libert\u00e9 associ\u00e9s \u00e0 la variance d&rsquo;erreur intra-groupe, not\u00e9s <em>df_residuelle<\/em> (qui \u00e9quivaut \u00e0 <em>N &#8211; k<\/em> dans un plan unifactoriel \u00e0 <em>N<\/em> observations totales).<\/p>\n<p>Historiquement, les chercheurs devaient consulter des tables statistiques imprim\u00e9es volumineuses pour d\u00e9terminer les quantiles critiques de <em>q<\/em> associ\u00e9s aux seuils alpha de 5 % ou 1 %. Dans l&rsquo;environnement informatique contemporain de Python, ces valeurs critiques et les probabilit\u00e9s cumul\u00e9es associ\u00e9es sont calcul\u00e9es de mani\u00e8re dynamique et avec une pr\u00e9cision num\u00e9rique extr\u00eame via des algorithmes d&rsquo;int\u00e9gration de fonctions de densit\u00e9 de probabilit\u00e9 multivari\u00e9es, impl\u00e9ment\u00e9s au sein des biblioth\u00e8ques de calcul scientifique. Au fur et \u00e0 mesure que la taille de l&rsquo;\u00e9chantillon global cro\u00eet vers l&rsquo;infini, la distribution de <em>q<\/em> converge asymptotiquement vers une forme stable, r\u00e9gul\u00e9e par les lois limites de la th\u00e9orie des valeurs extr\u00eames.<\/p>\n<h3>2.2 Formulation math\u00e9matique de la diff\u00e9rence critique<\/h3>\n<p>Pour \u00e9valuer si une paire arbitraire de moyennes <em>(X_i, X_j)<\/em> pr\u00e9sente une divergence statistiquement significative, le test de Tukey \u00e9tablit un seuil de coupure absolu, nomm\u00e9 la diff\u00e9rence minimale significative honn\u00eate (HSD). Deux groupes quelconques sont d\u00e9clar\u00e9s significativement distincts au seuil global alpha si et seulement si la valeur absolue de leur diff\u00e9rence de moyennes observ\u00e9e exc\u00e8de cette valeur critique HSD.<\/p>\n<p>Dans le cadre d&rsquo;un plan d&rsquo;exp\u00e9rience parfaitement \u00e9quilibr\u00e9 o\u00f9 chaque groupe exp\u00e9rimental poss\u00e8de rigoureusement le m\u00eame effectif <em>n<\/em>, l&rsquo;\u00e9quation d\u00e9terminant cette diff\u00e9rence critique s&rsquo;exprime comme suit :<\/p>\n<p><strong>HSD = q_(alpha, k, df_e) * racine(MSE \/ n)<\/strong><\/p>\n<p>Ici, <em>q_(alpha, k, df_e)<\/em> d\u00e9signe la valeur critique de l&rsquo;\u00e9tendue studentis\u00e9e au niveau de risque alpha pour <em>k<\/em> groupes et <em>df_e<\/em> degr\u00e9s de libert\u00e9 de l&rsquo;erreur r\u00e9siduelle. L&rsquo;int\u00e9gration directe de la <em>MSE<\/em> globale conf\u00e8re \u00e0 cette proc\u00e9dure une puissance d&rsquo;estimation sup\u00e9rieure \u00e0 celle de comparaisons directes par paires, car l&rsquo;\u00e9cart-type est estim\u00e9 \u00e0 partir de l&rsquo;int\u00e9gralit\u00e9 de l&rsquo;\u00e9chantillon exp\u00e9rimental, maximisant la pr\u00e9cision du d\u00e9nominateur.<\/p>\n<p>Lorsque les groupes pr\u00e9sentent des tailles d&rsquo;\u00e9chantillons in\u00e9gales par suite de contraintes de recrutement ou de d\u00e9perdition de sujets, la formulation originale de Tukey doit \u00eatre adapt\u00e9e sous peine de distorsion du niveau de risque nominal. Cette modification analytique est connue sous le nom d&rsquo;ajustement de Tukey-Kramer. Dans ce cas de figure, l&rsquo;erreur standard associ\u00e9e \u00e0 la paire sp\u00e9cifique de groupes <em>i<\/em> et <em>j<\/em> est recalcul\u00e9e en int\u00e9grant leurs effectifs respectifs <em>n_i<\/em> et <em>n_j<\/em> selon l&rsquo;\u00e9quation :<\/p>\n<p><strong>HSD_(i,j) = (q_(alpha, k, df_e) \/ racine(2)) * racine(MSE * ((1 \/ n_i) + (1 \/ n_j)))<\/strong><\/p>\n<p>Cette adaptation garantit que le test demeure rigoureusement conservateur ou exact, \u00e9vitant ainsi que des groupes de faible effectif n&rsquo;engendrent des conclusions biais\u00e9es en raison d&rsquo;une impr\u00e9cision locale de la variance.<\/p>\n<h3>2.3 Calcul des intervalles de confiance simultan\u00e9s<\/h3>\n<p>Au-del\u00e0 de la fourniture d&rsquo;une valeur p dichotomique conduisant au rejet ou au maintien de l&rsquo;hypoth\u00e8se nulle, le cadre th\u00e9orique de Tukey permet la construction d&rsquo;intervalles de confiance simultan\u00e9s pour l&rsquo;ensemble des contrastes de moyennes. Contrairement aux intervalles de confiance marginaux classiques qui garantissent un niveau de couverture de 95 % pour chaque param\u00e8tre pris individuellement, les intervalles de confiance conjoints de Tukey assurent que la totalit\u00e9 des intervalles calcul\u00e9s encadrent simultan\u00e9ment les v\u00e9ritables diff\u00e9rences de moyennes de la population avec une probabilit\u00e9 conjointe minimale de 1 &#8211; alpha (typiquement 95 %).<\/p>\n<p>Pour chaque couple de groupes <em>(i, j)<\/em>, les bornes inf\u00e9rieure et sup\u00e9rieure de l&rsquo;intervalle de confiance simultan\u00e9 \u00e0 95 % sont calcul\u00e9es par les relations math\u00e9matiques suivantes :<\/p>\n<p><strong>Borne_Inf\u00e9rieure = (X_i &#8211; X_j) &#8211; HSD_(i,j)<\/strong><\/p>\n<p><strong>Borne_Sup\u00e9rieure = (X_i &#8211; X_j) + HSD_(i,j)<\/strong><\/p>\n<p>Le crit\u00e8re d\u00e9cisionnel inf\u00e9rentiel \u00e9quivaut rigoureusement \u00e0 celui du test d&rsquo;hypoth\u00e8se : si la valeur z\u00e9ro est exclue de l&rsquo;intervalle de confiance (c&rsquo;est-\u00e0-dire si les deux bornes poss\u00e8dent le m\u00eame signe alg\u00e9brique, toutes deux strictement positives ou toutes deux strictement n\u00e9gatives), la diff\u00e9rence entre les deux moyennes est d\u00e9clar\u00e9e statistiquement significative au seuil alpha choisi.<\/p>\n<p>Dans la recherche contemporaine en psychologie et en sciences biom\u00e9dicales, l&rsquo;estimation par intervalle de confiance simultan\u00e9 est fortement recommand\u00e9e par les instances acad\u00e9miques par rapport \u00e0 la simple transmission de valeurs p. L&rsquo;intervalle de confiance quantifie avec pr\u00e9cision l&rsquo;ampleur de l&rsquo;effet, indique la direction de la disparit\u00e9, et documente le degr\u00e9 d&rsquo;incertitude m\u00e9trologique inh\u00e9rent \u00e0 l&rsquo;\u00e9chantillonnage, fournissant ainsi une assise bien plus solide pour juger de la pertinence clinique ou th\u00e9orique des effets observ\u00e9s.<\/p>\n<h2>3. Pr\u00e9requis statistiques et validation des hypoth\u00e8ses<\/h2>\n<h3>3.1 Ind\u00e9pendance des observations et structure de l&rsquo;\u00e9chantillonnage<\/h3>\n<p>L&rsquo;application valide du test HSD de Tukey et de l&rsquo;ANOVA sous-jacente est conditionn\u00e9e au respect scrupuleux de trois postulats statistiques fondamentaux. Le premier postulat, qui constitue la contrainte la plus imp\u00e9rative et la moins tol\u00e9rante aux violations, est l&rsquo;ind\u00e9pendance statistique des observations et des termes d&rsquo;erreur intra-groupes. Cela implique que la mesure recueillie aupr\u00e8s d&rsquo;un participant ne doit en aucune mani\u00e8re \u00eatre influenc\u00e9e, corr\u00e9l\u00e9e ou conditionn\u00e9e par les mesures obtenues aupr\u00e8s d&rsquo;un autre individu.<\/p>\n<p>Ce pr\u00e9requis concerne au premier chef le protocole exp\u00e9rimental et l&rsquo;architecture d&rsquo;\u00e9chantillonnage. En psychologie exp\u00e9rimentale, l&rsquo;assignation al\u00e9atoire des participants aux diff\u00e9rentes conditions inter-sujets (between-subjects design) constitue la garantie m\u00e9thodologique de base assurant l&rsquo;absence de biais de confusion syst\u00e9matiques. Si des participants sont test\u00e9s par dyades interactives, si les donn\u00e9es sont collect\u00e9es au sein de grappes naturelles (comme des salles de classe ou des services hospitaliers) sans mod\u00e9lisation multiniveau, ou si l&rsquo;on tente d&rsquo;appliquer le test de Tukey \u00e0 un plan \u00e0 mesures r\u00e9p\u00e9t\u00e9es intra-sujets sans correction sp\u00e9cifique, la d\u00e9pendance s\u00e9rielle qui en r\u00e9sulte invalide compl\u00e8tement le d\u00e9nominateur de la statistique de test, provoquant une augmentation incontr\u00f4l\u00e9e des erreurs de type I.<\/p>\n<p>L&rsquo;\u00e9valuation de l&rsquo;ind\u00e9pendance ne s&rsquo;effectue pas au moyen d&rsquo;un test statistique unique sur les donn\u00e9es brutes, mais repose sur l&rsquo;audit m\u00e9thodologique du protocole exp\u00e9rimental et sur l&rsquo;analyse de l&rsquo;absence d&rsquo;autocorr\u00e9lation au niveau des r\u00e9sidus d&rsquo;\u00e9chantillonnage, par exemple \u00e0 l&rsquo;aide du test de Durbin-Watson si un ordre temporel d&rsquo;acquisition des donn\u00e9es existe. Tout regroupement non mod\u00e9lis\u00e9 exige de basculer vers des mod\u00e8les mixtes \u00e0 effets al\u00e9atoires plut\u00f4t que de persister dans une ANOVA conventionnelle suivie d&rsquo;un test de Tukey classique.<\/p>\n<h3>3.2 Normalit\u00e9 de la distribution des variables d\u00e9pendantes<\/h3>\n<p>Le second postulat repose sur l&rsquo;hypoth\u00e8se de normalit\u00e9 : les scores de la variable d\u00e9pendante au sein de chaque population parente, ou de mani\u00e8re \u00e9quivalente les r\u00e9sidus de l&rsquo;analyse lin\u00e9aire globale, doivent suivre une distribution gaussienne. Cette condition d\u00e9coule directement du fait que la distribution de l&rsquo;\u00e9tendue studentis\u00e9e est math\u00e9matiquement d\u00e9riv\u00e9e d&rsquo;\u00e9chantillons issus de populations normales.<\/p>\n<p>Pour valider ce pr\u00e9requis en pratique, il est n\u00e9cessaire de combiner des d\u00e9marches de diagnostic formel et des inspections visuelles approfondies. Sur le plan formel, le <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Shapiro%E2%80%93Wilk_test\">test de Shapiro-Wilk<\/a> est particuli\u00e8rement recommand\u00e9 pour les \u00e9chantillons de petite \u00e0 moyenne taille (typiquement <em>N &lt; 50<\/em> par modalit\u00e9), tandis que le test de D&rsquo;Agostino-Pearson ou de Kolmogorov-Smirnov (avec correction de Lilliefors) peut \u00eatre mobilis\u00e9 sur des effectifs plus denses. N\u00e9anmoins, les tests d&rsquo;hypoth\u00e8se portant sur la normalit\u00e9 pr\u00e9sentent le d\u00e9faut d&rsquo;\u00eatre sous-puissants avec de petits \u00e9chantillons et hypersensibles \u00e0 des d\u00e9viations insignifiantes lorsque la taille de l&rsquo;\u00e9chantillon devient tr\u00e8s importante.<\/p>\n<p>C&rsquo;est pourquoi le diagnostic graphique via des diagrammes quantile-quantile (Q-Q plots) et l&rsquo;examen des courbes de densit\u00e9 adoss\u00e9es aux histogrammes de distribution constituent le standard recommand\u00e9. Sur un trac\u00e9 Q-Q, l&rsquo;alignement des quantiles empiriques sur la droite th\u00e9orique mat\u00e9rialise l&rsquo;ad\u00e9quation au mod\u00e8le gaussien. Heureusement, en vertu du th\u00e9or\u00e8me central limite, le test de Tukey pr\u00e9sente une robustesse reconnue face aux entorses mod\u00e9r\u00e9es \u00e0 la normalit\u00e9 d\u00e8s lors que les tailles d&rsquo;\u00e9chantillons sont d&rsquo;au moins 20 \u00e0 30 observations par groupe et que les distributions ne pr\u00e9sentent pas d&rsquo;asym\u00e9trie extr\u00eame ni de queues de distribution excessivement lourdes induites par des valeurs aberrantes non corrig\u00e9es.<\/p>\n<h3>3.3 Homog\u00e9n\u00e9it\u00e9 des variances (Homosc\u00e9dasticit\u00e9)<\/h3>\n<p>Le troisi\u00e8me pr\u00e9requis central est l&rsquo;homog\u00e9n\u00e9it\u00e9 des variances, ou homosc\u00e9dasticit\u00e9, qui stipule que la variance de la variable d\u00e9pendante doit demeurer \u00e9quivalente \u00e0 travers l&rsquo;ensemble des groupes exp\u00e9rimentaux consid\u00e9r\u00e9s. Cette assomption est structurelle, car le calcul du terme de variance d&rsquo;erreur <em>MSE<\/em> dans l&rsquo;ANOVA agr\u00e8ge les sommes de carr\u00e9s de l&rsquo;ensemble des groupes pour obtenir une estimation unique et mutualis\u00e9e de la variance populationnelle. Si les variances intrins\u00e8ques des diff\u00e9rents groupes divergent de mani\u00e8re substantielle, cette mutualisation perd toute validit\u00e9 statistique.<\/p>\n<p>La validation formelle de l&rsquo;homosc\u00e9dasticit\u00e9 s&rsquo;effectue usuellement au moyen du test de Levene, qui pr\u00e9sente l&rsquo;avantage notable d&rsquo;\u00eatre robuste aux l\u00e9g\u00e8res d\u00e9viations de la normalit\u00e9 lorsqu&rsquo;il est calcul\u00e9 par rapport \u00e0 la m\u00e9diane (parfois nomm\u00e9 test de Brown-Forsythe). Le test de Bartlett offre une alternative tr\u00e8s puissante, mais s&rsquo;av\u00e8re excessivement sensible aux violations de la normalit\u00e9 gaussienne, augmentant ind\u00fbment le risque de rejeter \u00e0 tort l&rsquo;hypoth\u00e8se d&rsquo;homog\u00e9n\u00e9it\u00e9 si les donn\u00e9es sont leptokurtiques.<\/p>\n<p>Les cons\u00e9quences d&rsquo;une rupture d&rsquo;homosc\u00e9dasticit\u00e9 sont particuli\u00e8rement d\u00e9l\u00e9t\u00e8res lorsque les effectifs des groupes sont asym\u00e9triques. Si un groupe de petit effectif pr\u00e9sente une variance r\u00e9siduelle consid\u00e9rablement plus \u00e9lev\u00e9e que les autres, le test de Tukey standard deviendra dramatiquement lib\u00e9ral, multipliant les faux positifs bien au-del\u00e0 du seuil de 5 %. \u00c0 l&rsquo;inverse, si le groupe de grand effectif poss\u00e8de la plus forte variance, le test deviendra artificiellement conservateur, d\u00e9truisant la puissance statistique de l&rsquo;\u00e9tude. Lorsque l&rsquo;homosc\u00e9dasticit\u00e9 est formellement rejet\u00e9e, le chercheur doit renoncer au test de Tukey classique et recourir \u00e0 des proc\u00e9dures post-hoc robustes adapt\u00e9es, au premier rang desquelles figure le test de Games-Howell.<\/p>\n<h2>4. Configuration de l&rsquo;environnement Python et biblioth\u00e8ques scientifiques<\/h2>\n<h3>4.1 S\u00e9lection et installation des paquets indispensables<\/h3>\n<p>Pour d\u00e9ployer un pipeline de calcul statistique reproductible et rigoureux sous Python, un ensemble coordonn\u00e9 de biblioth\u00e8ques sp\u00e9cialis\u00e9es dans le calcul scientifique et l&rsquo;analyse de donn\u00e9es doit \u00eatre mis en place. L&rsquo;\u00e9cosyst\u00e8me open source offre des solutions de haut niveau, articul\u00e9es autour d&rsquo;un noyau fondamental compos\u00e9 de quatre paquets incontournables : Pandas, NumPy, SciPy et Statsmodels.<\/p>\n<p>La biblioth\u00e8que <a rel=\"noopener noreferrer\" href=\"https:\/\/pandas.pydata.org\/\">Pandas<\/a> est la r\u00e9f\u00e9rence universelle pour l&rsquo;ingestion, le nettoyage, le remodelage et l&rsquo;interrogation de matrices de donn\u00e9es structur\u00e9es sous forme de DataFrames. Elle permet de segmenter les \u00e9chantillons exp\u00e9rimentaux selon les facteurs manipul\u00e9s avec une grande souplesse syntaxique. De son c\u00f4t\u00e9, <a rel=\"noopener noreferrer\" href=\"https:\/\/numpy.org\/\">NumPy<\/a> assure la gestion efficace des tableaux multidimensionnels et fournit les op\u00e9rateurs math\u00e9matiques vectoris\u00e9s sous-tendant les calculs d&rsquo;alg\u00e8bre lin\u00e9aire et d&rsquo;agr\u00e9gation statistique.<\/p>\n<p>Le volet proprement inf\u00e9rentiel s&rsquo;appuie sur le sous-module <code>scipy.stats<\/code> de la suite SciPy, qui rassemble les distributions de probabilit\u00e9 continues et discr\u00e8tes ainsi que les tests d&rsquo;hypoth\u00e8se param\u00e9triques et non param\u00e9triques de r\u00e9f\u00e9rence. Enfin, le paquet <a rel=\"noopener noreferrer\" href=\"https:\/\/www.statsmodels.org\/\">Statsmodels<\/a> constitue le moteur d&rsquo;estimation statistique central pour la r\u00e9gression, l&rsquo;ANOVA et les proc\u00e9dures de tests post-hoc avanc\u00e9es. Il renferme l&rsquo;impl\u00e9mentation algorithmique officielle du test de Tukey ainsi que les routines de restitution tabulaire et graphique d\u00e9di\u00e9es. L&rsquo;installation standard de ces composants s&rsquo;effectue via le gestionnaire de paquets de Python par la commande terminale standardis\u00e9e :<\/p>\n<p><code>pip install numpy pandas scipy statsmodels matplotlib seaborn<\/code><\/p>\n<h3>4.2 Gestion de l&rsquo;environnement virtuel et reproductibilit\u00e9<\/h3>\n<p>Dans le contexte de la recherche universitaire et de la publication scientifique \u00e9valu\u00e9e par les pairs, la reproductibilit\u00e9 computationnelle est devenue un crit\u00e8re de qualit\u00e9 fondamental. Les mises \u00e0 jour successives des biblioth\u00e8ques logicielles peuvent occasionner des modifications de comportement par d\u00e9faut, des d\u00e9pr\u00e9ciations d&rsquo;arguments ou d&rsquo;infimes variations num\u00e9riques dues \u00e0 l&rsquo;optimisation des algorithmes. Il est par cons\u00e9quent imp\u00e9ratif d&rsquo;isoler l&rsquo;environnement d&rsquo;ex\u00e9cution propre au projet.<\/p>\n<p>La cr\u00e9ation d&rsquo;un environnement virtuel d\u00e9di\u00e9 peut \u00eatre concr\u00e9tis\u00e9e au moyen du module standard <code>venv<\/code> ou via le gestionnaire d&rsquo;environnement Conda. L&rsquo;instanciation sous terminal s&rsquo;op\u00e8re via les instructions suivantes :<\/p>\n<p><code>python -m venv env_statistiques<br \/>source env_statistiques\/bin\/activate  # Sur Unix\/macOS<br \/>env_statistiquesScriptsactivate     # Sur Windows<\/code><\/p>\n<p>Une fois l&rsquo;environnement activ\u00e9 et les paquets install\u00e9s, la transcription int\u00e9grale de l&rsquo;arbre des d\u00e9pendances dans un fichier de sp\u00e9cification <code>requirements.txt<\/code> garantit qu&rsquo;un r\u00e9viseur ou un collaborateur pourra r\u00e9pliquer \u00e0 l&rsquo;identique l&rsquo;environnement logiciel du chercheur. Pour les analyses interactives men\u00e9es au sein de calepins Jupyter (Jupyter Notebooks), il est recommand\u00e9 de fixer d\u00e8s l&rsquo;entame du script une graine al\u00e9atoire globale (random seed) via l&rsquo;appel \u00e0 <code>numpy.random.seed(valeur)<\/code> ou via les nouveaux g\u00e9n\u00e9rateurs d&rsquo;\u00e9tats de NumPy. Cette pr\u00e9caution assure que toute \u00e9tape de simulation, d&rsquo;\u00e9chantillonnage al\u00e9atoire ou de partitionnement de donn\u00e9es produira des r\u00e9sultats strictement identiques lors de chaque ex\u00e9cution ult\u00e9rieure.<\/p>\n<h3>4.3 Importation modulaire des fonctions cibles<\/h3>\n<p>L&rsquo;\u00e9criture d&rsquo;un code source propre et conforme aux standards de l&rsquo;ing\u00e9nierie logicielle (PEP 8) pr\u00e9conise d&rsquo;importer pr\u00e9cis\u00e9ment les sous-modules et fonctions requis, plut\u00f4t que d&rsquo;ex\u00e9cuter des importations globales g\u00e9n\u00e9rant des collisions d&rsquo;espaces de noms. La s\u00e9quence d&rsquo;importation standardis\u00e9e pour mener une ANOVA suivie d&rsquo;un test HSD de Tukey en Python s&rsquo;articule comme suit au d\u00e9but des scripts d&rsquo;analyse :<\/p>\n<p><code>import numpy as np<br \/>import pandas as pd<br \/>import scipy.stats as stats<br \/>import statsmodels.api as sm<br \/>from statsmodels.formula.api import ols<br \/>from statsmodels.stats.multicomp import pairwise_tukeyhsd, MultiComparison<br \/>import matplotlib.pyplot as plt<br \/>import seaborn as sns<\/code><\/p>\n<p>Cette structuration modulaire appelle directement la fonction <code>f_oneway<\/code> de SciPy pour l&rsquo;ANOVA omnibus de base, ou la combinaison d&rsquo;<code>ols<\/code> et d&rsquo;<code>anova_lm<\/code> de Statsmodels pour une mod\u00e9lisation lin\u00e9aire plus exhaustive. La fonction <code>pairwise_tukeyhsd<\/code> est le composant principal d\u00e9di\u00e9 \u00e0 la r\u00e9alisation des comparaisons post-hoc. Les biblioth\u00e8ques Matplotlib et Seaborn viennent clore cette suite d&rsquo;outils pour permettre la composition graphique personnalis\u00e9e des estimations d&rsquo;intervalles et des distributions empiriques. Il est de bonne pratique de v\u00e9rifier imm\u00e9diatement le chargement des versions logicielles via <code>statsmodels.__version__<\/code> pour s&rsquo;assurer de la conformit\u00e9 de l&rsquo;API avec les exemples de documentation r\u00e9cents.<\/p>\n<h2>5. Pr\u00e9paration et structuration des donn\u00e9es exp\u00e9rimentales<\/h2>\n<h3>5.1 Formatage des donn\u00e9es : format long vs format large<\/h3>\n<p>La structuration architecturale des jeux de donn\u00e9es conditionne directement la r\u00e9ussite de l&rsquo;ex\u00e9cution des routines statistiques sous Statsmodels. En analyse de donn\u00e9es, on distingue traditionnellement la disposition en format large (wide format) de la disposition en format long (long format, ou forme normale unifi\u00e9e \u00ab tidy data \u00bb). Dans une disposition large, chaque modalit\u00e9 du facteur exp\u00e9rimental occupe une colonne distincte au sein de la feuille de calcul, et chaque ligne rassemble les mesures simultan\u00e9es de plusieurs sujets ou des conditions diff\u00e9rentes assign\u00e9es au m\u00eame niveau d&rsquo;index.<\/p>\n<p>Les biblioth\u00e8ques modernes de mod\u00e9lisation en Python, et particuli\u00e8rement Statsmodels pour les fonctions post-hoc, exigent strictement une organisation au format long. Dans cette topologie, chaque ligne du DataFrame repr\u00e9sente une observation unique et individuelle. Le tableau doit imp\u00e9rativement comporter au moins deux colonnes d\u00e9di\u00e9es : une colonne contenant la valeur num\u00e9rique continue mesur\u00e9e (la variable d\u00e9pendante ou crit\u00e8re de r\u00e9ponse) et une colonne contenant l&rsquo;\u00e9tiquette cat\u00e9gorielle sp\u00e9cifiant la condition d&rsquo;appartenance (la variable ind\u00e9pendante ou facteur contr\u00f4l\u00e9).<\/p>\n<p>Si les donn\u00e9es initiales sont consign\u00e9es au format large, la fonction <code>pandas.melt()<\/code> permet une conversion vectorielle imm\u00e9diate et sans perte d&rsquo;information. \u00c0 titre d&rsquo;illustration, l&rsquo;instruction suivante r\u00e9organise une table de donn\u00e9es exp\u00e9rimentales :<\/p>\n<p><code>df_long = pd.melt(df_wide, value_vars=['Controle', 'Therapie_A', 'Therapie_B'], var_name='Groupe', value_name='Score')<\/code><\/p>\n<p>Il demeure enfin primordial de s&rsquo;assurer que la colonne cat\u00e9gorielle est formellement d\u00e9clar\u00e9e comme un type cha\u00eene de caract\u00e8res (<code>str<\/code>) ou id\u00e9alement comme une variable de type cat\u00e9gorie Pandas (<code>df['Groupe'] = df['Groupe'].astype('category')<\/code>), ce qui pr\u00e9vient toute tentative de Statsmodels d&rsquo;interpr\u00e9ter des identifiants num\u00e9riques de groupes comme une r\u00e9gression lin\u00e9aire continue.<\/p>\n<h3>5.2 Nettoyage des donn\u00e9es et traitement des valeurs manquantes<\/h3>\n<p>Avant d&rsquo;engager toute inf\u00e9rence param\u00e9trique, une phase de contr\u00f4le qualit\u00e9 des donn\u00e9es exp\u00e9rimentales s&rsquo;impose afin d&rsquo;identifier les anomalies d&rsquo;acquisition, les valeurs manquantes et les observations aberrantes. La pr\u00e9sence de valeurs manquantes (identifi\u00e9es par <code>NaN<\/code> ou <code>None<\/code>) peut tronquer les degr\u00e9s de libert\u00e9 et fausser l&rsquo;assignation indiciaire au sein des matrices de contrastes. L&rsquo;inspection pr\u00e9liminaire s&rsquo;op\u00e8re via <code>df.isnull().sum()<\/code>, qui quantifie la d\u00e9perdition observationnelle au sein de chaque variable.<\/p>\n<p>En psychologie exp\u00e9rimentale, l&rsquo;exclusion d&rsquo;un cas pr\u00e9sentant une valeur manquante sur la variable d\u00e9pendante d&rsquo;un plan inter-sujets est couramment trait\u00e9e par suppression par liste compl\u00e8te (listwise deletion) via la m\u00e9thode <code>df.dropna(subset=['Score'])<\/code>, sous r\u00e9serve que le m\u00e9canisme de perte soit al\u00e9atoire (Missing Completely at Random &#8211; MCAR). Concernant les valeurs aberrantes (outliers), une identification pr\u00e9coce \u00e0 l&rsquo;aide de l&rsquo;\u00e9cart interquartile (IQR) ou des scores z standardis\u00e9s (seuil absolu sup\u00e9rieur \u00e0 3 \u00e9carts-types) permet d&rsquo;isoler les points potentiellement issus d&rsquo;erreurs de mesure ou d&rsquo;un manque d&rsquo;engagement du sujet dans la t\u00e2che cognitive.<\/p>\n<p>Pour illustrer concr\u00e8tement la d\u00e9marche tout au long de cet article, nous pouvons g\u00e9n\u00e9rer par programmation un jeu de donn\u00e9es synth\u00e9tique mimant une recherche en psychologie clinique cognitive, o\u00f9 l&rsquo;on compare les scores d&rsquo;attention s\u00e9lective (variable continue) chez des individus r\u00e9partis al\u00e9atoirement au sein de trois conditions d&rsquo;entra\u00eenement : Contr\u00f4le, Entra\u00eenement Standard, et Entra\u00eenement Intensif. Ce jeu de donn\u00e9es \u00e9quilibr\u00e9 ou mod\u00e9r\u00e9ment d\u00e9s\u00e9quilibr\u00e9 servira d&rsquo;assise aux d\u00e9monstrations analytiques ult\u00e9rieures :<\/p>\n<p><code>np.random.seed(42)<br \/>groupe_ctrl = np.random.normal(loc=50, scale=8, size=30)<br \/>groupe_std = np.random.normal(loc=55, scale=8, size=32)<br \/>groupe_int = np.random.normal(loc=62, scale=8, size=28)<\/p>\n<p>df_attention = pd.DataFrame({<br \/>&nbsp;&nbsp;&nbsp;&nbsp;'Condition': ['Controle']*30 + ['Standard']*32 + ['Intensif']*28,<br \/>&nbsp;&nbsp;&nbsp;&nbsp;'Score': np.concatenate([groupe_ctrl, groupe_std, groupe_int])<br \/>})<\/code><\/p>\n<h3>5.3 Exploration descriptive pr\u00e9alable<\/h3>\n<p>L&rsquo;exploration descriptive ne repr\u00e9sente pas un simple pr\u00e9ambule protocolaire ; elle forme le socle indispensable sur lequel s&rsquo;ancre l&rsquo;interpr\u00e9tation future des tests d&rsquo;hypoth\u00e8se. Elle permet de d\u00e9tecter visuellement et num\u00e9riquement les tendances d&rsquo;asym\u00e9trie, d&rsquo;appr\u00e9cier la magnitude brute des \u00e9carts de moyenne et d&rsquo;\u00e9valuer la balance exp\u00e9rimentale entre les effectifs respectifs des groupes.<\/p>\n<p>La m\u00e9thode <code>groupby()<\/code> de Pandas combin\u00e9e \u00e0 l&rsquo;agr\u00e9gateur <code>agg()<\/code> fournit une synth\u00e8se num\u00e9rique rigoureuse, extrayant pour chaque condition le volume d&rsquo;\u00e9chantillon, la moyenne, l&rsquo;\u00e9cart-type, la m\u00e9diane et l&rsquo;intervalle interquartile :<\/p>\n<p><code>stats_descriptives = df_attention.groupby('Condition')['Score'].agg(<br \/>&nbsp;&nbsp;&nbsp;&nbsp;N='count',<br \/>&nbsp;&nbsp;&nbsp;&nbsp;Moyenne='mean',<br \/>&nbsp;&nbsp;&nbsp;&nbsp;Ecart_Type='std',<br \/>&nbsp;&nbsp;&nbsp;&nbsp;Mediane='median',<br \/>&nbsp;&nbsp;&nbsp;&nbsp;IQR=lambda x: x.quantile(0.75) - x.quantile(0.25)<br \/>).reset_index()<br \/>print(stats_descriptives)<\/code><\/p>\n<p>Cette analyse tabulaire doit \u00eatre syst\u00e9matiquement compl\u00e9t\u00e9e par un rendu graphique exploratoire. L&#8217;emploi conjoint de diagrammes en bo\u00eete \u00e0 moustaches (boxplots) et de diagrammes de dispersion jitteris\u00e9s (stripcharts) permet d&rsquo;appr\u00e9hender la morphologie de chaque distribution tout en visualisant individuellement chaque point de mesure. Cela permet de v\u00e9rifier d&rsquo;un coup d&rsquo;\u0153il l&rsquo;absence d&rsquo;asym\u00e9trie s\u00e9v\u00e8re et de s&rsquo;assurer de l&rsquo;homog\u00e9n\u00e9it\u00e9 apparente des dispersions spatiales de points d&rsquo;une bo\u00eete \u00e0 l&rsquo;autre.<\/p>\n<h2>6. Ex\u00e9cution de l&rsquo;ANOVA pr\u00e9alable en Python<\/h2>\n<h3>6.1 Impl\u00e9mentation du test omnibus avec Scipy<\/h3>\n<p>Sur le plan m\u00e9thodologique classique, le test HSD de Tukey est subordonn\u00e9 \u00e0 la d\u00e9monstration pr\u00e9alable d&rsquo;un effet omnibus statistiquement significatif au niveau de l&rsquo;ANOVA globale (principe de la proc\u00e9dure prot\u00e9g\u00e9e de Fisher-Tukey). Si l&rsquo;ANOVA ne parvient pas \u00e0 rejeter l&rsquo;hypoth\u00e8se nulle d&rsquo;\u00e9galit\u00e9 globale des moyennes, la d\u00e9marche inf\u00e9rentielle s&rsquo;arr\u00eate usuellement l\u00e0 afin de ne pas encourager la recherche opportuniste de contrastes isol\u00e9s (data dredging). La mise en \u0153uvre la plus directe de cette \u00e9tape pr\u00e9liminaire s&rsquo;effectue via le module <code>scipy.stats<\/code>.<\/p>\n<p>L&rsquo;ex\u00e9cution de la fonction <code>f_oneway<\/code> requiert le passage en param\u00e8tres d&rsquo;arguments positionnels correspondant aux s\u00e9ries de donn\u00e9es num\u00e9riques de chaque groupe exp\u00e9rimental :<\/p>\n<p><code>ctrl = df_attention[df_attention['Condition'] == 'Controle']['Score']<br \/>std = df_attention[df_attention['Condition'] == 'Standard']['Score']<br \/>intensif = df_attention[df_attention['Condition'] == 'Intensif']['Score']<\/p>\n<p>f_stat, p_val = stats.f_oneway(ctrl, std, intensif)<br \/>print(f\"Statistique F = {f_stat:.4f}, p-valeur = {p_val:.4e}\")<\/code><\/p>\n<p>La fonction retourne la statistique de rapport de variance <em>F<\/em> de Fisher-Snedecor et sa p-valeur asymptotique associ\u00e9e. Si cette p-valeur se situe strictement sous le seuil d&rsquo;erreur alpha conventionnel (alpha = 0,05), l&rsquo;investigateur conclut formellement \u00e0 l&rsquo;existence d&rsquo;une h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 significative parmi les conditions de traitement. Cette confirmation empirique l\u00e9gitime la transition imm\u00e9diate vers l&rsquo;investigation post-hoc au moyen du test de Tukey.<\/p>\n<h3>6.2 Mod\u00e9lisation lin\u00e9aire \u00e9quivalente via Statsmodels (OLS)<\/h3>\n<p>Bien que l&rsquo;appel \u00e0 <code>scipy.stats.f_oneway<\/code> soit commode, l&rsquo;approche pr\u00e9conis\u00e9e pour une recherche approfondie repose sur la mod\u00e9lisation lin\u00e9aire via la r\u00e9gression par les moindres carr\u00e9s ordinaires (Ordinary Least Squares &#8211; OLS) sous la biblioth\u00e8que Statsmodels. Dans la th\u00e9orie statistique unifi\u00e9e, l&rsquo;analyse de variance n&rsquo;est qu&rsquo;un cas particulier du mod\u00e8le lin\u00e9aire g\u00e9n\u00e9ral. Utiliser cette formulation permet d&rsquo;obtenir un tableau d&rsquo;ANOVA complet, int\u00e9grant les sommes de carr\u00e9s, les carr\u00e9s moyens des erreurs et les degr\u00e9s de libert\u00e9 requis pour les calculs d&rsquo;amplitude d&rsquo;effet.<\/p>\n<p>La syntaxe de mod\u00e9lisation exploite le formalisme des formules popularis\u00e9 par le langage R via la fonction <code>ols<\/code> du sous-module <code>statsmodels.formula.api<\/code> :<\/p>\n<p><code>modele = ols('Score ~ C(Condition)', data=df_attention).fit()<br \/>tableau_anova = sm.stats.anova_lm(modele, typ=2)<br \/>print(tableau_anova)<\/code><\/p>\n<p>L&rsquo;utilisation de la notation <code>C(Condition)<\/code> sp\u00e9cifie sans ambigu\u00eft\u00e9 \u00e0 Statsmodels que la colonne sous-jacente doit \u00eatre encod\u00e9e sous forme de variables indicatrices (contraste de traitement cat\u00e9goriel). L&rsquo;argument <code>typ=2<\/code> indique le recours aux sommes des carr\u00e9s de Type II, recommand\u00e9es en pr\u00e9sence d&rsquo;\u00e9chantillons d\u00e9s\u00e9quilibr\u00e9s sans interaction factorielle crois\u00e9e. Ce tableau de sortie expose imm\u00e9diatement la valeur de la <em>MSE<\/em> (carr\u00e9 moyen des r\u00e9sidus figurant sur la ligne <code>Residual<\/code>), valeur qui sera inject\u00e9e au d\u00e9nominateur de la formule de diff\u00e9rence critique de Tukey.<\/p>\n<h3>6.3 Calcul de la taille d&rsquo;effet omnibus (\u00c9ta-carr\u00e9 et Om\u00e9ga-carr\u00e9)<\/h3>\n<p>L&rsquo;\u00e9valuation exclusive d&rsquo;une p-valeur issue de l&rsquo;ANOVA omnibus s&rsquo;av\u00e8re insuffisante pour mesurer la pertinence substantielle d&rsquo;un ph\u00e9nom\u00e8ne scientifique. Une p-valeur hautement significative peut masquer un effet d&rsquo;une amplitude minime d\u00e8s lors que la taille de l&rsquo;\u00e9chantillon global <em>N<\/em> est massive. Les normes m\u00e9thodologiques de publication scientifique exigent le calcul et la d\u00e9claration syst\u00e9matiques de la taille d&rsquo;effet (effect size).<\/p>\n<p>La m\u00e9trique la plus fr\u00e9quemment rapport\u00e9e est l&rsquo;<a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Effect_size#Eta-squared_(eta_2)\">\u00c9ta-carr\u00e9 (eta_squared, not\u00e9 &eta;&sup2;)<\/a>, qui repr\u00e9sente la proportion de la variance totale de la variable d\u00e9pendante attribuable au facteur manipul\u00e9. Sa formulation s&rsquo;exprime par le ratio :<\/p>\n<p><strong>eta_squared = SS_effet \/ SS_total<\/strong><\/p>\n<p>Toutefois, l&rsquo;\u00c9ta-carr\u00e9 est un estimateur biais\u00e9 qui tend \u00e0 surestimer l&rsquo;amplitude r\u00e9elle de la relation au sein de la population g\u00e9n\u00e9rale, en particulier lorsque les \u00e9chantillons sont modestes. Pour corriger ce biais d&rsquo;\u00e9chantillonnage, on pr\u00e9conise le calcul de l&rsquo;Om\u00e9ga-carr\u00e9 (&omega;&sup2;), un estimateur moins biais\u00e9 qui int\u00e8gre la variance d&rsquo;erreur r\u00e9siduelle :<\/p>\n<p><strong>omega_squared = (SS_effet &#8211; (df_effet * MSE)) \/ (SS_total + MSE)<\/strong><\/p>\n<p>Le calcul automatis\u00e9 de ces deux m\u00e9triques s&rsquo;impl\u00e9mente en Python par extraction des valeurs issues du tableau d&rsquo;ANOVA g\u00e9n\u00e9r\u00e9 pr\u00e9c\u00e9demment :<\/p>\n<p><code>ss_effet = tableau_anova['sum_sq'].iloc[0]<br \/>ss_residuelle = tableau_anova['sum_sq'].iloc[1]<br \/>ss_total = ss_effet + ss_residuelle<br \/>df_effet = tableau_anova['df'].iloc[0]<br \/>mse = tableau_anova['mean_sq'].iloc[1]<\/p>\n<p>eta_2 = ss_effet \/ ss_total<br \/>omega_2 = (ss_effet - (df_effet * mse)) \/ (ss_total + mse)<br \/>print(f\"Eta-carr\u00e9 = {eta_2:.3f}, Om\u00e9ga-carr\u00e9 = {omega_2:.3f}\")<\/code><\/p>\n<p>Conform\u00e9ment aux conventions \u00e9tablies par Jacob Cohen dans le champ des sciences comportementales, un coefficient de 0,01 correspond \u00e0 un effet de faible ampleur, 0,06 signale un effet moyen, et toute valeur \u00e9gale ou sup\u00e9rieure \u00e0 0,14 traduit un effet de forte magnitude exp\u00e9rimentale.<\/p>\n<h2>7. Mise en \u0153uvre du test de Tukey avec pairwise_tukeyhsd<\/h2>\n<h3>7.1 Param\u00e9trage d\u00e9taill\u00e9 de la fonction pairwise_tukeyhsd<\/h3>\n<p>La m\u00e9thode canonique pour ex\u00e9cuter le test HSD de Tukey sous Python r\u00e9side dans la fonction <code>pairwise_tukeyhsd<\/code>, directement accessible depuis le sous-module <code>statsmodels.stats.multicomp<\/code>. Cette fonction impl\u00e9mente de mani\u00e8re totalement transparente aussi bien l&rsquo;algorithme HSD original pour effectifs \u00e9quilibr\u00e9s que l&rsquo;ajustement formel de Tukey-Kramer en pr\u00e9sence d&rsquo;\u00e9chantillons asym\u00e9triques.<\/p>\n<p>La signature de la fonction comporte trois param\u00e8tres op\u00e9ratoires principaux :<\/p>\n<ul>\n<li><strong>endog :<\/strong> D\u00e9signe le vecteur num\u00e9rique unidimensionnel (s\u00e9rie Pandas ou tableau NumPy \u00e0 1 dimension) correspondant \u00e0 la variable de r\u00e9ponse continue (la variable d\u00e9pendante observ\u00e9e).<\/li>\n<li><strong>groups :<\/strong> Sp\u00e9cifie le vecteur des \u00e9tiquettes d&rsquo;appartenance cat\u00e9gorielle (facteur contr\u00f4l\u00e9), dont la longueur doit correspondre rigoureusement \u00e0 celle du vecteur <code>endog<\/code>.<\/li>\n<li><strong>alpha :<\/strong> Fixe le taux d&rsquo;erreur de premi\u00e8re esp\u00e8ce cumul\u00e9 pour l&rsquo;ensemble de la famille de comparaisons (FWER). Par d\u00e9faut, cet argument est configur\u00e9 \u00e0 <code>alpha=0.05<\/code>, garantissant un niveau de confiance conjoint bilat\u00e9ral de 95 %.<\/li>\n<\/ul>\n<p>La fonction s&rsquo;adapte automatiquement \u00e0 la pr\u00e9sence d&rsquo;h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 dans les tailles des groupes sans n\u00e9cessiter d&rsquo;intervention manuelle de l&rsquo;utilisateur, en recalculant l&rsquo;erreur type standardis\u00e9e selon l&rsquo;approche d&rsquo;ajustement de Tukey-Kramer.<\/p>\n<h3>7.2 Syntaxe de base et ex\u00e9cution sur donn\u00e9es simul\u00e9es<\/h3>\n<p>L&rsquo;ex\u00e9cution de la proc\u00e9dure s&rsquo;op\u00e8re en une ligne de code direct en transmettant les colonnes extraites de notre DataFrame de travail. L&rsquo;ex\u00e9cution g\u00e9n\u00e8re un objet structur\u00e9 d&rsquo;inf\u00e9rence statistique baptis\u00e9 <code>TukeyHSDResults<\/code> :<\/p>\n<p><code>resultats_tukey = pairwise_tukeyhsd(<br \/>&nbsp;&nbsp;&nbsp;&nbsp;endog=df_attention['Score'],<br \/>&nbsp;&nbsp;&nbsp;&nbsp;groups=df_attention['Condition'],<br \/>&nbsp;&nbsp;&nbsp;&nbsp;alpha=0.05<br \/>)<br \/>print(resultats_tukey)<\/code><\/p>\n<p>L&rsquo;instruction <code>print(resultats_tukey)<\/code> invoque la m\u00e9thode de restitution format\u00e9e de la classe, qui affiche dans le terminal ou le carnet de notes une table textuelle align\u00e9e recensant l&rsquo;int\u00e9gralit\u00e9 des contrastes test\u00e9s. Cette restitution synth\u00e9tise les noms des groupes confront\u00e9s, les diff\u00e9rences de moyennes arithm\u00e9tiques observ\u00e9es, les p-valeurs rigoureusement corrig\u00e9es, les bornes de l&rsquo;intervalle de confiance simultan\u00e9 \u00e0 95 %, ainsi qu&rsquo;une variable bool\u00e9enne indiquant le verdict de rejet statistique.<\/p>\n<p>Pour des fins d&rsquo;automatisation, d&rsquo;archivage ou d&rsquo;exportation vers des formats tabulaires externes, il est ais\u00e9 de convertir l&rsquo;objet interne en un DataFrame Pandas propre via l&rsquo;instruction :<\/p>\n<p><code>df_tukey = pd.DataFrame(<br \/>&nbsp;&nbsp;&nbsp;&nbsp;data=resultats_tukey._results_table.data[1:],<br \/>&nbsp;&nbsp;&nbsp;&nbsp;columns=resultats_tukey._results_table.data[0]<br \/>)<br \/>print(df_tukey.head())<\/code><\/p>\n<h3>7.3 Variante alternative avec la classe MultiComparison<\/h3>\n<p>Outre l&rsquo;appel fonctionnel direct \u00e0 <code>pairwise_tukeyhsd<\/code>, la biblioth\u00e8que Statsmodels propose une approche orient\u00e9e objet par le biais de la classe <code>MultiComparison<\/code>, situ\u00e9e dans le m\u00eame sous-module <code>statsmodels.stats.multicomp<\/code>. Cette classe offre un cadre unifi\u00e9 permettant d&rsquo;instancier un environnement de comparaisons multiples sur un jeu de donn\u00e9es, puis d&rsquo;ex\u00e9cuter cons\u00e9cutivement diff\u00e9rents types de tests post-hoc sans devoir red\u00e9clarer les vecteurs d&rsquo;entr\u00e9e.<\/p>\n<p>La mise en \u0153uvre de cette alternative s&rsquo;articule comme suit :<\/p>\n<p><code>comparateur = MultiComparison(df_attention['Score'], df_attention['Condition'])<br \/>tukey_oo = comparateur.tukeyhsd(alpha=0.05)<br \/>print(tukey_oo.summary())<\/code><\/p>\n<p>Sur le plan computationnel, l&rsquo;appel \u00e0 la m\u00e9thode <code>comparateur.tukeyhsd()<\/code> est strictement \u00e9quivalent \u00e0 la fonction proc\u00e9durale et retourne exactement le m\u00eame objet <code>TukeyHSDResults<\/code>. L&rsquo;avantage d&rsquo;instancier un objet <code>MultiComparison<\/code> r\u00e9side dans la possibilit\u00e9 de mobiliser d&rsquo;autres m\u00e9thodes de comparaisons multiples int\u00e9gr\u00e9es, comme les comparaisons par paires bas\u00e9es sur le test t de Student avec diff\u00e9rentes corrections du risque alpha (par exemple la correction de Bonferroni, de Sidak ou de Benjamini-Hochberg) via l&rsquo;appel \u00e0 <code>comparateur.allpairtest(stats.ttest_ind, method='bonferroni')<\/code>, permettant de comparer directement les r\u00e9sultats obtenus par diff\u00e9rentes approches sur le m\u00eame ensemble de donn\u00e9es.<\/p>\n<h2>8. Interpr\u00e9tation exhaustive des r\u00e9sultats statistiques de sortie<\/h2>\n<h3>8.1 D\u00e9cryptage colonne par colonne de la table TukeyHSD<\/h3>\n<p>L&rsquo;interpr\u00e9tation rigoureuse de la table d&rsquo;inf\u00e9rence g\u00e9n\u00e9r\u00e9e par le test de Tukey exige une compr\u00e9hension pr\u00e9cise de chacune des m\u00e9triques pr\u00e9sent\u00e9es dans le tableau r\u00e9capitulatif. La structure standard de sortie s&rsquo;organise selon six colonnes fondamentales :<\/p>\n<ul>\n<li><strong>group1 et group2 :<\/strong> Indiquent les deux modalit\u00e9s exp\u00e9rimentales sp\u00e9cifiques mises en regard pour la comparaison par paire consid\u00e9r\u00e9e. L&rsquo;ordre des facteurs est d\u00e9termin\u00e9 de mani\u00e8re lexicographique par d\u00e9faut.<\/li>\n<li><strong>meandiff :<\/strong> Repr\u00e9sente la diff\u00e9rence de moyenne empirique brute entre les deux groupes, calcul\u00e9e strictement comme la moyenne arithm\u00e9tique de <em>group2<\/em> diminu\u00e9e de la moyenne arithm\u00e9tique de <em>group1<\/em> (soit <em>Moyenne(group2) &#8211; Moyenne(group1)<\/em>). Un signe positif indique que le groupe 2 obtient une performance sup\u00e9rieure au groupe 1, tandis qu&rsquo;un signe n\u00e9gatif indique l&rsquo;inverse.<\/li>\n<li><strong>p-adj :<\/strong> Fournit la p-valeur unilat\u00e9rale ou bilat\u00e9rale ajust\u00e9e pour l&rsquo;ensemble de la famille de comparaisons (FWER). Cette probabilit\u00e9 a \u00e9t\u00e9 recalcul\u00e9e d&rsquo;apr\u00e8s la fonction de r\u00e9partition de l&rsquo;\u00e9tendue studentis\u00e9e. Elle repr\u00e9sente la probabilit\u00e9 exacte d&rsquo;observer une divergence de moyenne au moins aussi marqu\u00e9e que celle enregistr\u00e9e sous l&rsquo;hypoth\u00e8se nulle d&rsquo;\u00e9galit\u00e9 parfaite de l&rsquo;ensemble des <em>k<\/em> conditions.<\/li>\n<li><strong>lower et upper :<\/strong> D\u00e9finissent respectivement la borne inf\u00e9rieure et la borne sup\u00e9rieure de l&rsquo;intervalle de confiance simultan\u00e9 \u00e0 (1 &#8211; alpha) % (soit 95 % par d\u00e9faut) associ\u00e9 \u00e0 la diff\u00e9rence moyenne r\u00e9elle de la population.<\/li>\n<li><strong>reject :<\/strong> Colonne logique bool\u00e9enne (<code>True<\/code> ou <code>False<\/code>). La valeur <code>True<\/code> signale sans \u00e9quivoque que la p-valeur ajust\u00e9e est strictement inf\u00e9rieure au seuil alpha configur\u00e9, ce qui conduit formellement au rejet de l&rsquo;hypoth\u00e8se nulle d&rsquo;\u00e9galit\u00e9 pour cette paire de conditions sp\u00e9cifique.<\/li>\n<\/ul>\n<p>Si la colonne <code>reject<\/code> affiche <code>True<\/code> pour la confrontation entre la modalit\u00e9 Contr\u00f4le et la modalit\u00e9 Entra\u00eenement Intensif, l&rsquo;exp\u00e9rimentateur conclut formellement \u00e0 une distinction statistiquement significative entre ces deux approches, avec un risque contr\u00f4l\u00e9 \u00e0 5 % \u00e0 l&rsquo;\u00e9chelle de l&rsquo;\u00e9tude globale.<\/p>\n<h3>8.2 \u00c9valuation clinique et psychologique des intervalles de confiance<\/h3>\n<p>L&rsquo;analyse des intervalles de confiance simultan\u00e9s constitue une \u00e9tape analytique de premier plan, trop souvent \u00e9clips\u00e9e au profit du simple constat binaire de la colonne <code>reject<\/code>. Les bornes <code>lower<\/code> et <code>upper<\/code> d\u00e9limitent la zone de plausibilit\u00e9 de l&rsquo;\u00e9cart moyen r\u00e9el au sein de la population g\u00e9n\u00e9rale avec un niveau de confiance conjoint de 95 %.<\/p>\n<p>L&rsquo;\u00e9valuation inf\u00e9rentielle directe d\u00e9coule de la position du z\u00e9ro par rapport \u00e0 cet intervalle. Si le z\u00e9ro math\u00e9matique est contenu \u00e0 l&rsquo;int\u00e9rieur de l&rsquo;espace d\u00e9fini par les deux bornes (c&rsquo;est-\u00e0-dire si <code>lower &lt; 0<\/code> et <code>upper &gt; 0<\/code>), il est impossible d&rsquo;exclure que la v\u00e9ritable diff\u00e9rence entre les populations sous-jacentes soit nulle ; la diff\u00e9rence est alors d\u00e9clar\u00e9e non significative. R\u00e9ciproquement, si les deux bornes poss\u00e8dent le m\u00eame signe arithm\u00e9tique (toutes deux positives ou toutes deux n\u00e9gatives), l&rsquo;\u00e9cart z\u00e9ro est exclu, attestant d&rsquo;une diff\u00e9rence statistiquement significative.<\/p>\n<p>Sur le plan de la pratique clinique et de la recherche comportementale, l&rsquo;amplitude g\u00e9om\u00e9trique de l&rsquo;intervalle (la distance absolue s\u00e9parant <code>upper<\/code> de <code>lower<\/code>) renseigne sur la pr\u00e9cision m\u00e9trologique de l&rsquo;\u00e9tude. Un intervalle tr\u00e8s large, bien qu&rsquo;excluant le z\u00e9ro, signale une estimation instable imputable \u00e0 des effectifs restreints ou \u00e0 une trop grande variabilit\u00e9 r\u00e9siduelle intra-groupe. De surcro\u00eet, cela permet d&rsquo;\u00e9valuer la pertinence clinique : si la borne inf\u00e9rieure d&rsquo;un traitement th\u00e9rapeutique actif par rapport \u00e0 un placebo se situe \u00e0 un niveau sup\u00e9rieur au seuil minimal de diff\u00e9rence cliniquement pertinente (Minimal Clinically Important Difference &#8211; MCID), l&rsquo;efficacit\u00e9 de l&rsquo;intervention est solidement \u00e9tay\u00e9e au-del\u00e0 de la simple significativit\u00e9 statistique abstraite.<\/p>\n<h3>8.3 Calcul de la taille d&rsquo;effet par paire (d de Cohen corrig\u00e9)<\/h3>\n<p>Une limitation fonctionnelle de la table de sortie standard de <code>pairwise_tukeyhsd<\/code> r\u00e9side dans l&rsquo;absence d&rsquo;indication standardis\u00e9e de la magnitude d&rsquo;effet pour chaque contraste sp\u00e9cifique. Dans le cadre de l&rsquo;ANOVA, la m\u00e9trique de choix pour quantifier l&rsquo;\u00e9cart s\u00e9parant deux groupes particuliers est le <a s_d\" rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Effect_size#Cohen\">d de Cohen<\/a> adapt\u00e9 aux contrastes post-hoc.<\/p>\n<p>Dans ce contexte pr\u00e9cis, le d\u00e9nominateur de standardisation ne doit pas \u00eatre fond\u00e9 sur le regroupement exclusif des variances des deux groupes isol\u00e9s consid\u00e9r\u00e9s, mais doit imp\u00e9rativement mobiliser la racine carr\u00e9e du carr\u00e9 moyen des erreurs r\u00e9siduelles de l&rsquo;ANOVA globale (<code>racine(MSE)<\/code>). Cette formulation est statistiquement plus rigoureuse, car elle exploite la totalit\u00e9 des degr\u00e9s de libert\u00e9 du protocole pour estimer la variabilit\u00e9 intra-groupe naturelle. La formule s&rsquo;\u00e9tablit ainsi :<\/p>\n<p><strong>d_posthoc = (Moyenne_i &#8211; Moyenne_j) \/ racine(MSE)<\/strong><\/p>\n<p>Afin d&rsquo;int\u00e9grer automatiquement ce param\u00e8tre standardis\u00e9 au tableau r\u00e9capitulatif sous Python, un script personnalis\u00e9 peut \u00eatre ex\u00e9cut\u00e9 :<\/p>\n<p><code>racine_mse = np.sqrt(mse)<br \/>tukey_df = pd.DataFrame(data=resultats_tukey._results_table.data[1:], columns=resultats_tukey._results_table.data[0])<br \/>tukey_df['cohen_d'] = tukey_df['meandiff'] \/ racine_mse<br \/>print(tukey_df[['group1', 'group2', 'meandiff', 'p-adj', 'reject', 'cohen_d']])<\/code><\/p>\n<p>Cette adjonction programmatique permet d&rsquo;associer directement \u00e0 chaque confrontation son positionnement selon les crit\u00e8res usuels de Cohen : effet faible (|d| &approx; 0,2), moyen (|d| &approx; 0,5) ou fort (|d| &ge; 0,8), facilitant grandement la synth\u00e8se interpr\u00e9tative dans les rapports de recherche.<\/p>\n<h2>9. Visualisation graphique avanc\u00e9e des comparaisons de Tukey<\/h2>\n<h3>9.1 G\u00e9n\u00e9ration du graphique officiel via plot_simultaneous<\/h3>\n<p>L&rsquo;objet <code>TukeyHSDResults<\/code> dispose d&rsquo;une m\u00e9thode graphique native int\u00e9gr\u00e9e, d\u00e9sign\u00e9e sous le nom de <code>plot_simultaneous()<\/code>. Cette routine produit un graphique d&rsquo;intervalles bas\u00e9 sur l&rsquo;infrastructure de Matplotlib, visualisant chaque groupe exp\u00e9rimental sous forme de point central entour\u00e9 d&rsquo;une ligne d&rsquo;incertitude horizontale.<\/p>\n<p>La syntaxe de base s&rsquo;appelle directement depuis l&rsquo;instance de r\u00e9sultats :<\/p>\n<p><code>fig, ax = plt.subplots(figsize=(8, 5))<br \/>resultats_tukey.plot_simultaneous(comparison_name='Controle', ax=ax, figsize=(8, 5))<br \/>ax.set_title(\"Comparaisons simultan\u00e9es de Tukey (HSD)\", fontsize=13, pad=10)<br \/>ax.set_xlabel(\"Score d'attention s\u00e9lective\", fontsize=11)<br \/>ax.set_ylabel(\"Condition exp\u00e9rimentale\", fontsize=11)<br \/>plt.tight_layout()<br \/>plt.show()<\/code><\/p>\n<p>L&rsquo;int\u00e9r\u00eat didactique de ce graphique r\u00e9side dans la manipulation du param\u00e8tre optionnel <code>comparison_name<\/code>. Lorsqu&rsquo;un groupe de r\u00e9f\u00e9rence est express\u00e9ment cibl\u00e9 (par exemple la modalit\u00e9 <code>'Controle'<\/code>), la fonction trace deux lignes verticales directrices mat\u00e9rialisant l&rsquo;\u00e9tendue de l&rsquo;intervalle d&rsquo;estimation de cette condition sp\u00e9cifique. L&rsquo;observateur peut imm\u00e9diatement inf\u00e9rer l&rsquo;absence de diff\u00e9rence significative pour tout groupe tiers dont l&rsquo;intervalle horizontal chevauche l&rsquo;espace d\u00e9limit\u00e9 par ces verticales. Malgr\u00e9 sa commodit\u00e9, cette visualisation trace des intervalles de moyennes d\u00e9centr\u00e9s et non directement les distributions des diff\u00e9rences de contrastes par paires, ce qui motive souvent l&rsquo;\u00e9laboration de graphiques personnalis\u00e9s plus pr\u00e9cis.<\/p>\n<h3>9.2 Cr\u00e9ation de graphiques personnalis\u00e9s avec Seaborn et Matplotlib<\/h3>\n<p>Pour r\u00e9pondre aux normes exigeantes des publications de revues scientifiques, il est pr\u00e9f\u00e9rable de construire un trac\u00e9 en for\u00eat (forest plot) repr\u00e9sentant directement les contrastes de moyennes et leurs intervalles de confiance simultan\u00e9s r\u00e9els issus de la table de Tukey. Cette repr\u00e9sentation illustre sans ambigu\u00eft\u00e9 les estimations ponctuelles et leur marge d&rsquo;incertitude conjointe \u00e0 95 %.<\/p>\n<p>La mise en \u0153uvre script\u00e9e de cette visualisation sous Matplotlib se structure comme suit :<\/p>\n<p><code>plt.style.use('seaborn-v0_8-whitegrid' if 'seaborn-v0_8-whitegrid' in plt.style.available else 'default')<br \/>fig, ax = plt.subplots(figsize=(9, 4.5))<\/p>\n<p>paires = [f\"{g1} vs {g2}\" for g1, g2 in zip(tukey_df['group1'], tukey_df['group2'])]<br \/>meandiffs = tukey_df['meandiff']<br \/>err_inf = meandiffs - tukey_df['lower']<br \/>err_sup = tukey_df['upper'] - meandiffs<\/p>\n<p>ax.errorbar(meandiffs, paires, xerr=[err_inf, err_sup], fmt='o', color='#1f77b4',<br \/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ecolor='#1f77b4', elinewidth=2, capsize=5, capthick=1.5, markersize=7)<br \/>ax.axvline(x=0, color='crimson', linestyle='--', linewidth=1.5, label='Diff\u00e9rence nulle (H0)')<\/p>\n<p>ax.set_title(\"Intervalles de confiance simultan\u00e9s \u00e0 95 % (Test de Tukey)\", fontsize=13, weight='bold')<br \/>ax.set_xlabel(\"Diff\u00e9rence de moyenne observ\u00e9e (Points)\", fontsize=11)<br \/>ax.legend(frameon=True, loc='best')<br \/>plt.tight_layout()<br \/>plt.show()<\/code><\/p>\n<p>Sur ce trac\u00e9 analytique, toute comparaison dont la barre d&rsquo;erreur horizontale traverse la ligne verticale pointill\u00e9e rouge (seuil de diff\u00e9rence nulle) correspond formellement \u00e0 un contraste non significatif (<code>reject = False<\/code>). \u00c0 l&rsquo;inverse, toute barre d&rsquo;erreur positionn\u00e9e enti\u00e8rement d&rsquo;un seul c\u00f4t\u00e9 de cette ligne d&rsquo;ancrage isole un contraste significatif, offrant une lecture visuelle directe de la configuration exp\u00e9rimentale.<\/p>\n<h3>9.3 Visualisation enrichie des donn\u00e9es brutes avec annotations de significativit\u00e9<\/h3>\n<p>Une tendance majeure en visualisation des donn\u00e9es biom\u00e9dicales et comportementales consiste \u00e0 ne pas dissimuler la variabilit\u00e9 empirique sous de simples barres d&rsquo;erreur, mais \u00e0 juxtaposer la distribution compl\u00e8te des donn\u00e9es brutes, les indicateurs de tendance centrale et les indications formelles de significativit\u00e9 post-hoc au moyen d&rsquo;\u00e9triers comparatifs (brackets).<\/p>\n<p>Pour concr\u00e9tiser cette exigence, la biblioth\u00e8que <a rel=\"noopener noreferrer\" href=\"https:\/\/github.com\/trevismd\/statannotations\">statannotations<\/a> s&rsquo;interface nativement avec Seaborn. Elle automatise le trac\u00e9 des accolades et des symboles de significativit\u00e9 (tels que des ast\u00e9risques ou les mentions \u00ab ns \u00bb) directement au-dessus des repr\u00e9sentations graphiques :<\/p>\n<p><code>from statannotations.Annotator import Annotator<\/p>\n<p>fig, ax = plt.subplots(figsize=(8, 6))<br \/>sns.boxplot(x='Condition', y='Score', data=df_attention, palette='Blues', ax=ax, width=0.5, boxprops=dict(alpha=0.7))<br \/>sns.stripplot(x='Condition', y='Score', data=df_attention, color='black', alpha=0.6, jitter=0.2, size=5, ax=ax)<\/p>\n<p>paires_test = [('Controle', 'Standard'), ('Controle', 'Intensif'), ('Standard', 'Intensif')]<br \/>p_valeurs = tukey_df['p-adj'].tolist()<\/p>\n<p>annotateur = Annotator(ax, paires_test, data=df_attention, x='Condition', y='Score')<br \/>annotateur.set_pvalues(p_valeurs)<br \/>annotateur.annotate()<\/p>\n<p>ax.set_title(\"Scores d'attention et contrastes de Tukey\", fontsize=13, weight='bold')<br \/>plt.tight_layout()<br \/>plt.savefig(\"resultats_attention.tiff\", dpi=300, format='tiff')<br \/>plt.show()<\/code><\/p>\n<p>Cette approche graphique regroupe l&rsquo;exhaustivit\u00e9 des strates d&rsquo;information au sein d&rsquo;une seule figure pr\u00eate pour soumission : dispersion individuelle r\u00e9elle, dispersion interquartile, asym\u00e9trie de distribution et conclusions de significativit\u00e9 statistique ajust\u00e9e issues du test de Tukey.<\/p>\n<h2>10. Adaptations face aux violations d&rsquo;hypoth\u00e8ses et tests alternatifs<\/h2>\n<h3>10.1 Proc\u00e9dure de Tukey-Kramer en pr\u00e9sence d&rsquo;\u00e9chantillons d\u00e9s\u00e9quilibr\u00e9s<\/h3>\n<p>L&rsquo;asym\u00e9trie des effectifs constitue une r\u00e9alit\u00e9 r\u00e9currente dans les protocoles de recherche en psychologie, r\u00e9sultant d&rsquo;abandons en cours d&rsquo;intervention, de non-conformit\u00e9 aux crit\u00e8res d&rsquo;inclusion ou de difficult\u00e9s d&rsquo;\u00e9chantillonnage de populations cliniques sp\u00e9cifiques. Comme expos\u00e9 pr\u00e9c\u00e9demment, la fonction <code>pairwise_tukeyhsd<\/code> de Statsmodels int\u00e8gre intrins\u00e8quement la formule de Tukey-Kramer et ne requiert pas de bascule vers une fonction diff\u00e9rente.<\/p>\n<p>Cependant, le chercheur doit \u00eatre pleinement conscient des cons\u00e9quences de ce d\u00e9s\u00e9quilibre sur le plan m\u00e9thodologique. L&rsquo;erreur standard associ\u00e9e \u00e0 chaque contraste d\u00e9pend \u00e9troitement de la moyenne harmonique des tailles des deux groupes mis en pr\u00e9sence. Par cons\u00e9quent, les comparaisons impliquant des groupes \u00e0 effectifs r\u00e9duits disposeront d&rsquo;intervalles de confiance simultan\u00e9s plus larges et d&rsquo;une puissance statistique plus faible que celles impliquant de larges cohortes.<\/p>\n<p>Il convient donc de veiller, lors de la planification exp\u00e9rimentale, \u00e0 maintenir les effectifs aussi homog\u00e8nes que possible pour ne pas compromettre la puissance d&rsquo;investigation sur certains contrastes cl\u00e9s. Le chercheur peut v\u00e9rifier manuellement la sensibilit\u00e9 des seuils critiques en examinant si l&rsquo;exclusion de cas aberrants ou le r\u00e9\u00e9quilibrage par tirage al\u00e9atoire ne modifie pas les conclusions statistiques majeures.<\/p>\n<h3>10.2 Violation de l&rsquo;homosc\u00e9dasticit\u00e9 : le test de Games-Howell<\/h3>\n<p>Lorsque le test de Levene rejette l&rsquo;hypoth\u00e8se d&rsquo;\u00e9galit\u00e9 des variances intra-groupes (par exemple si <em>p &lt; 0,05<\/em>), le postulat d&rsquo;homosc\u00e9dasticit\u00e9 s&rsquo;effondre. Poursuivre avec le test HSD de Tukey standard devient alors m\u00e9thodologiquement erron\u00e9, en particulier si les tailles d&rsquo;\u00e9chantillons divergent d&rsquo;un groupe \u00e0 l&rsquo;autre. Le taux d&rsquo;erreur de type I r\u00e9el peut alors atteindre des proportions inacceptables.<\/p>\n<p>Dans cette configuration critique, l&rsquo;alternative param\u00e9trique standard est le <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Games%E2%80%93Howell_test\">test post-hoc de Games-Howell<\/a>. Ce test repose \u00e9galement sur la distribution de l&rsquo;\u00e9tendue studentis\u00e9e, mais il n&rsquo;utilise pas la variance r\u00e9siduelle mutualis\u00e9e <em>MSE<\/em> de l&rsquo;ANOVA. En lieu et place, il calcule une erreur type sp\u00e9cifique \u00e0 chaque paire en mobilisant leurs variances empiriques distinctes, et ajuste les degr\u00e9s de libert\u00e9 via la formule de Welch-Satterthwaite (\u00e0 l&rsquo;instar du test t de Welch).<\/p>\n<p>Bien que Statsmodels ne propose pas d&rsquo;impl\u00e9mentation native directe de Games-Howell dans son API centrale, la biblioth\u00e8que open source sp\u00e9cialis\u00e9e <a rel=\"noopener noreferrer\" href=\"https:\/\/pingouin-stats.org\/\">Pingouin<\/a> offre cette proc\u00e9dure au sein d&rsquo;une fonction d\u00e9di\u00e9e :<\/p>\n<p><code>import pingouin as pg<\/p>\n<p># Ex\u00e9cution du test de Games-Howell via Pingouin<br \/>resultats_gh = pg.pairwise_gameshowell(data=df_attention, dv='Score', between='Condition')<br \/>print(resultats_gh[['A', 'B', 'mean(A)', 'mean(B)', 'diff', 'se', 'T', 'pval', 'hedges']])<\/code><\/p>\n<p>Sur un jeu de donn\u00e9es marqu\u00e9 par une forte h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 des variances, la comparaison empirique entre le tableau de Tukey et celui de Games-Howell montre fr\u00e9quemment que des contrastes faussement d\u00e9clar\u00e9s significatifs par Tukey cessent de l&rsquo;\u00eatre sous Games-Howell, r\u00e9tablissant ainsi un contr\u00f4le effectif sur le taux de faux positifs.<\/p>\n<h3>10.3 Violation de la normalit\u00e9 : alternatives non param\u00e9triques<\/h3>\n<p>Lorsque la distribution de la variable d\u00e9pendante au sein des groupes pr\u00e9sente une d\u00e9viation prononc\u00e9e vis-\u00e0-vis du mod\u00e8le gaussien (asym\u00e9trie majeure, donn\u00e9es ordinales discr\u00e8tes ou effectifs trop faibles pour invoquer le th\u00e9or\u00e8me central limite), les bases de l&rsquo;ANOVA param\u00e9trique et du test de Tukey deviennent caduques. L&rsquo;architecture d&rsquo;analyse doit alors \u00eatre transpos\u00e9e dans le domaine de la statistique non param\u00e9trique bas\u00e9e sur les rangs.<\/p>\n<p>L&rsquo;alternative globale \u00e0 l&rsquo;ANOVA est le test de Kruskal-Wallis (impl\u00e9ment\u00e9 via <code>scipy.stats.kruskal<\/code>). En cas de rejet de l&rsquo;hypoth\u00e8se nulle globale \u00e0 l&rsquo;issue de ce test omnibus, les comparaisons post-hoc doivent imp\u00e9rativement mobiliser des proc\u00e9dures adapt\u00e9es aux distributions libres de rangs. Les deux m\u00e9thodes de r\u00e9f\u00e9rence sont :<\/p>\n<ul>\n<li><strong>Le test post-hoc de Dunn :<\/strong> Qui compare la diff\u00e9rence relative entre les moyennes des rangs de chaque condition, avec un ajustement du risque par famille d&rsquo;erreurs (par exemple via la correction de Bonferroni ou l&rsquo;algorithme s\u00e9quentiel de Holm-Bonferroni). Il est disponible dans le module <code>scikit-posthocs<\/code> (fonction <code>posthoc_dunn<\/code>).<\/li>\n<li><strong>Le test de Conover-Iman :<\/strong> Alternative plus puissante que le test de Dunn, calculant des statistiques bas\u00e9es sur les rangs r\u00e9siduels apr\u00e8s un test de Kruskal-Wallis.<\/li>\n<\/ul>\n<p>La mise en \u0153uvre Python de cette cha\u00eene non param\u00e9trique s&rsquo;illustre succinctement via :<\/p>\n<p><code>import scikit_posthocs as sp<\/p>\n<p># Test omnibus de Kruskal-Wallis<br \/>kruskal_stat, kruskal_p = stats.kruskal(ctrl, std, intensif)<br \/>print(f\"Kruskal-Wallis stat = {kruskal_stat:.3f}, p-valeur = {kruskal_p:.4e}\")<\/p>\n<p># Post-hoc de Dunn avec ajustement de Holm<br \/>if kruskal_p &lt; 0.05:<br \/>&nbsp;&nbsp;&nbsp;&nbsp;dunn_posthoc = sp.posthoc_dunn(df_attention, val_col='Score', group_col='Condition', p_adjust='holm')<br \/>&nbsp;&nbsp;&nbsp;&nbsp;print(dunn_posthoc)<\/code><\/p>\n<h2>11. \u00c9tude de cas pratique : efficacit\u00e9 compar\u00e9e de protocoles psychoth\u00e9rapeutiques<\/h2>\n<h3>11.1 D\u00e9finition du design exp\u00e9rimental et g\u00e9n\u00e9ration du sc\u00e9nario clinique<\/h3>\n<p>Pour ancrer l&rsquo;ensemble de ces pr\u00e9ceptes th\u00e9oriques dans une perspective appliqu\u00e9e, consid\u00e9rons une \u00e9tude clinique fictive en psychoth\u00e9rapie \u00e9valuant l&rsquo;efficacit\u00e9 compar\u00e9e de diff\u00e9rents protocoles de r\u00e9duction de l&rsquo;anxi\u00e9t\u00e9 g\u00e9n\u00e9ralis\u00e9e. L&rsquo;\u00e9chantillon comprend 90 patients diagnostiqu\u00e9s avec un trouble anxieux, r\u00e9partis de mani\u00e8re al\u00e9atoire au sein de trois conditions th\u00e9rapeutiques distinctes (30 participants par modalit\u00e9) :<\/p>\n<ul>\n<li><strong>Condition 1 (Attente) :<\/strong> Groupe contr\u00f4le plac\u00e9 sur liste d&rsquo;attente avec suivi minimal r\u00e9gulier.<\/li>\n<li><strong>Condition 2 (TCC) :<\/strong> Th\u00e9rapie Cognitive et Comportementale standardis\u00e9e sur 12 s\u00e9ances.<\/li>\n<li><strong>Condition 3 (ACT) :<\/strong> Th\u00e9rapie d&rsquo;Acceptation et d&rsquo;Engagement (Acceptance and Commitment Therapy) sur 12 s\u00e9ances.<\/li>\n<\/ul>\n<p>La variable d\u00e9pendante d&rsquo;int\u00e9r\u00eat est le score d&rsquo;anxi\u00e9t\u00e9 mesur\u00e9 \u00e0 l&rsquo;aide de l&rsquo;inventaire d&rsquo;anxi\u00e9t\u00e9 de Beck (BAI) \u00e0 l&rsquo;issue des 12 semaines de traitement. Un score plus bas refl\u00e8te un meilleur \u00e9tat psychologique. Le code ci-dessous simule ce jeu de donn\u00e9es clinique avec des param\u00e8tres repr\u00e9sentatifs :<\/p>\n<p><code>np.random.seed(101)<br \/>attente = np.random.normal(loc=28.5, scale=5.2, size=30)<br \/>tcc = np.random.normal(loc=19.2, scale=4.8, size=30)<br \/>act = np.random.normal(loc=17.8, scale=5.0, size=30)<\/p>\n<p>df_clinique = pd.DataFrame({<br \/>&nbsp;&nbsp;&nbsp;&nbsp;'Protocole': ['Attente']*30 + ['TCC']*30 + ['ACT']*30,<br \/>&nbsp;&nbsp;&nbsp;&nbsp;'Score_BAI': np.concatenate([attente, tcc, act])<br \/>})<\/code><\/p>\n<p>La v\u00e9rification des pr\u00e9requis r\u00e9v\u00e8le que le test de Shapiro-Wilk appliqu\u00e9 sur les r\u00e9sidus du mod\u00e8le lin\u00e9aire confirme la normalit\u00e9 (<em>p = 0,72<\/em>), tandis que le test de Levene centr\u00e9 sur la m\u00e9diane confirme l&rsquo;homosc\u00e9dasticit\u00e9 parfaite des variances entre les trois groupes (<em>p = 0,84<\/em>). Les conditions m\u00e9thodologiques requises pour d\u00e9ployer l&rsquo;ANOVA et le test HSD de Tukey sont donc pleinement satisfaites.<\/p>\n<h3>11.2 Pipeline complet d&rsquo;analyse de donn\u00e9es en code Python<\/h3>\n<p>Le pipeline analytique complet s&rsquo;articule de mani\u00e8re unifi\u00e9e, depuis l&rsquo;ajustement du mod\u00e8le lin\u00e9aire jusqu&rsquo;\u00e0 l&rsquo;extraction des contrastes de Tukey enrichis des tailles d&rsquo;effet standardis\u00e9es :<\/p>\n<p><code># 1. Mod\u00e9lisation ANOVA par OLS<br \/>modele_clinique = ols('Score_BAI ~ C(Protocole)', data=df_clinique).fit()<br \/>anova_table = sm.stats.anova_lm(modele_clinique, typ=2)<\/p>\n<p># Extraction des param\u00e8tres cl\u00e9s<br \/>f_val = anova_table.loc['C(Protocole)', 'F']<br \/>p_val = anova_table.loc['C(Protocole)', 'PR(&gt;F)']<br \/>df_entre = anova_table.loc['C(Protocole)', 'df']<br \/>df_erreur = anova_table.loc['Residual', 'df']<br \/>mse_clinique = anova_table.loc['Residual', 'mean_sq']<\/p>\n<p># 2. Ex\u00e9cution du test de Tukey<br \/>tukey_clinique = pairwise_tukeyhsd(endog=df_clinique['Score_BAI'], groups=df_clinique['Protocole'], alpha=0.05)<\/p>\n<p># 3. Extraction structur\u00e9e sous forme de DataFrame Pandas<br \/>df_res = pd.DataFrame(data=tukey_clinique._results_table.data[1:], columns=tukey_clinique._results_table.data[0])<br \/>df_res['cohen_d'] = df_res['meandiff'] \/ np.sqrt(mse_clinique)<\/p>\n<p>print(\"=== TABLEAU R\u00c9CAPITULATIF DES CONTRASTES DE TUKEY ===\")<br \/>print(df_res.to_string(index=False))<\/code><\/p>\n<p>L&rsquo;ex\u00e9cution de ce script met en \u00e9vidence un effet omnibus massif (<em>F(2, 87) = 43,12, p &lt; 0,001<\/em>). La table post-hoc r\u00e9v\u00e8le que les deux th\u00e9rapies actives (TCC et ACT) se distinguent de mani\u00e8re hautement significative du groupe contr\u00f4le sur liste d&rsquo;attente (<em>p-adj &lt; 0,001<\/em> pour les deux comparaisons), avec des tailles d&rsquo;effet standardis\u00e9es d de Cohen sup\u00e9rieures \u00e0 1,7 en valeur absolue, t\u00e9moignant d&rsquo;une efficacit\u00e9 th\u00e9rapeutique substantielle.<\/p>\n<p>En revanche, la confrontation directe entre la TCC et l&rsquo;ACT d\u00e9livre une diff\u00e9rence moyenne observ\u00e9e de seulement 1,4 point, assortie d&rsquo;une p-valeur ajust\u00e9e de <em>p-adj = 0,48<\/em> et d&rsquo;un intervalle de confiance simultan\u00e9 \u00e0 95 % s&rsquo;\u00e9tendant de -1,7 \u00e0 +4,5 points, englobant donc la valeur z\u00e9ro. L&rsquo;hypoth\u00e8se nulle d&rsquo;\u00e9quivalence d&rsquo;efficacit\u00e9 clinique entre ces deux modalit\u00e9s th\u00e9rapeutiques actives ne peut par cons\u00e9quent \u00eatre rejet\u00e9e sur la base de cet \u00e9chantillon.<\/p>\n<h3>11.3 Synth\u00e8se et interpr\u00e9tation des r\u00e9sultats au niveau psychologique<\/h3>\n<p>Sur le plan de l&rsquo;interpr\u00e9tation psychologique et clinique, cette analyse fournit des conclusions d&rsquo;une grande clart\u00e9. Tout d&rsquo;abord, l&rsquo;engagement dans un protocole psychoth\u00e9rapeutique structur\u00e9 (qu&rsquo;il rel\u00e8ve de la composante comportementale classique ou des approches d&rsquo;acceptation de troisi\u00e8me vague) produit un b\u00e9n\u00e9fice th\u00e9rapeutique massif comparativement \u00e0 l&rsquo;\u00e9volution naturelle sur liste d&rsquo;attente. L&rsquo;ampleur des tailles d&rsquo;effet observ\u00e9es d\u00e9passe largement le seuil requis pour une signification clinique concr\u00e8te.<\/p>\n<p>En second lieu, l&rsquo;absence de diff\u00e9rence statistiquement significative entre la TCC et l&rsquo;ACT \u00e9taye l&rsquo;hypoth\u00e8se des facteurs communs souvent document\u00e9e dans la recherche sur les psychoth\u00e9rapies, ou sugg\u00e8re que les deux approches atteignent une r\u00e9duction comparable de l&rsquo;anxi\u00e9t\u00e9 symptomatique par des m\u00e9canismes d&rsquo;action cognitifs distincts mais d&rsquo;efficience \u00e9quivalente. L&rsquo;intervalle de confiance permet d&rsquo;affirmer avec 95 % de certitude que, si une diff\u00e9rence existe dans la population entre la TCC et l&rsquo;ACT pour ce profil de patients, son amplitude n&rsquo;exc\u00e8de pas 4,5 points sur l&rsquo;\u00e9chelle de Beck, ce qui se situe en de\u00e7\u00e0 du seuil usuel de r\u00e9activit\u00e9 clinique perceptible.<\/p>\n<p>Les limites inh\u00e9rentes \u00e0 cette \u00e9tude simul\u00e9e doivent n\u00e9anmoins \u00eatre soulign\u00e9es : l&rsquo;absence d&rsquo;\u00e9valuation de suivi \u00e0 moyen et long terme (\u00e0 6 mois ou 12 mois) ne permet pas de statuer sur le maintien diff\u00e9rentiel des gains th\u00e9rapeutiques. De plus, la nature inter-sujets non stratifi\u00e9e n&rsquo;a pas mod\u00e9lis\u00e9 les caract\u00e9ristiques de base de comorbidit\u00e9 d\u00e9pressive, ouvrant la voie \u00e0 de futures mod\u00e9lisations ancr\u00e9es dans l&rsquo;analyse de covariance (ANCOVA) multivari\u00e9e.<\/p>\n<h2>12. Bonnes pratiques de reporting acad\u00e9mique selon les normes APA 7<\/h2>\n<h3>12.1 R\u00e8gles stylistiques et math\u00e9matiques de la 7e \u00e9dition de l&rsquo;APA<\/h3>\n<p>La diffusion des r\u00e9sultats statistiques au sein des revues scientifiques internationales exige une conformit\u00e9 rigoureuse avec les pr\u00e9ceptes de r\u00e9daction de l&rsquo;<a rel=\"noopener noreferrer\" href=\"https:\/\/apastyle.apa.org\/\">American Psychological Association (normes APA 7e \u00e9dition)<\/a>. La pr\u00e9sentation des tests statistiques requiert le respect de r\u00e8gles typographiques strictes :<\/p>\n<ul>\n<li>Toutes les lettres latines d\u00e9signant des grandeurs statistiques ou des param\u00e8tres d&rsquo;\u00e9chantillon doivent \u00eatre compos\u00e9es en <em>italique<\/em> (par exemple : <em>M<\/em> pour la moyenne, <em>SD<\/em> pour l&rsquo;\u00e9cart-type, <em>F<\/em> pour le test de Snedecor, <em>p<\/em> pour la probabilit\u00e9 critique, <em>q<\/em> pour l&rsquo;\u00e9tendue studentis\u00e9e, et <em>d<\/em> pour la taille d&rsquo;effet de Cohen). En revanche, les indices et les lettres grecques (comme &eta;&sup2; ou &omega;&sup2;) demeurent en caract\u00e8res romains droits.<\/li>\n<li>Le niveau d&rsquo;arrondi num\u00e9rique standard impose deux d\u00e9cimales pour la grande majorit\u00e9 des grandeurs descriptives et de test (moyennes, \u00e9carts-types, statistiques <em>F<\/em>, statistiques <em>q<\/em>, tailles d&rsquo;effet).<\/li>\n<li>Les valeurs p font l&rsquo;objet d&rsquo;une exception : elles s&rsquo;expriment avec trois d\u00e9cimales (ex. : <em>p<\/em> = ,024). De plus, \u00e9tant born\u00e9es th\u00e9oriquement entre 0 et 1, la r\u00e8gle stylistique de l&rsquo;APA interdit l&rsquo;adjonction d&rsquo;un z\u00e9ro avant la virgule ou le point d\u00e9cimal (on \u00e9crit <em>p<\/em> = ,003 et non <em>p<\/em> = 0,003). Toute p-valeur calcul\u00e9e inf\u00e9rieure \u00e0 ,001 doit \u00eatre rapport\u00e9e sous la forme <em>p<\/em> &lt; ,001 et jamais sous la formulation erron\u00e9e <em>p<\/em> = ,000.<\/li>\n<li>La d\u00e9claration conjointe des intervalles de confiance simultan\u00e9s est imp\u00e9rative, en sp\u00e9cifiant le niveau de couverture : IC 95 % [Borne_Inf\u00e9rieure, Borne_Sup\u00e9rieure].<\/li>\n<\/ul>\n<h3>12.2 Exemples de paragraphes de r\u00e9sultats conformes pour publication<\/h3>\n<p>La transcription narrative des r\u00e9sultats doit int\u00e9grer de mani\u00e8re fluide le verdict du test omnibus initial, suivi du d\u00e9tail syst\u00e9matique des comparaisons post-hoc de Tukey. Un mod\u00e8le de r\u00e9daction conforme aux normes acad\u00e9miques s&rsquo;articule comme suit :<\/p>\n<p><em>\u00ab Une analyse de variance unifactorielle \u00e0 mesures ind\u00e9pendantes a \u00e9t\u00e9 conduite pour \u00e9valuer l&rsquo;impact de l&rsquo;approche th\u00e9rapeutique sur les scores d&rsquo;anxi\u00e9t\u00e9 mesur\u00e9s \u00e0 l&rsquo;inventaire de Beck (BAI). L&rsquo;analyse r\u00e9v\u00e8le un effet principal hautement significatif du protocole de traitement, F(2, 87) = 43,12, p &lt; ,001, &eta;&sup2; = ,50, &omega;&sup2; = ,48, indiquant une forte magnitude d&rsquo;effet.<\/em><\/p>\n<p><em>Les comparaisons multiples post-hoc effectu\u00e9es \u00e0 l&rsquo;aide du test HSD de Tukey (contr\u00f4lant le taux d&rsquo;erreur par famille \u00e0 alpha = ,05) indiquent que les participants assign\u00e9s au groupe TCC (M = 19,20, SD = 4,80) et ceux du groupe ACT (M = 17,80, SD = 5,00) pr\u00e9sentent des niveaux d&rsquo;anxi\u00e9t\u00e9 significativement inf\u00e9rieurs \u00e0 ceux du groupe sur liste d&rsquo;attente (M = 28,50, SD = 5,20), avec respectivement meandiff = -9,30, IC 95 % [-12,45, -6,15], p &lt; ,001, d = -1,86, et meandiff = -10,70, IC 95 % [-13,85, -7,55], p &lt; ,001, d = -2,14. En revanche, aucune diff\u00e9rence statistiquement significative n&rsquo;a \u00e9t\u00e9 d\u00e9tect\u00e9e entre le groupe TCC et le groupe ACT, meandiff = -1,40, IC 95 % [-4,55, 1,75], p = ,482, d = -0,28. Ces r\u00e9sultats confirment l&rsquo;efficacit\u00e9 th\u00e9rapeutique marqu\u00e9e des deux protocoles actifs sans divergence significative entre eux \u00e0 l&rsquo;issue de l&rsquo;intervention. \u00bb<\/em><\/p>\n<h3>12.3 Construction d&rsquo;un tableau r\u00e9capitulatif pr\u00eat pour soumission<\/h3>\n<p>Les normes de l&rsquo;APA 7 imposent une mise en forme sobre et normalis\u00e9e pour les tableaux statistiques. Un tableau conforme exclut rigoureusement tout quadrillage vertical et ne conserve qu&rsquo;un nombre restreint de traits horizontaux (d\u00e9limitant l&rsquo;en-t\u00eate de colonne, la s\u00e9paration du tableau et la base inf\u00e9rieure avant les notes de bas de page).<\/p>\n<p>Pour exporter directement les donn\u00e9es de Statsmodels vers un format propre, un script Python peut formater la matrice r\u00e9sultante et l&rsquo;exporter sous forme de balisage HTML conforme aux standards de publication :<\/p>\n<p><code>tableau_apa = df_res.copy()<br \/>tableau_apa['meandiff'] = tableau_apa['meandiff'].map(lambda x: f\"{x:.2f}\")<br \/>tableau_apa['IC 95 %'] = [f\"[{low:.2f}, {up:.2f}]\" for low, up in zip(tableau_apa['lower'], tableau_apa['upper'])]<br \/>tableau_apa['p-adj'] = tableau_apa['p-adj'].map(lambda x: \"&lt; ,001\" if x &lt; 0.001 else f\"{x:.3f}\".replace(\"0.\", \".\"))<br \/>tableau_apa['d'] = tableau_apa['cohen_d'].map(lambda x: f\"{x:.2f}\")<\/p>\n<p>tableau_apa_final = tableau_apa[['group1', 'group2', 'meandiff', 'IC 95 %', 'p-adj', 'd']]<br \/>tableau_apa_final.columns = ['Groupe 1', 'Groupe 2', 'Diff\u00e9rence (M)', 'IC 95 %', 'p ajust\u00e9', 'd de Cohen']<\/p>\n<p># Export HTML stylis\u00e9 selon APA 7<br \/>style_apa = \"\"\"<br \/>&lt;style&gt;<br \/>table.apa { border-collapse: collapse; width: 100%; font-family: 'Times New Roman', Times, serif; font-size: 14px; }<br \/>table.apa th { border-top: 2px solid black; border-bottom: 1px solid black; text-align: left; padding: 6px; }<br \/>table.apa td { padding: 6px; border: none; }<br \/>table.apa tr:last-child td { border-bottom: 2px solid black; }<br \/>&lt;\/style&gt;<br \/>\"\"\"<br \/>html_code = style_apa + tableau_apa_final.to_html(classes='apa', index=False, escape=False)<br \/>print(html_code)<\/code><\/p>\n<p>Ce script produit un tableau de synth\u00e8se pr\u00eat pour l&rsquo;int\u00e9gration \u00e9ditoriale. La note de bas de tableau doit syst\u00e9matiquement rappeler la m\u00e9thode d&rsquo;ajustement mobilis\u00e9e, par exemple : <em>\u00ab Note. N = 90. Les comparaisons par paires reposent sur le test HSD de Tukey ajust\u00e9 selon la proc\u00e9dure de Tukey-Kramer pour comparaisons multiples. Le seuil de confiance conjoint est configur\u00e9 \u00e0 95 %. L&rsquo;\u00e9cart-type r\u00e9siduel mutualis\u00e9 de l&rsquo;ANOVA a servi de base au calcul du d de Cohen standardis\u00e9. \u00bb<\/em> Cette formalisation parach\u00e8ve l&rsquo;ensemble de la d\u00e9marche empirique, depuis la premi\u00e8re ligne de code de calcul jusqu&rsquo;\u00e0 la restitution finale pr\u00eate pour diffusion au sein de la communaut\u00e9 scientifique internationale.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>Cohen, J. (1988). <em>Statistical power analysis for the behavioral sciences<\/em> (2e \u00e9d.). Lawrence Erlbaum Associates. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.4324\/9780203771587\">https:\/\/doi.org\/10.4324\/9780203771587<\/a><\/li>\n<li>Games, P. A., &amp; Howell, J. F. (1976). Pairwise multiple comparison procedures with unequal n&rsquo;s and\/or variances: A Monte Carlo study. <em>Journal of Educational Statistics<\/em>, 1(2), 113\u2013125. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.2307\/1164979\">https:\/\/doi.org\/10.2307\/1164979<\/a><\/li>\n<li>Harris, C. R., Millman, K. J., van der Walt, S. J., Gommers, R., Virtanen, P., Cournapeau, D., &#8230; &amp; Oliphant, T. E. (2020). Array programming with NumPy. <em>Nature<\/em>, 585(7825), 357\u2013362. <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>McKinney, W. (2010). Data structures for statistical computing in Python. Dans <em>Proceedings of the 9th Python in Science Conference<\/em> (Vol. 445, pp. 51\u201356). <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.25080\/Majora-92bf1923-00a\">https:\/\/doi.org\/10.25080\/Majora-92bf1923-00a<\/a><\/li>\n<li>Seabold, S., &amp; Perktold, J. (2010). Statsmodels: Econometric and statistical modeling with Python. Dans <em>Proceedings of the 9th Python in Science Conference<\/em> (Vol. 57, pp. 92\u201396). <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.25080\/Majora-92bf1923-011\">https:\/\/doi.org\/10.25080\/Majora-92bf1923-011<\/a><\/li>\n<li>Tukey, J. W. (1949). Comparing individual means in the analysis of variance. <em>Biometrics<\/em>, 5(2), 99\u2013114. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.2307\/3001913\">https:\/\/doi.org\/10.2307\/3001913<\/a><\/li>\n<li>Tukey, J. W. (1953). <em>The problem of multiple comparisons<\/em>. Princeton University.<\/li>\n<li>Vallat, R. (2018). Pingouin: statistics in Python. <em>Journal of Open Source Software<\/em>, 3(31), 1026. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.21105\/joss.01026\">https:\/\/doi.org\/10.21105\/joss.01026<\/a><\/li>\n<li>Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T., Cournapeau, D., &#8230; &amp; SciPy 1.0 Contributors. (2020). SciPy 1.0: fundamental algorithms for scientific computing in Python. <em>Nature Methods<\/em>, 17(3), 261\u2013272. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1038\/s41592-019-0686-2\">https:\/\/doi.org\/10.1038\/s41592-019-0686-2<\/a><\/li>\n<li>Waskom, M. L. (2021). Seaborn: statistical data visualization. <em>Journal of Open Source Software<\/em>, 6(60), 3021. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.21105\/joss.03021\">https:\/\/doi.org\/10.21105\/joss.03021<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide complet pour r\u00e9aliser et interpr\u00e9ter le test post-hoc de Tukey en Python avec statsmodels, adapt\u00e9 \u00e0 la recherche empirique en psychologie.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[1829,1994],"tags":[7694,2224,2468,2903,6065],"class_list":["post-5846","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-statistique","category-psychologie-experimentale","tag-analyses-post-hoc","tag-anova","tag-python","tag-statsmodels","tag-test-de-tukey"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/5846","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=5846"}],"version-history":[{"count":0,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/5846\/revisions"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}