{"id":4062,"date":"2026-09-11T04:58:29","date_gmt":"2026-09-11T04:58:29","guid":{"rendered":"http:\/\/french.arabpsychology.com\/statistics\/comment-effectuer-ancova-python\/"},"modified":"2026-09-11T04:58:29","modified_gmt":"2026-09-11T04:58:29","slug":"comment-effectuer-ancova-python","status":"publish","type":"psych_stat","link":"https:\/\/french.arabpsychology.com\/?psych_stat=comment-effectuer-ancova-python","title":{"rendered":"Comment effectuer une ANCOVA en Python"},"content":{"rendered":"<p>L&rsquo;analyse de covariance, universellement d\u00e9sign\u00e9e sous l&rsquo;acronyme ANCOVA (de l&rsquo;anglais <em>Analysis of Covariance<\/em>), constitue l&rsquo;une des pierres angulaires de la m\u00e9thodologie inf\u00e9rentielle moderne appliqu\u00e9e aux sciences du comportement, \u00e0 la neuropsychologie, aux sciences de l&rsquo;\u00e9ducation et \u00e0 la biom\u00e9trie. En combinant l&rsquo;analyse de variance factorielle \u00e0 la r\u00e9gression lin\u00e9aire multiple, cette technique statistique permet d&rsquo;examiner l&rsquo;effet d&rsquo;une ou plusieurs variables ind\u00e9pendantes cat\u00e9gorielles sur une variable r\u00e9ponse continue, tout en neutralisant par ajustement math\u00e9matique l&rsquo;influence perturbatrice d&rsquo;une ou de plusieurs variables continues concomitantes, d\u00e9sign\u00e9es sous le vocable de covariables. Ce contr\u00f4le statistique <em>a posteriori<\/em> s&rsquo;av\u00e8re particuli\u00e8rement crucial dans les disciplines o\u00f9 l&rsquo;assignation strictement al\u00e9atoire des participants \u00e0 des groupes exp\u00e9rimentaux se heurte \u00e0 des contraintes \u00e9thiques, logistiques ou \u00e9cologiques ind\u00e9passables.<\/p>\n<p>Historiquement d\u00e9velopp\u00e9e par Ronald Aylmer Fisher dans les ann\u00e9es 1930 pour affiner la pr\u00e9cision des exp\u00e9rimentations agronomiques, l&rsquo;ANCOVA a trouv\u00e9 dans les sciences psychologiques un terrain d&rsquo;application fertile, notamment pour la mod\u00e9lisation des protocoles d&rsquo;intervention pr\u00e9-test\/post-test. En soustrayant de la variance d&rsquo;erreur la part attribuable aux diff\u00e9rences interindividuelles initiales des sujets (telles que le quotient intellectuel, l&rsquo;\u00e2ge chronologique, le statut socio-\u00e9conomique ou le niveau d&rsquo;anxi\u00e9t\u00e9 basale), l&rsquo;analyse de covariance augmente substantiellement la puissance statistique des tests d&rsquo;hypoth\u00e8ses. Elle permet ainsi d&rsquo;isoler avec une rigueur accrue l&rsquo;effet causal propre d&rsquo;une intervention th\u00e9rapeutique ou d&rsquo;une manipulation exp\u00e9rimentale.<\/p>\n<p>\u00c0 l&rsquo;\u00e8re de la science ouverte et de la recherche computationnelle reproductible, le langage de programmation <a rel=\"noopener noreferrer\" href=\"https:\/\/www.python.org\/\">Python<\/a> s&rsquo;est impos\u00e9 comme un vecteur d&rsquo;analyse statistique de premier plan. Gr\u00e2ce \u00e0 des modules hautement optimis\u00e9s tels que <a rel=\"noopener noreferrer\" href=\"https:\/\/pandas.pydata.org\/\">Pandas<\/a>, <a rel=\"noopener noreferrer\" href=\"https:\/\/pingouin-stats.org\/\">Pingouin<\/a> et <a rel=\"noopener noreferrer\" href=\"https:\/\/www.statsmodels.org\/\">Statsmodels<\/a>, les chercheurs disposent d\u00e9sormais d&rsquo;un \u00e9cosyst\u00e8me logiciel complet permettant d&rsquo;ex\u00e9cuter l&rsquo;ANCOVA, de v\u00e9rifier empiriquement l&rsquo;ensemble de ses postulats sous-jacents, d&rsquo;estimer les moyennes marginales ajust\u00e9es et de quantifier la taille d&rsquo;effet selon les standards \u00e9ditoriaux de l&rsquo;American Psychological Association (APA). Ce guide didactique et m\u00e9thodologique approfondi a pour vocation de vous accompagner pas \u00e0 pas dans la mise en \u0153uvre rigoureuse de l&rsquo;ANCOVA sous Python, depuis ses fondations th\u00e9oriques jusqu&rsquo;au reporting acad\u00e9mique final.<\/p>\n<h2>1. Fondements th\u00e9oriques de l&rsquo;ANCOVA en sciences psychologiques<\/h2>\n<h3>1.1 D\u00e9finition et objectifs de l&rsquo;analyse de covariance<\/h3>\n<p>L&rsquo;analyse de covariance repose sur le principe fondamental du contr\u00f4le statistique de la variance. Dans toute recherche exp\u00e9rimentale ou quasi-exp\u00e9rimentale, la variance observ\u00e9e sur la variable d\u00e9pendante est la r\u00e9sultante de deux composantes majeures : la variance syst\u00e9matique, induite par les facteurs exp\u00e9rimentaux manipul\u00e9s par le chercheur, et la variance non syst\u00e9matique, traditionnellement qualifi\u00e9e d&rsquo;erreur exp\u00e9rimentale ou r\u00e9siduelle. Lorsque cette derni\u00e8re est volumineuse, elle obscurcit les effets r\u00e9els du traitement, augmentant drastiquement le risque de commettre une erreur de Type II, c&rsquo;est-\u00e0-dire de conclure \u00e0 l&rsquo;absence d&rsquo;effet alors qu&rsquo;une diff\u00e9rence existe dans la population parente.<\/p>\n<p>D&rsquo;un point de vue conceptuel et math\u00e9matique, l&rsquo;ANCOVA s&rsquo;\u00e9rige \u00e0 l&rsquo;intersection exacte de l&rsquo;<a rel=\"noopener noreferrer\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Analyse_de_la_variance\">analyse de variance (ANOVA)<\/a> \u00e0 un facteur et de la r\u00e9gression lin\u00e9aire simple. Alors que l&rsquo;ANOVA d\u00e9compose la variance totale en variations inter-groupes et intra-groupes sur la base de pr\u00e9dicteurs nominaux, la r\u00e9gression mod\u00e9lise une relation fonctionnelle continue entre deux ou plusieurs dimensions quantitatives. L&rsquo;ANCOVA int\u00e8gre simultan\u00e9ment ces deux approches : elle partitionne la variabilit\u00e9 de la variable r\u00e9ponse en mod\u00e9lisant conjointement l&rsquo;appartenance groupale (variable ind\u00e9pendante cat\u00e9gorielle) et la relation lin\u00e9aire liant la variable r\u00e9ponse \u00e0 la variable d&rsquo;ajustement (covariable continue).<\/p>\n<p>Dans les devis de recherche quasi-exp\u00e9rimentaux en psychologie clinique ou scolaire, o\u00f9 les groupes pr\u00e9existent \u00e0 l&rsquo;\u00e9tude (classes d&rsquo;\u00e9l\u00e8ves, cohortes hospitali\u00e8res), l&rsquo;assignation al\u00e9atoire int\u00e9grale est impossible. D\u00e8s lors, les groupes diff\u00e8rent fr\u00e9quemment sur des variables d&rsquo;amont avant m\u00eame l&rsquo;administration du traitement. L&rsquo;ANCOVA remplit alors une mission de r\u00e9duction du biais d&rsquo;assignation en ajustant statistiquement les scores de sortie comme si tous les participants avaient d\u00e9but\u00e9 l&rsquo;exp\u00e9rimentation avec une valeur identique sur la covariable. Il convient toutefois de distinguer scrupuleusement la variable ind\u00e9pendante cat\u00e9gorielle (le facteur exp\u00e9rimental comprenant au moins deux modalit\u00e9s), la variable d\u00e9pendante continue (le crit\u00e8re d&rsquo;\u00e9valuation quantitatif) et la covariable (la mesure d&rsquo;ajustement continue mesur\u00e9e pr\u00e9alablement \u00e0 l&rsquo;administration du traitement).<\/p>\n<h3>1.2 M\u00e9canisme math\u00e9matique sous-jacent du mod\u00e8le lin\u00e9aire g\u00e9n\u00e9ral<\/h3>\n<p>L&rsquo;ANCOVA s&rsquo;inscrit rigoureusement dans le cadre unifi\u00e9 du Mod\u00e8le Lin\u00e9aire G\u00e9n\u00e9ral (MLG). L&rsquo;\u00e9quation formelle param\u00e9trique s&rsquo;\u00e9nonce classiquement sous la forme suivante pour chaque observation individuelle :<\/p>\n<p><em>Y<sub>ij<\/sub> = &mu; + &alpha;<sub>i<\/sub> + &beta;(X<sub>ij<\/sub> &#8211; X&#772;<sub>..<\/sub>) + &epsilon;<sub>ij<\/sub><\/em><\/p>\n<p>Dans cette formulation alg\u00e9brique, <em>Y<sub>ij<\/sub><\/em> repr\u00e9sente le score de la variable d\u00e9pendante pour le <em>j<\/em>-\u00e8me participant au sein du <em>i<\/em>-\u00e8me groupe de traitement. Le terme <em>&mu;<\/em> d\u00e9signe la moyenne g\u00e9n\u00e9rale th\u00e9orique de la population, tandis que <em>&alpha;<sub>i<\/sub><\/em> figure l&rsquo;effet diff\u00e9rentiel associ\u00e9 \u00e0 la modalit\u00e9 <em>i<\/em> du facteur exp\u00e9rimental principal, soumis \u00e0 la contrainte habituelle de sommabilit\u00e9 nulle (&Sigma;&alpha;<sub>i<\/sub> = 0). Le coefficient <em>&beta;<\/em> constitue la pente de r\u00e9gression lin\u00e9aire commune reliant la covariable <em>X<\/em> \u00e0 la variable r\u00e9ponse <em>Y<\/em>. Le terme <em>(X<sub>ij<\/sub> &#8211; X&#772;<sub>..<\/sub>)<\/em> exprime l&rsquo;\u00e9cart de la mesure individuelle de la covariable par rapport \u00e0 la moyenne globale d&rsquo;\u00e9chantillon <em>X&#772;<sub>..<\/sub><\/em>, op\u00e9ration d\u00e9sign\u00e9e sous le nom de centrage. Enfin, <em>&epsilon;<sub>ij<\/sub><\/em> incarne le terme d&rsquo;erreur r\u00e9siduelle stochastique, pr\u00e9sum\u00e9 distribu\u00e9 normalement avec une esp\u00e9rance nulle et une variance constante <em>&sigma;<sup>2<\/sup><\/em>.<\/p>\n<p>Sur le plan de la d\u00e9composition matricielle, la somme totale des carr\u00e9s des \u00e9carts (<em>SS<sub>totale<\/sub><\/em>) n&rsquo;est plus simplement scind\u00e9e en sommes des carr\u00e9s inter-groupes et intra-groupes comme dans une ANOVA conventionnelle. Elle est partitionn\u00e9e en trois entit\u00e9s distinctes : la somme des carr\u00e9s imputable au facteur exp\u00e9rimental (<em>SS<sub>facteur<\/sub><\/em>), la somme des carr\u00e9s expliqu\u00e9e lin\u00e9airement par la covariable (<em>SS<sub>covariable<\/sub><\/em>), et la somme des carr\u00e9s r\u00e9siduelle non expliqu\u00e9e (<em>SS<sub>r\u00e9siduelle<\/sub><\/em>). En extrayant <em>SS<sub>covariable<\/sub><\/em> de la variabilit\u00e9 r\u00e9siduelle brute de l&rsquo;ANOVA, le d\u00e9nominateur de la statistique de test <em>F<\/em> de Fisher se trouve substantiellement comprim\u00e9, ce qui affine la sensibilit\u00e9 de l&rsquo;\u00e9preuve.<\/p>\n<p>Le m\u00e9canisme central de l&rsquo;ANCOVA r\u00e9side dans le calcul des moyennes de groupe ajust\u00e9es, fr\u00e9quemment qualifi\u00e9es de moyennes marginales estim\u00e9es (<em>Estimated Marginal Means<\/em>). Pour chaque groupe exp\u00e9rimental <em>i<\/em>, la moyenne ajust\u00e9e <em>Y&#772;*<sub>i<\/sub><\/em> est obtenue en projetant la moyenne brute observ\u00e9e <em>Y&#772;<sub>i<\/sub><\/em> sur la droite de r\u00e9gression commune \u00e9valu\u00e9e \u00e0 la moyenne globale de la covariable :<\/p>\n<p><em>Y&#772;*<sub>i<\/sub> = Y&#772;<sub>i<\/sub> &#8211; &beta;(X&#772;<sub>i<\/sub> &#8211; X&#772;<sub>..<\/sub>)<\/em><\/p>\n<p>Ce recalibrage alg\u00e9brique neutralise tout d\u00e9s\u00e9quilibre pr\u00e9existant entre les groupes sur la variable <em>X<\/em>. Si un groupe affichait un score moyen pr\u00e9liminaire sup\u00e9rieur \u00e0 la moyenne collective, sa moyenne brute de sortie sera r\u00e9vis\u00e9e \u00e0 la baisse proportionnellement \u00e0 la pente <em>&beta;<\/em>, et inversement pour un groupe d\u00e9favoris\u00e9 au point de d\u00e9part.<\/p>\n<h3>1.3 Pertinence m\u00e9thodologique dans la recherche exp\u00e9rimentale<\/h3>\n<p>L&rsquo;int\u00e9r\u00eat premier de l&rsquo;analyse de covariance en recherche translationnelle et clinique r\u00e9side dans le gain substantiel de puissance statistique qu&rsquo;elle conf\u00e8re aux protocoles exp\u00e9rimentaux. Dans les recherches sur l&rsquo;efficacit\u00e9 des psychoth\u00e9rapies cognitives et comportementales ou des rem\u00e9diations neuropsychologiques, le recrutement de cohortes massives s&rsquo;av\u00e8re souvent restreint par les co\u00fbts humains et temporels. Dans un sch\u00e9ma ANOVA standard, une h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 prononc\u00e9e des participants au niveau de base gonfle la variance d&rsquo;erreur intra-groupe, r\u00e9duisant la taille d&rsquo;effet statistique per\u00e7ue. En int\u00e9grant une covariable corr\u00e9l\u00e9e au crit\u00e8re d&rsquo;au moins <em>r<\/em> = 0.30, l&rsquo;ANCOVA absorbe une fraction notable de cette variance d&rsquo;erreur, permettant de d\u00e9tecter des effets de traitement r\u00e9els avec des tailles d&rsquo;\u00e9chantillon plus modestes.<\/p>\n<p>Dans les devis longitudinaux comportant une mesure pr\u00e9-test et post-test, l&rsquo;inclusion du score pr\u00e9-test comme covariable surpasse m\u00e9thodologiquement l&rsquo;analyse d&rsquo;une simple variable de changement ou de gain brut (<em>Post &#8211; Pr\u00e9<\/em>). Comme l&rsquo;a d\u00e9montr\u00e9 la litt\u00e9rature psychom\u00e9trique, les scores de changement sont chroniquement afflig\u00e9s d&rsquo;une faible fid\u00e9lit\u00e9 de mesure et souffrent du ph\u00e9nom\u00e8ne pernicieux de r\u00e9gression vers la moyenne. L&rsquo;ANCOVA sur les scores post-test avec ajustement du pr\u00e9-test mod\u00e9lise math\u00e9matiquement la d\u00e9pendance s\u00e9rielle entre les temps de mesure tout en \u00e9vitant les artefacts de surcorrection inh\u00e9rents aux scores de diff\u00e9rence soustractifs.<\/p>\n<p>Enfin, l&rsquo;ANCOVA permet de ma\u00eetriser rigoureusement les variables parasites ou confondantes inh\u00e9rentes aux caract\u00e9ristiques individuelles des participants. Qu&rsquo;il s&rsquo;agisse de l&rsquo;\u00e2ge chronologique dans les \u00e9tudes sur le d\u00e9clin mn\u00e9sique, du niveau socio-\u00e9ducatif des parents dans les \u00e9valuations des innovations p\u00e9dagogiques, ou de l&rsquo;anxi\u00e9t\u00e9-trait basale dans les protocoles d&rsquo;exposition pharmacologique, l&rsquo;insertion de ces param\u00e8tres continus permet d&rsquo;assainir la comparaison factorielle. Elle garantit que la divergence finale observ\u00e9e entre les conditions exp\u00e9rimentales ne constitue pas un simple \u00e9piph\u00e9nom\u00e8ne d\u00e9coulant d&rsquo;une disparit\u00e9 sociod\u00e9mographique ou cognitive initiale.<\/p>\n<h2>2. Configuration de l&rsquo;environnement de calcul scientifique en Python<\/h2>\n<h3>2.1 S\u00e9lection et installation des biblioth\u00e8ques sp\u00e9cialis\u00e9es<\/h3>\n<p>Pour mener \u00e0 bien une analyse de covariance rigoureuse, reproductible et conforme aux standards internationaux, l&rsquo;environnement de programmation Python s&rsquo;appuie sur une suite synergique de biblioth\u00e8ques scientifiques hautement sp\u00e9cialis\u00e9es. Le socle fondamental de manipulation tabulaire et de calcul matriciel est assur\u00e9 par <a rel=\"noopener noreferrer\" href=\"https:\/\/numpy.org\/\">NumPy<\/a> et <a rel=\"noopener noreferrer\" href=\"https:\/\/pandas.pydata.org\/\">Pandas<\/a>. Ces modules permettent d&rsquo;importer, de structurer, d&rsquo;indexer et d&rsquo;effectuer des op\u00e9rations vectoris\u00e9es sur des volumes de donn\u00e9es multidimensionnels avec des performances optimales.<\/p>\n<p>Pour le traitement biostatistique direct et convivial, la biblioth\u00e8que <a rel=\"noopener noreferrer\" href=\"https:\/\/pingouin-stats.org\/\">Pingouin<\/a> s&rsquo;av\u00e8re incontournable. Con\u00e7ue explicitement pour les chercheurs en neurosciences et en psychologie, Pingouin propose une syntaxe \u00e9pur\u00e9e inspir\u00e9e des conventions du logiciel R, synth\u00e9tisant des r\u00e9sultats complexes sous la forme d&rsquo;\u00e9l\u00e9gants DataFrames Pandas imm\u00e9diatement exportables. La fonction d\u00e9di\u00e9e \u00e0 l&rsquo;ANCOVA calcule automatiquement les sommes de carr\u00e9s, les statistiques <em>F<\/em>, les degr\u00e9s de libert\u00e9, ainsi que les tailles d&rsquo;effet associ\u00e9es.<\/p>\n<p>Pour une mod\u00e9lisation param\u00e9trique avanc\u00e9e et une flexibilit\u00e9 totale dans l&rsquo;\u00e9criture des contrastes, l&rsquo;utilisation de <a rel=\"noopener noreferrer\" href=\"https:\/\/www.statsmodels.org\/\">Statsmodels<\/a> est imp\u00e9rative. Cette biblioth\u00e8que impl\u00e9mente les mod\u00e8les lin\u00e9aires par moindres carr\u00e9s ordinaires (<em>Ordinary Least Squares<\/em>, OLS) en employant la syntaxe symbolique introduite par Patsy. Elle donne acc\u00e8s au diagnostic microscopique de la r\u00e9gression, au calcul des sommes des carr\u00e9s partielles de Type II et de Type III, ainsi qu&rsquo;aux corrections d&rsquo;h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 robustes. Enfin, l&rsquo;exploration graphique et la validation visuelle des postulats reposent sur le bin\u00f4me graphique form\u00e9 par <a rel=\"noopener noreferrer\" href=\"https:\/\/matplotlib.org\/\">Matplotlib<\/a> et <a rel=\"noopener noreferrer\" href=\"https:\/\/seaborn.pydata.org\/\">Seaborn<\/a>, qui offrent des fonctionnalit\u00e9s avanc\u00e9es pour tracer simultan\u00e9ment distributions, nuages de points multivari\u00e9s et droites de r\u00e9gression conditionnelles.<\/p>\n<p>L&rsquo;installation de cet \u00e9cosyst\u00e8me logiciel au sein de votre terminal ou invite de commande s&rsquo;effectue simplement via le gestionnaire de paquets officiel de Python, en veillant \u00e0 sp\u00e9cifier l&rsquo;ensemble des modules requis dans une commande unifi\u00e9e :<\/p>\n<p><code>pip install numpy pandas scipy statsmodels pingouin matplotlib seaborn<\/code><\/p>\n<h3>2.2 Configuration du cadre de travail reproductible<\/h3>\n<p>L&rsquo;int\u00e9grit\u00e9 de la d\u00e9marche scientifique contemporaine exige une reproductibilit\u00e9 computationnelle absolue. En psychologie computationnelle, l&rsquo;ex\u00e9cution d&rsquo;analyses impliquant des r\u00e9\u00e9chantillonnages statistiques, des simulations ou la g\u00e9n\u00e9ration de donn\u00e9es synth\u00e9tiques requiert la fixation stricte de la graine du g\u00e9n\u00e9rateur de nombres pseudo-al\u00e9atoires (<em>random seed<\/em>). L&rsquo;omission de cette pr\u00e9caution \u00e9l\u00e9mentaire conduit inexorablement \u00e0 des divergences marginales lors de la r\u00e9plication des calculs par des tiers ou lors de la soumission \u00e9ditoriale.<\/p>\n<p>Sur le plan structurel, il est fortement recommand\u00e9 d&rsquo;isoler le projet de recherche dans un environnement virtuel \u00e9tanche, qu&rsquo;il soit orchestr\u00e9 par <code>venv<\/code> ou par le gestionnaire <code>conda<\/code>. Cette compartimentation logicielle pr\u00e9munit l&rsquo;analyste contre les conflits de versions entre biblioth\u00e8ques, garantissant qu&rsquo;une mise \u00e0 jour logicielle ult\u00e9rieure ne corrompra pas le pipeline d&rsquo;analyse \u00e9tabli. L&rsquo;initialisation d&rsquo;un tel environnement virtuel sous environnement Unix ou Windows se d\u00e9roule selon la proc\u00e9dure canonique :<\/p>\n<p><code>python -m venv env_ancova<\/code><br \/>\n<code>source env_ancova\/bin\/activate<\/code> (sur macOS\/Linux) ou <code>env_ancovaScriptsactivate<\/code> (sur Windows)<\/p>\n<p>Au sommet du script Python principal, la configuration scripturale standard d\u00e9bute par l&rsquo;importation ordonn\u00e9e des modules et la d\u00e9finition de la graine al\u00e9atoire. Il convient \u00e9galement de verrouiller les options d&rsquo;affichage de Pandas pour faciliter la lisibilit\u00e9 des matrices num\u00e9riques et des tableaux de r\u00e9sultats statistiques :<\/p>\n<p><code>import numpy as np<\/code><br \/>\n<code>import pandas as pd<\/code><br \/>\n<code>import matplotlib.pyplot as plt<\/code><br \/>\n<code>import seaborn as sns<\/code><br \/>\n<code>import pingouin as pg<\/code><br \/>\n<code>import statsmodels.api as sm<\/code><br \/>\n<code>import statsmodels.formula.api as smf<\/code><br \/>\n<code>from statsmodels.stats.anova import anova_lm<\/code><br \/>\n<code>from scipy import stats<\/code><br \/>\n<code>np.random.seed(42)<\/code><br \/>\n<code>pd.set_option('display.max_columns', 15)<\/code><br \/>\n<code>pd.set_option('display.precision', 4)<\/code><\/p>\n<h2>3. Structuration et encodage des donn\u00e9es empiriques<\/h2>\n<h3>3.1 Cr\u00e9ation du jeu de donn\u00e9es exp\u00e9rimental<\/h3>\n<p>Afin de concr\u00e9tiser notre expos\u00e9 par une d\u00e9monstration pratique exhaustive, nous simulons une \u00e9tude contr\u00f4l\u00e9e et randomis\u00e9e en psychologie de l&rsquo;\u00e9ducation \u00e9valuant l&rsquo;efficacit\u00e9 compar\u00e9e de trois dispositifs didactiques distincts sur l&rsquo;acquisition de concepts complexes en statistiques. Les trois modalit\u00e9s de la variable ind\u00e9pendante cat\u00e9gorielle (<em>Methode_Apprentissage<\/em>) sont :<\/p>\n<ul>\n<li><strong>Traditionnel :<\/strong> Cours magistral descendant accompagn\u00e9 d&rsquo;exercices sur support papier conventionnel.<\/li>\n<li><strong>Actif :<\/strong> R\u00e9solution collaborative de probl\u00e8mes en petits groupes de pairs sous la supervision d&rsquo;un tuteur.<\/li>\n<li><strong>Microlearning :<\/strong> Apprentissage fragment\u00e9 et distribu\u00e9 dans le temps via une application mobile interactive dot\u00e9e d&rsquo;algorithmes de r\u00e9p\u00e9tition espac\u00e9e.<\/li>\n<\/ul>\n<p>L&rsquo;\u00e9chantillon comporte <em>N<\/em> = 150 \u00e9tudiants universitaires, r\u00e9partis \u00e9quitablement \u00e0 raison de 50 participants par condition d&rsquo;apprentissage (dispositif \u00e9quilibr\u00e9). La variable d\u00e9pendante continue (<em>Score_PostTest<\/em>) quantifie la performance finale \u00e0 un examen standardis\u00e9 not\u00e9 de 0 \u00e0 100. La covariable continue (<em>Score_PreTest<\/em>) mesure les connaissances statistiques pr\u00e9alables des \u00e9tudiants, \u00e9valu\u00e9es lors d&rsquo;un pr\u00e9-test avant toute assignation exp\u00e9rimentale. La g\u00e9n\u00e9ration de ce jeu de donn\u00e9es est programm\u00e9e de mani\u00e8re \u00e0 incorporer une corr\u00e9lation substantielle entre le pr\u00e9-test et le post-test (<em>r<\/em> &approx; 0.65), tout en mat\u00e9rialisant une sup\u00e9riorit\u00e9 p\u00e9dagogique des m\u00e9thodes actives et distribu\u00e9es :<\/p>\n<p><code>n_par_groupe = 50<\/code><br \/>\n<code>groupes = ['Traditionnel', 'Actif', 'Microlearning']<\/code><br \/>\n<code>data_list = []<\/code><br \/>\n<code>for grp in groupes:<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>pre = np.random.normal(loc=50, scale=10, size=n_par_groupe)<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>if grp == 'Traditionnel':<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>eff = 0<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>elif grp == 'Actif':<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>eff = 5<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>else:<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>eff = 9<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>post = 15 + 0.65 * pre + eff + np.random.normal(loc=0, scale=5, size=n_par_groupe)<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>df_grp = pd.DataFrame({'Groupe': grp, 'PreTest': pre, 'PostTest': post})<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>data_list.append(df_grp)<\/code><br \/>\n<code>df_etude = pd.concat(data_list, ignore_index=True)<\/code><\/p>\n<h3>3.2 Typage et validation de la structure tabulaire<\/h3>\n<p>Avant d&rsquo;engager toute mod\u00e9lisation statistique, la v\u00e9rification rigoureuse de la structure du tableau de donn\u00e9es constitue une \u00e9tape obligatoire du protocole m\u00e9thodologique. En programmation Python, les variables cat\u00e9gorielles doivent \u00eatre explicitement typ\u00e9es en tant que <em>category<\/em> ou <em>object<\/em>, tandis que les variables quantitatives doivent imp\u00e9rativement \u00eatre format\u00e9es en types num\u00e9riques \u00e0 virgule flottante (<em>float64<\/em>). Une omission fr\u00e9quente consiste \u00e0 laisser une variable de traitement cod\u00e9e num\u00e9riquement (ex. : 1, 2, 3) sous le format <em>int64<\/em>, ce qui inciterait Statsmodels \u00e0 estimer une simple pente de r\u00e9gression lin\u00e9aire continue au lieu de contrastes factoriels discrets.<\/p>\n<p>L&rsquo;encodage explicite de la variable factorielle et l&rsquo;inspection de l&rsquo;int\u00e9grit\u00e9 matricielle s&rsquo;effectuent par les commandes :<\/p>\n<p><code>df_etude['Groupe'] = df_etude['Groupe'].astype('category')<\/code><br \/>\n<code>df_etude['Groupe'] = df_etude['Groupe'].cat.reorder_categories(['Traditionnel', 'Actif', 'Microlearning'], ordered=False)<\/code><br \/>\n<code>df_etude['PreTest'] = df_etude['PreTest'].astype(float)<\/code><br \/>\n<code>df_etude['PostTest'] = df_etude['PostTest'].astype(float)<\/code><\/p>\n<p>Le contr\u00f4le des valeurs manquantes doit \u00eatre syst\u00e9matique. Dans un devis exp\u00e9rimental, l&rsquo;absence de donn\u00e9es (<em>Missing Completely At Random<\/em> &#8211; MCAR, ou <em>Missing At Random<\/em> &#8211; MAR) peut alt\u00e9rer l&rsquo;\u00e9quilibre du plan factoriel. Le calcul <code>df_etude.isna().sum()<\/code> permet d&rsquo;attester de l&rsquo;exhaustivit\u00e9 des observations. Si des donn\u00e9es manquantes \u00e9taient constat\u00e9es, l&rsquo;analyste devrait choisir entre une exclusion par liste (<em>listwise deletion<\/em>) si le volume est infinit\u00e9simal, ou une proc\u00e9dure d&rsquo;imputation multiple par \u00e9quations cha\u00een\u00e9es (MICE) si la perte d&rsquo;informations menace la validit\u00e9 \u00e9cologique de l&rsquo;inf\u00e9rence.<\/p>\n<h2>4. Analyse exploratoire et inspection visuelle pr\u00e9alable<\/h2>\n<h3>4.1 Calcul des statistiques descriptives stratifi\u00e9es<\/h3>\n<p>L&rsquo;analyse exploratoire des donn\u00e9es constitue le pr\u00e9alable indispensable \u00e0 toute entreprise inf\u00e9rentielle. Il s&rsquo;agit en premier lieu de quantifier les mesures de tendance centrale (moyennes arithm\u00e9tiques, m\u00e9dianes) et les indices de dispersion (\u00e9carts-types, \u00e9carts interquartiles) pour la variable d\u00e9pendante et la covariable, conditionnellement \u00e0 chaque niveau du facteur exp\u00e9rimental. Cette stratification permet de d\u00e9tecter imm\u00e9diatement d&rsquo;\u00e9ventuelles asym\u00e9tries de distribution ou des d\u00e9s\u00e9quilibres flagrants au niveau de base.<\/p>\n<p>L&rsquo;utilisation judicieuse de la m\u00e9thode <code>groupby()<\/code> de Pandas combin\u00e9e \u00e0 <code>agg()<\/code> offre une synth\u00e8se tabulaire exhaustive :<\/p>\n<p><code>stats_desc = df_etude.groupby('Groupe').agg({<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>'PreTest': ['count', 'mean', 'std', 'median', lambda x: stats.iqr(x)],<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>'PostTest': ['count', 'mean', 'std', 'median', lambda x: stats.iqr(x)]<\/code><br \/>\n<code>})<\/code><br \/>\n<code>stats_desc.columns = ['N', 'Moy_Pre', 'ET_Pre', 'Med_Pre', 'EIQ_Pre', 'N_Post', 'Moy_Post', 'ET_Post', 'Med_Post', 'EIQ_Post']<\/code><\/p>\n<p>Au-del\u00e0 des simples moyennes de groupe, il est imp\u00e9ratif d&rsquo;\u00e9valuer la force de l&rsquo;association lin\u00e9aire bivari\u00e9e reliant la covariable \u00e0 la variable d\u00e9pendante au sein de chaque modalit\u00e9 factorielle. L&rsquo;existence d&rsquo;une corr\u00e9lation de Pearson positive, substantielle et statistiquement significative (g\u00e9n\u00e9ralement comprise entre <em>r<\/em> = 0.40 et <em>r<\/em> = 0.80) atteste de la pertinence empirique de la covariable choisie. Par ailleurs, il convient de s&rsquo;assurer du chevauchement suffisant des distributions de la covariable d&rsquo;un groupe \u00e0 l&rsquo;autre (<em>covariate overlap<\/em>) : si les scores de pr\u00e9-test d&rsquo;un groupe \u00e9taient int\u00e9gralement disjoints de ceux des autres groupes, toute tentative d&rsquo;ajustement statistique par l&rsquo;ANCOVA reposerait sur une extrapolation hors-\u00e9chantillon math\u00e9matiquement invalide.<\/p>\n<h3>4.2 Repr\u00e9sentation graphique exploratoire<\/h3>\n<p>La transcription graphique des distributions permet d&rsquo;appr\u00e9hender intuitivement la structure multidimensionnelle des donn\u00e9es et d&rsquo;identifier de potentielles valeurs aberrantes (<em>outliers<\/em>) bivari\u00e9es. Une visualisation efficace combine la bo\u00eete \u00e0 moustaches (<em>boxplot<\/em>) avec un diagramme de dispersion superpos\u00e9 pr\u00e9sentant une l\u00e9g\u00e8re gigue al\u00e9atoire (<em>jitter<\/em>) afin de conserver la perception de la densit\u00e9 d&rsquo;\u00e9chantillonnage individuelle sans occlusion visuelle.<\/p>\n<p>Dans un second temps, le tra\u00e7age d&rsquo;un graphique en violon (<em>violin plot<\/em>) conditionnel permet d&rsquo;examiner la sym\u00e9trie et la multimodalit\u00e9 \u00e9ventuelle des distributions de scores post-test pour chaque technique p\u00e9dagogique. Cependant, la figure la plus cruciale pour l&rsquo;analyse de covariance demeure le nuage de points bivari\u00e9 superposant le <em>PostTest<\/em> en ordonn\u00e9e et le <em>PreTest<\/em> en abscisse, stratifi\u00e9 par groupe de traitement et int\u00e9grant les droites d&rsquo;ajustement lin\u00e9aires locales calcul\u00e9es par la m\u00e9thode des moindres carr\u00e9s :<\/p>\n<p><code>plt.figure(figsize=(10, 6))<\/code><br \/>\n<code>sns.lmplot(x='PreTest', y='PostTest', hue='Groupe', data=df_etude, aspect=1.5,<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>markers=['o', 's', '^'], palette='Set1', ci=95)<\/code><br \/>\n<code>plt.title(\"Relation bivari\u00e9e PreTest - PostTest par groupe p\u00e9dagogique\", fontsize=14)<\/code><br \/>\n<code>plt.xlabel(\"Score Pr\u00e9-test (Covariable)\", fontsize=12)<\/code><br \/>\n<code>plt.ylabel(\"Score Post-test (Variable D\u00e9pendante)\", fontsize=12)<\/code><br \/>\n<code>plt.grid(True, linestyle='--', alpha=0.5)<\/code><br \/>\n<code>plt.show()<\/code><\/p>\n<p>Ce graphique permet une appr\u00e9ciation visuelle directe de deux conditions structurales cl\u00e9s de l&rsquo;ANCOVA : la lin\u00e9arit\u00e9 locale de la relation entre les mesures, et le parall\u00e9lisme apparent des trois droites de r\u00e9gression. Des pentes visuellement discordantes constitueraient une alerte imm\u00e9diate signalant une potentielle violation de l&rsquo;hypoth\u00e8se d&rsquo;homog\u00e9n\u00e9it\u00e9 des pentes.<\/p>\n<h2>5. V\u00e9rification des postulats fondamentaux : normalit\u00e9 et homosc\u00e9dasticit\u00e9<\/h2>\n<h3>5.1 \u00c9valuation de la normalit\u00e9 des r\u00e9sidus du mod\u00e8le<\/h3>\n<p>L&rsquo;une des confusions conceptuelles les plus tenaces dans la litt\u00e9rature exp\u00e9rimentale consiste \u00e0 exiger que la variable d\u00e9pendante brute soit distribu\u00e9e normalement au sein de chaque groupe. En r\u00e9alit\u00e9, le postulat de normalit\u00e9 du mod\u00e8le lin\u00e9aire g\u00e9n\u00e9ral porte exclusivement sur les r\u00e9sidus d&rsquo;\u00e9chantillonnage (<em>residuals<\/em>), c&rsquo;est-\u00e0-dire sur les \u00e9carts individuels entre les valeurs r\u00e9elles observ\u00e9es et les valeurs conditionnelles pr\u00e9dites par l&rsquo;\u00e9quation d&rsquo;ANCOVA globale :<\/p>\n<p><em>e<sub>ij<\/sub> = Y<sub>ij<\/sub> &#8211; Y&#770;<sub>ij<\/sub><\/em><\/p>\n<p>Pour extraire ces r\u00e9sidus sous Python, il est pr\u00e9conis\u00e9 d&rsquo;ajuster pr\u00e9alablement le mod\u00e8le lin\u00e9aire via Statsmodels. L&rsquo;\u00e9valuation de leur normalit\u00e9 repose sur un double diagnostic, \u00e0 la fois formel et graphique. Sur le plan formel, le test de Shapiro-Wilk constitue l&rsquo;\u00e9preuve statistique de r\u00e9f\u00e9rence lorsque la taille d&rsquo;\u00e9chantillon globale n&rsquo;exc\u00e8de pas quelques centaines de participants. Une valeur <em>p<\/em> sup\u00e9rieure au seuil canonique de 0.05 autorise \u00e0 retenir l&rsquo;hypoth\u00e8se nulle d&rsquo;ad\u00e9quation \u00e0 la loi gaussienne :<\/p>\n<p><code>modele_prelim = smf.ols('PostTest ~ C(Groupe) + PreTest', data=df_etude).fit()<\/code><br \/>\n<code>residus = modele_prelim.resid<\/code><br \/>\n<code>shapiro_stat, shapiro_p = stats.shapiro(residus)<\/code><\/p>\n<p>Puisque les tests d&rsquo;hypoth\u00e8se formels deviennent excessivement sensibles aux d\u00e9viations triviales lorsque <em>N<\/em> augmente, ils doivent obligatoirement \u00eatre corrobor\u00e9s par une inspection du diagramme quantile-quantile (Q-Q plot), o\u00f9 les quantiles empiriques des r\u00e9sidus standardis\u00e9s sont projet\u00e9s contre les quantiles th\u00e9oriques d&rsquo;une distribution normale standard :<\/p>\n<p><code>fig, ax = plt.subplots(figsize=(6, 6))<\/code><br \/>\n<code>sm.qqplot(residus, line='45', fit=True, ax=ax)<\/code><br \/>\n<code>ax.set_title(\"Diagramme Q-Q des r\u00e9sidus du mod\u00e8le d'ANCOVA\")<\/code><br \/>\n<code>plt.show()<\/code><\/p>\n<p>L&rsquo;analyste veillera \u00e9galement \u00e0 chiffrer les coefficients d&rsquo;asym\u00e9trie (<em>skewness<\/em>) et d&rsquo;aplatissement (<em>kurtosis<\/em>). Des indices compris dans l&rsquo;intervalle [-1, +1] garantissent que les inf\u00e9rences de l&rsquo;ANCOVA demeureront particuli\u00e8rement robustes, le test <em>F<\/em> de Fisher b\u00e9n\u00e9ficiant du th\u00e9or\u00e8me central limite pour les \u00e9chantillons mod\u00e9r\u00e9s \u00e0 grands.<\/p>\n<h3>5.2 Contr\u00f4le de l&rsquo;homosc\u00e9dasticit\u00e9 de la variance<\/h3>\n<p>Le postulat d&rsquo;homosc\u00e9dasticit\u00e9 stipule que la variance des r\u00e9sidus d&rsquo;erreur doit demeurer rigoureusement constante \u00e0 travers toutes les combinaisons des niveaux factoriels et sur l&rsquo;ensemble du continuum de la covariable :<\/p>\n<p><em>Var(&epsilon;<sub>ij<\/sub>) = &sigma;<sup>2<\/sup> &forall; i, j<\/em><\/p>\n<p>En pr\u00e9sence d&rsquo;h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 (variances r\u00e9siduelles in\u00e9gales), les estimateurs des moindres carr\u00e9s ordinaires demeurent sans biais mais perdent leur efficacit\u00e9 statistique, ce qui engendre un biais sur les erreurs-types estim\u00e9es et invalide le taux nominal d&rsquo;erreur de Type I lors du test des ratios <em>F<\/em>.<\/p>\n<p>L&rsquo;\u00e9galit\u00e9 des variances inter-groupes s&rsquo;examine traditionnellement \u00e0 l&rsquo;aide du test de Levene. Afin de pr\u00e9server la robustesse du test face \u00e0 d&rsquo;\u00e9ventuelles d\u00e9viations mineures de normalit\u00e9, il est fermement recommand\u00e9 de centrer l&rsquo;\u00e9preuve sur la m\u00e9diane plut\u00f4t que sur la moyenne arithm\u00e9tique (proc\u00e9dure de Brown-Forsythe), impl\u00e9ment\u00e9e nativement dans la biblioth\u00e8que SciPy :<\/p>\n<p><code>stat_levene, p_levene = stats.levene(<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>df_etude[df_etude['Groupe'] == 'Traditionnel']['PostTest'],<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>df_etude[df_etude['Groupe'] == 'Actif']['PostTest'],<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>df_etude[df_etude['Groupe'] == 'Microlearning']['PostTest'],<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>center='median'<\/code><br \/>\n<code>)<\/code><\/p>\n<p>Cependant, l&rsquo;ANCOVA exigeant \u00e9galement que la variance r\u00e9siduelle ne fluctue pas en fonction de la valeur de la covariable continue, il convient de compl\u00e9ter cette d\u00e9marche par le test d&rsquo;h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 de Breusch-Pagan, disponible dans le sous-module de diagnostic de Statsmodels :<\/p>\n<p><code>from statsmodels.stats.diagnostic import het_breuschpagan<\/code><br \/>\n<code>bp_test = het_breuschpagan(residus, modele_prelim.model.exog)<\/code><br \/>\n<code>labels = ['LM Statistic', 'LM-Test p-value', 'F-Statistic', 'F-Test p-value']<\/code><br \/>\n<code>resultats_bp = dict(zip(labels, bp_test))<\/code><\/p>\n<p>Un trac\u00e9 de dispersion des r\u00e9sidus standardis\u00e9s en fonction des valeurs pr\u00e9dites (<em>fitted values<\/em>) compl\u00e9tera l&rsquo;investigation : un nuage de points sans forme g\u00e9om\u00e9trique identifiable (absence de structure en entonnoir ou en fuseau) confirme visuellement l&rsquo;homog\u00e9n\u00e9it\u00e9 de la variance.<\/p>\n<h2>6. V\u00e9rification des postulats sp\u00e9cifiques : lin\u00e9arit\u00e9 et homog\u00e9n\u00e9it\u00e9 des pentes<\/h2>\n<h3>6.1 Lin\u00e9arit\u00e9 de la relation entre covariable et variable d\u00e9pendante<\/h3>\n<p>L&rsquo;ajustement op\u00e9r\u00e9 par l&rsquo;ANCOVA repose math\u00e9matiquement sur l&rsquo;estimation d&rsquo;une relation rectiligne entre la covariable continue et la variable d\u00e9pendante. Si la relation r\u00e9elle au sein de la population parente s&rsquo;av\u00e8re curviligne (par exemple quadratique, logarithmique ou sigmo\u00efde), l&rsquo;ajustement lin\u00e9aire classique sera imparfait et laissera subsister une part substantielle de variance syst\u00e9matique dans le terme d&rsquo;erreur r\u00e9siduelle. Pire encore, en pr\u00e9sence de sous-groupes situ\u00e9s sur diff\u00e9rentes portions d&rsquo;une courbe non lin\u00e9aire, l&rsquo;ajustement statistique peut induire de faux effets de groupe ou occulter des diff\u00e9rences exp\u00e9rimentales majeures.<\/p>\n<p>La v\u00e9rification empirique de la lin\u00e9arit\u00e9 s&rsquo;op\u00e8re par l&rsquo;introduction de termes polynomiaux d&rsquo;ordre sup\u00e9rieur au sein de l&rsquo;\u00e9quation de r\u00e9gression. En formulant un mod\u00e8le concurrent incorporant le carr\u00e9 de la covariable centr\u00e9e, l&rsquo;analyste examine si l&rsquo;accroissement de variance expliqu\u00e9e attribuable \u00e0 la courbure atteint le seuil de significativit\u00e9 statistique :<\/p>\n<p><code>df_etude['PreTest_Centree'] = df_etude['PreTest'] - df_etude['PreTest'].mean()<\/code><br \/>\n<code>df_etude['PreTest_Carre'] = df_etude['PreTest_Centree'] ** 2<\/code><br \/>\n<code>modele_poly = smf.ols('PostTest ~ C(Groupe) + PreTest_Centree + PreTest_Carre', data=df_etude).fit()<\/code><\/p>\n<p>Si la statistique <em>t<\/em> associ\u00e9e au coefficient de <em>PreTest_Carre<\/em> n&rsquo;est pas significative (<em>p<\/em> &gt; 0.05), le chercheur peut l\u00e9gitimement conclure que la simplification lin\u00e9aire ne d\u00e9grade pas la validit\u00e9 interne du mod\u00e8le d&rsquo;ANCOVA.<\/p>\n<h3>6.2 Test formel de l&rsquo;homog\u00e9n\u00e9it\u00e9 des pentes de r\u00e9gression<\/h3>\n<p>Le postulat d&rsquo;homog\u00e9n\u00e9it\u00e9 des pentes de r\u00e9gression (<em>homogeneity of regression slopes<\/em>) constitue la condition de validit\u00e9 la plus cruciale et la plus exigeante de l&rsquo;analyse de covariance. L&rsquo;ANCOVA classique suppose explicitement que l&rsquo;effet de la covariable sur la variable r\u00e9ponse est invariant d&rsquo;un groupe exp\u00e9rimental \u00e0 l&rsquo;autre, ce qui se traduit graphiquement par des droites de r\u00e9gression parfaitement parall\u00e8les dans la population :<\/p>\n<p><em>&beta;<sub>1<\/sub> = &beta;<sub>2<\/sub> = &#8230; = &beta;<sub>k<\/sub> = &beta;<\/em><\/p>\n<p>Sur le plan analytique, la violation de ce postulat signifie l&rsquo;existence d&rsquo;une interaction statistique de premier ordre entre la variable ind\u00e9pendante cat\u00e9gorielle et la covariable continue (<em>Groupe &times; Covariable<\/em>). Dans une telle configuration, l&rsquo;ampleur et la nature m\u00eame de l&rsquo;effet du traitement varient en fonction de la valeur de la covariable : pour un individu ayant un score pr\u00e9-test faible, la m\u00e9thode A peut \u00eatre sup\u00e9rieure, alors que pour un sujet disposant d&rsquo;un pr\u00e9-test \u00e9lev\u00e9, la m\u00e9thode B devient optimale. Pr\u00e9senter une \u00ab moyenne ajust\u00e9e globale \u00bb devient alors d\u00e9nu\u00e9 de sens scientifique.<\/p>\n<p>Le test formel de ce postulat s&rsquo;effectue en ajustant un mod\u00e8le d&rsquo;interaction complet sous Statsmodels et en observant la valeur <em>F<\/em> associ\u00e9e au terme crois\u00e9 :<\/p>\n<p><code>modele_interaction = smf.ols('PostTest ~ C(Groupe) * PreTest', data=df_etude).fit()<\/code><br \/>\n<code>table_interaction = anova_lm(modele_interaction, typ=2)<\/code><\/p>\n<p>Si la ligne relative \u00e0 <code>C(Groupe):PreTest<\/code> affiche une valeur <em>p<\/em> &gt; 0.05, l&rsquo;hypoth\u00e8se de parall\u00e9lisme des pentes est pr\u00e9serv\u00e9e, autorisant le d\u00e9ploiement de l&rsquo;ANCOVA standard. En revanche, si cette interaction s&rsquo;av\u00e8re statistiquement significative (<em>p<\/em> &le; 0.05), l&rsquo;ANCOVA classique doit \u00eatre imp\u00e9rativement r\u00e9voqu\u00e9e au profit d&rsquo;analyses d&rsquo;effets mod\u00e9rateurs ou de la mise en \u0153uvre de la technique de <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Johnson%E2%80%93Neyman_technique\">Johnson-Neyman<\/a>, qui identifie math\u00e9matiquement les r\u00e9gions de significativit\u00e9 sur le continuum de la covariable.<\/p>\n<h3>6.3 Ind\u00e9pendance entre la covariable et le facteur de traitement<\/h3>\n<p>Un principe m\u00e9thodologique fr\u00e9quemment bafou\u00e9 lors de l&rsquo;application de l&rsquo;ANCOVA r\u00e9side dans l&rsquo;exigence d&rsquo;ind\u00e9pendance (ou orthogonalit\u00e9) entre le facteur exp\u00e9rimental et la mesure de covariance. La covariable doit id\u00e9alement \u00eatre recueillie avant l&rsquo;administration du traitement ou \u00eatre par nature totalement insensible \u00e0 celui-ci (ex. : pr\u00e9disposition g\u00e9n\u00e9tique, \u00e2ge civil). Si l&rsquo;intervention exp\u00e9rimentale modifie elle-m\u00eame le niveau de la covariable, l&rsquo;ajustement statistique \u00e9liminera une fraction authentique de l&rsquo;effet du traitement, conduisant \u00e0 une sous-estimation syst\u00e9matique de l&rsquo;efficacit\u00e9 de l&rsquo;intervention.<\/p>\n<p>Sur le plan empirique, cette ind\u00e9pendance se v\u00e9rifie en soumettant la covariable \u00e0 une ANOVA \u00e0 un facteur pr\u00e9alable, o\u00f9 elle joue temporairement le r\u00f4le de variable r\u00e9ponse vis-\u00e0-vis du groupe :<\/p>\n<p><code>modele_indep = smf.ols('PreTest ~ C(Groupe)', data=df_etude).fit()<\/code><br \/>\n<code>table_indep = anova_lm(modele_indep, typ=2)<\/code><\/p>\n<p>Dans un protocole exp\u00e9rimental avec randomisation rigoureuse, les groupes ne doivent pas diff\u00e9rer significativement sur le <em>PreTest<\/em> (<em>p<\/em> &gt; 0.05). Dans les situations quasi-exp\u00e9rimentales o\u00f9 les groupes manifestent des disparit\u00e9s massives au d\u00e9part, l&rsquo;ajustement d&rsquo;ANCOVA s&rsquo;expose au c\u00e9l\u00e8bre paradoxe de Lord et aux mises en garde de Miller et Chapman (2001) : le contr\u00f4le statistique ne saurait cr\u00e9er une \u00e9quivalence exp\u00e9rimentale artificielle l\u00e0 o\u00f9 la r\u00e9alit\u00e9 \u00e9cologique des groupes est fondamentalement h\u00e9t\u00e9rog\u00e8ne.<\/p>\n<h2>7. Ex\u00e9cution de l&rsquo;ANCOVA avec le module Pingouin<\/h2>\n<h3>7.1 Mise en \u0153uvre de la fonction ancova()<\/h3>\n<p>La biblioth\u00e8que <a rel=\"noopener noreferrer\" href=\"https:\/\/pingouin-stats.org\/\">Pingouin<\/a> s&rsquo;impose comme l&rsquo;outil le plus direct, ergonomique et sp\u00e9cialis\u00e9 pour ex\u00e9cuter une analyse de covariance sous Python sans lourdeur syntaxique. Sa fonction \u00e9ponyme <code>ancova()<\/code> encapsule l&rsquo;ensemble du partitionnement matriciel des carr\u00e9s et d\u00e9livre instantan\u00e9ment les m\u00e9triques essentielles dans un format tabulaire pr\u00eat pour la diffusion scientifique.<\/p>\n<p>La signature syntaxique de la commande requiert la sp\u00e9cification des quatre arguments fondamentaux : le jeu de donn\u00e9es sous forme de DataFrame (<code>data<\/code>), le nom de la variable d\u00e9pendante continue (<code>dv<\/code> pour <em>dependent variable<\/em>), l&rsquo;identifiant de la ou des covariables continues (<code>covar<\/code>), et le nom du facteur de classification inter-sujets (<code>between<\/code>) :<\/p>\n<p><code>ancova_pingouin = pg.ancova(data=df_etude, dv='PostTest', covar='PreTest', between='Groupe')<\/code><br \/>\n<code>print(ancova_pingouin)<\/code><\/p>\n<p>En coulisses, Pingouin calcule de mani\u00e8re autonome les r\u00e9gressions sous-jacentes, proc\u00e8de \u00e0 l&rsquo;orthogonalisation des composantes et g\u00e9n\u00e8re les contrastes appropri\u00e9s. Cette concision syntaxique limite drastiquement les erreurs de codage manuel tout en assurant une vitesse d&rsquo;ex\u00e9cution optimale m\u00eame sur des bases de donn\u00e9es volumineuses comportant des dizaines de milliers de lignes.<\/p>\n<h3>7.2 Lecture et d\u00e9composition du tableau de r\u00e9sultats Pingouin<\/h3>\n<p>La sortie g\u00e9n\u00e9r\u00e9e par la fonction <code>pg.ancova()<\/code> se pr\u00e9sente sous la forme d&rsquo;un DataFrame structur\u00e9 selon les canons internationaux de l&rsquo;analyse de variance. Chaque ligne correspond \u00e0 une source de variation identifi\u00e9e du mod\u00e8le, tandis que les colonnes d\u00e9taillent les statistiques inf\u00e9rentielles associ\u00e9es :<\/p>\n<ul>\n<li><strong>Source :<\/strong> D\u00e9signe l&rsquo;origine de la variance partitionn\u00e9e. La table comporte typiquement le facteur exp\u00e9rimental principal (<em>Groupe<\/em>), la covariable continue (<em>PreTest<\/em>), et la composante d&rsquo;erreur non expliqu\u00e9e (<em>Residual<\/em>).<\/li>\n<li><strong>SS (Sum of Squares) :<\/strong> La somme des carr\u00e9s partielle d\u00e9volue \u00e0 chaque terme. Pour le facteur <em>Groupe<\/em>, il s&rsquo;agit de la variation expliqu\u00e9e nette, une fois retranch\u00e9e la variance absorb\u00e9e par le <em>PreTest<\/em>.<\/li>\n<li><strong>DF (Degrees of Freedom) :<\/strong> Les degr\u00e9s de libert\u00e9 associ\u00e9s. Pour un facteur \u00e0 <em>k<\/em> modalit\u00e9s, <em>DF = k &#8211; 1<\/em> (ici, 3 &#8211; 1 = 2). Pour la covariable continue, <em>DF = 1<\/em>. Pour les r\u00e9sidus, avec <em>N<\/em> observations totales et <em>p<\/em> pr\u00e9dicteurs (incluant la constante), <em>DF = N &#8211; k &#8211; 1<\/em> (ici, 150 &#8211; 3 &#8211; 1 = 146).<\/li>\n<li><strong>MS (Mean Squares) :<\/strong> Les carr\u00e9s moyens, obtenus en divisant chaque somme des carr\u00e9s par ses degr\u00e9s de libert\u00e9 respectifs (<em>MS = SS \/ DF<\/em>). Le carr\u00e9 moyen r\u00e9siduel (<em>MS<sub>Residual<\/sub><\/em>) constitue l&rsquo;estimateur non biais\u00e9 de la variance d&rsquo;erreur commune <em>&sigma;<sup>2<\/sup><\/em>.<\/li>\n<li><strong>F :<\/strong> La statistique <em>F<\/em> de Fisher-Snedecor, calcul\u00e9e par le ratio du carr\u00e9 moyen de l&rsquo;effet sur le carr\u00e9 moyen de l&rsquo;erreur (<em>F = MS<sub>Effet<\/sub> \/ MS<sub>Residual<\/sub><\/em>).<\/li>\n<li><strong>p-unc (Uncorrected p-value) :<\/strong> La probabilit\u00e9 critique bilat\u00e9rale sous l&rsquo;hypoth\u00e8se nulle. Une valeur inf\u00e9rieure \u00e0 0.05 atteste que l&rsquo;effet du traitement demeure statistiquement significatif apr\u00e8s contr\u00f4le math\u00e9matique strict de la covariable.<\/li>\n<li><strong>np2 (Partial Eta-Squared, &eta;<sub>p<\/sub><sup>2<\/sup>) :<\/strong> L&rsquo;amplitude de l&rsquo;effet standardis\u00e9e, quantifiant la proportion de variance r\u00e9siduelle expliqu\u00e9e sp\u00e9cifiquement par le facteur consid\u00e9r\u00e9.<\/li>\n<\/ul>\n<p>L&rsquo;observation attentive du tableau permet de quantifier pr\u00e9cis\u00e9ment le gain apport\u00e9 par l&rsquo;ANCOVA : la comparaison de la valeur <em>F<\/em> obtenue avec celle d&rsquo;une ANOVA simple montre presque syst\u00e9matiquement une \u00e9l\u00e9vation de la valeur statistique cons\u00e9cutive \u00e0 l&rsquo;amincissement de la variance d&rsquo;erreur r\u00e9siduelle.<\/p>\n<h2>8. Mod\u00e9lisation lin\u00e9aire param\u00e9trique avanc\u00e9e avec Statsmodels<\/h2>\n<h3>8.1 Formulation du mod\u00e8le par les moindres carr\u00e9s ordinaires<\/h3>\n<p>Bien que Pingouin offre une ergonomie remarquable, la mod\u00e9lisation sous <a rel=\"noopener noreferrer\" href=\"https:\/\/www.statsmodels.org\/\">Statsmodels<\/a> conf\u00e8re \u00e0 l&rsquo;exp\u00e9rimentateur une ma\u00eetrise granulaire sup\u00e9rieure, notamment en mati\u00e8re de param\u00e9trisation explicite de la matrice d&rsquo;exp\u00e9rience et de choix des contrastes de r\u00e9gression. En s&rsquo;appuyant sur l&rsquo;interface de formules de Patsy (hautement analogue \u00e0 la syntaxe adopt\u00e9e sous R), l&rsquo;analyste sp\u00e9cifie la relation structurelle avec clart\u00e9 :<\/p>\n<p><code>modele_ols = smf.ols('PostTest ~ C(Groupe) + PreTest', data=df_etude).fit()<\/code><br \/>\n<code>print(modele_ols.summary())<\/code><\/p>\n<p>L&rsquo;op\u00e9rateur <code>C(Groupe)<\/code> stipule formellement que la variable <em>Groupe<\/em> doit \u00eatre trait\u00e9e comme un facteur polytomique qualitatif. Par d\u00e9faut, Statsmodels adopte un codage de type \u00ab traitement \u00bb (<em>dummy coding<\/em>), d\u00e9signant la premi\u00e8re modalit\u00e9 par ordre alphab\u00e9tique ou par ordre de niveau (ici, <em>Traditionnel<\/em>) comme modalit\u00e9 de r\u00e9f\u00e9rence. Le tableau r\u00e9capitulatif <code>summary()<\/code> expose d\u00e8s lors les coefficients de r\u00e9gression individuels (<em>B<\/em>), leurs erreurs-types associ\u00e9es (<em>Std.Err.<\/em>), les ratios de Student (<em>t<\/em>) et leurs valeurs <em>p<\/em> respectives.<\/p>\n<p>Dans ce cadre, la constante (<em>Intercept<\/em>) repr\u00e9sente la valeur pr\u00e9dite du <em>PostTest<\/em> pour la cat\u00e9gorie de r\u00e9f\u00e9rence lorsque le <em>PreTest<\/em> est rigoureusement \u00e9gal \u00e0 z\u00e9ro (d&rsquo;o\u00f9 l&rsquo;importance conceptuelle d&rsquo;un centrage pr\u00e9alable de la covariable pour conf\u00e9rer une interpr\u00e9tabilit\u00e9 directe \u00e0 cet intercepte). Les coefficients associ\u00e9s aux modalit\u00e9s <code>C(Groupe)[T.Actif]<\/code> et <code>C(Groupe)[T.Microlearning]<\/code> quantifient le d\u00e9calage moyen de performance par rapport au groupe traditionnel, pour une valeur constante quelconque du pr\u00e9-test.<\/p>\n<h3>8.2 Choix du type de sommes des carr\u00e9s<\/h3>\n<p>Dans les mod\u00e8les multifactoriels et dans l&rsquo;ANCOVA, le choix de la m\u00e9thode de partitionnement de la somme des carr\u00e9s exerce une influence directe sur les valeurs <em>F<\/em> obtenues, en particulier lorsque les effectifs au sein des cellules factorielles sont in\u00e9gaux (plans d\u00e9s\u00e9quilibr\u00e9s). Il existe trois approches canoniques :<\/p>\n<ul>\n<li><strong>Type I (S\u00e9quentiel) :<\/strong> Les variables explicatives sont introduites pas \u00e0 pas dans l&rsquo;ordre strict dict\u00e9 par la syntaxe du mod\u00e8le. La premi\u00e8re variable absorbe toute la variance possible, et la seconde n&rsquo;explique que la variance r\u00e9siduelle non accapar\u00e9e par la premi\u00e8re. L&rsquo;ordre d&rsquo;\u00e9criture modifie radicalement les r\u00e9sultats statistiques, ce qui rend le Type I inadapt\u00e9 \u00e0 l&rsquo;ANCOVA standard.<\/li>\n<li><strong>Type II (Hi\u00e9rarchique ou Partiel) :<\/strong> L&rsquo;effet principal de chaque facteur est \u00e9valu\u00e9 apr\u00e8s ajustement de tous les autres facteurs et covariables de m\u00eame rang ou de rang inf\u00e9rieur, en excluant les termes d&rsquo;interaction d&rsquo;ordre sup\u00e9rieur. Cette approche est hautement recommand\u00e9e et universellement adopt\u00e9e lorsque l&rsquo;hypoth\u00e8se de parall\u00e9lisme des pentes est valid\u00e9e (absence d&rsquo;interaction <em>Groupe &times; Covariable<\/em>).<\/li>\n<li><strong>Type III (Marginal) :<\/strong> Chaque terme est \u00e9valu\u00e9 apr\u00e8s contr\u00f4le de l&rsquo;ensemble des autres termes du mod\u00e8le, y compris les interactions potentielles. C&rsquo;est l&rsquo;approche par d\u00e9faut de logiciels propri\u00e9taires tels que SPSS, mais elle suscite des controverses math\u00e9matiques en pr\u00e9sence d&rsquo;interactions fortes du fait de la violation du principe de marginalit\u00e9 hi\u00e9rarchique de Nelder.<\/li>\n<\/ul>\n<p>Pour ex\u00e9cuter un test omnibus non biais\u00e9 en ad\u00e9quation avec la validation pr\u00e9alable de l&rsquo;homog\u00e9n\u00e9it\u00e9 des pentes, l&rsquo;analyste fait appel \u00e0 la fonction <code>anova_lm<\/code> de Statsmodels en renseignant explicitement le param\u00e8tre <code>typ=2<\/code> :<\/p>\n<p><code>table_anova_type2 = anova_lm(modele_ols, typ=2)<\/code><br \/>\n<code>print(table_anova_type2)<\/code><\/p>\n<p>Cette commande g\u00e9n\u00e8re le test <em>F<\/em> omnibus exact de l&rsquo;effet principal du traitement, garantissant que l&rsquo;ordonnancement scriptural des termes dans la formule Patsy (ex. : <code>PostTest ~ PreTest + C(Groupe)<\/code> ou <code>PostTest ~ C(Groupe) + PreTest<\/code>) n&rsquo;aura aucun impact pernicieux sur les valeurs inf\u00e9rentielles d\u00e9livr\u00e9es.<\/p>\n<h2>9. Calcul et comparaison des moyennes marginales ajust\u00e9es<\/h2>\n<h3>9.1 Estimation des moyennes marginales (Estimated Marginal Means)<\/h3>\n<p>La simple contemplation de l&rsquo;effet omnibus significatif issu du test <em>F<\/em> de l&rsquo;ANCOVA ne suffit pas \u00e0 circonscrire pr\u00e9cis\u00e9ment la nature clinique ou p\u00e9dagogique des r\u00e9sultats. L&rsquo;exp\u00e9rimentateur doit imp\u00e9rativement rapporter les moyennes marginales estim\u00e9es (aussi appel\u00e9es <em>least-squares means<\/em>). Les moyennes brutes observ\u00e9es sont trompeuses, car elles int\u00e8grent la fluctuation stochastique ou le d\u00e9s\u00e9quilibre structurel li\u00e9 \u00e0 la covariable au point de d\u00e9part.<\/p>\n<p>Le calcul computationnel des moyennes ajust\u00e9es requiert de projeter le mod\u00e8le lin\u00e9aire en fixant artificiellement la valeur de la covariable continue \u00e0 sa moyenne arithm\u00e9tique globale calcul\u00e9e sur l&rsquo;ensemble de la cohorte (<em>X&#772;<sub>..<\/sub><\/em>). Sous Python, cette op\u00e9ration de calage s&rsquo;impl\u00e9mente \u00e9l\u00e9gamment en g\u00e9n\u00e9rant un DataFrame synth\u00e9tique repr\u00e9sentatif, puis en sollicitant la m\u00e9thode de pr\u00e9diction du mod\u00e8le Statsmodels :<\/p>\n<p><code>moyenne_globale_pre = df_etude['PreTest'].mean()<\/code><br \/>\n<code>df_predict = pd.DataFrame({<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>'Groupe': ['Traditionnel', 'Actif', 'Microlearning'],<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>'PreTest': [moyenne_globale_pre, moyenne_globale_pre, moyenne_globale_pre]<\/code><br \/>\n<code>})<\/code><br \/>\n<code>predictions = modele_ols.get_prediction(df_predict)<\/code><br \/>\n<code>df_emm = predictions.summary_frame(alpha=0.05)<\/code><br \/>\n<code>df_emm['Groupe'] = df_predict['Groupe']<\/code><br \/>\n<code>df_emm = df_emm[['Groupe', 'mean', 'mean_se', 'mean_ci_lower', 'mean_ci_upper']]<\/code><br \/>\n<code>df_emm.columns = ['Groupe', 'Moyenne_Ajustee', 'Erreur_Type', 'IC_Bas_95', 'IC_Haut_95']<\/code><br \/>\n<code>print(df_emm)<\/code><\/p>\n<p>Ce tableau fournit non seulement la moyenne rectifi\u00e9e pour chaque groupe d&rsquo;apprentissage, mais \u00e9galement l&rsquo;erreur-type de pr\u00e9diction et les intervalles de confiance \u00e0 95 % associ\u00e9s. Il permet de quantifier l&rsquo;amplitude r\u00e9elle des \u00e9carts de performance nets entre les approches didactiques une fois purg\u00e9e l&rsquo;h\u00e9t\u00e9rog\u00e9n\u00e9it\u00e9 initiale des \u00e9tudiants.<\/p>\n<h3>9.2 Comparaisons par paires post-hoc<\/h3>\n<p>Lorsque la variable ind\u00e9pendante comprend plus de deux modalit\u00e9s (ce qui est le cas de notre facteur \u00e0 trois niveaux), un test <em>F<\/em> omnibus statistiquement significatif atteste qu&rsquo;au moins deux groupes diff\u00e8rent mutuellement, sans r\u00e9v\u00e9ler pr\u00e9cis\u00e9ment quelles paires s&rsquo;\u00e9cartent l&rsquo;une de l&rsquo;autre. L&rsquo;ex\u00e9cution de comparaisons par paires (<em>post-hoc tests<\/em>) devient indispensable.<\/p>\n<p>Toutefois, ex\u00e9cuter une multitude de tests <em>t<\/em> bilat\u00e9raux conventionnels d\u00e9grade gravement le taux d&rsquo;erreur par famille d&rsquo;hypoth\u00e8ses (<em>family-wise error rate<\/em>). Pour pr\u00e9server l&rsquo;inflation de l&rsquo;erreur de Type I au seuil nominal de &alpha; = 0.05, des proc\u00e9dures d&rsquo;ajustement de la valeur critique <em>p<\/em> doivent imp\u00e9rativement intervenir. Les approches les plus courantes sont la correction conservative de Bonferroni ou la proc\u00e9dure s\u00e9quentielle par paliers de Holm-Bonferroni. La biblioth\u00e8que Pingouin propose une m\u00e9thode puissante permettant d&rsquo;effectuer ces contrastes directement \u00e0 partir des r\u00e9sidus de l&rsquo;ajustement de la covariable :<\/p>\n<p><code>posthoc = pg.pairwise_tests(data=df_etude, dv='PostTest', between='Groupe',<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>covar='PreTest', padjust='bonf')<\/code><br \/>\n<code>print(posthoc[['A', 'B', 'T', 'dof', 'p-unc', 'p-corr', 'hedges']])<\/code><\/p>\n<p>Dans ce tableau, <code>p-corr<\/code> indique la valeur critique rectifi\u00e9e par la m\u00e9thode de Bonferroni. L&rsquo;analyste examine ainsi si la m\u00e9thode du <em>Microlearning<\/em> surpasse significativement l&rsquo;apprentissage <em>Actif<\/em>, et si ces deux modalit\u00e9s surpassent individuellement l&rsquo;enseignement <em>Traditionnel<\/em>. Les intervalles de confiance \u00e0 95 % des diff\u00e9rences moyennes de contrastes doivent accompagner syst\u00e9matiquement ces d\u00e9ductions.<\/p>\n<h2>10. Quantification de l&rsquo;amplitude de l&rsquo;effet<\/h2>\n<h3>10.1 Calcul de l&rsquo;\u00eata-carr\u00e9 partiel<\/h3>\n<p>Sous l&rsquo;impulsion du mouvement en faveur de la rigueur m\u00e9thodologique et de la r\u00e9plication en sciences psychologiques, le seul \u00e9talage d&rsquo;une valeur <em>p<\/em> statistiquement significative est aujourd&rsquo;hui jug\u00e9 totalement indigent par les comit\u00e9s de lecture internationaux. Une valeur <em>p<\/em> informe exclusivement sur la plausibilit\u00e9 de l&rsquo;hypoth\u00e8se nulle au regard de la taille d&rsquo;\u00e9chantillon, mais ne dit absolument rien de l&rsquo;ampleur pragmatique de l&rsquo;effet d\u00e9couvert. L&rsquo;indice standardis\u00e9 d&rsquo;amplitude d&rsquo;effet pr\u00e9\u00e9minent associ\u00e9 \u00e0 l&rsquo;ANCOVA est l&rsquo;\u00eata-carr\u00e9 partiel (&eta;<sub>p<\/sub><sup>2<\/sup>).<\/p>\n<p>Math\u00e9matiquement, l&rsquo;\u00eata-carr\u00e9 partiel indexe la proportion de la variance totale non attribuable aux autres pr\u00e9dicteurs qui est sp\u00e9cifiquement absorb\u00e9e par le facteur exp\u00e9rimental :<\/p>\n<p><em>&eta;<sub>p<\/sub><sup>2<\/sup> = SS<sub>Effet<\/sub> \/ (SS<sub>Effet<\/sub> + SS<sub>R\u00e9siduelle<\/sub>)<\/em><\/p>\n<p>Dans les sorties tabulaires de Pingouin, cette m\u00e9trique est automatiquement renseign\u00e9e dans la colonne <code>np2<\/code>. Si l&rsquo;on recourt \u00e0 la mod\u00e9lisation sous Statsmodels, le calcul vectoriel s&rsquo;op\u00e8re instantan\u00e9ment \u00e0 partir de la table d&rsquo;ANOVA :<\/p>\n<p><code>ss_groupe = table_anova_type2.loc['C(Groupe)', 'sum_sq']<\/code><br \/>\n<code>ss_residus = table_anova_type2.loc['Residual', 'sum_sq']<\/code><br \/>\n<code>eta_p2 = ss_groupe \/ (ss_groupe + ss_residus)<\/code><br \/>\n<code>print(f\"Eta-carre partiel : {eta_p2:.4f}\")<\/code><\/p>\n<p>Pour l&rsquo;interpr\u00e9tation th\u00e9orique de cet indice dans le champ des sciences humaines, les directives s\u00e9mantiques canoniques propos\u00e9es par <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Jacob_Cohen_(statistician)\">Jacob Cohen (1988)<\/a> fournissent les points d&rsquo;ancrage suivants :<\/p>\n<ul>\n<li><strong>Effet mineur (faible) :<\/strong> &eta;<sub>p<\/sub><sup>2<\/sup> &approx; 0.01 (le facteur explique 1 % de la variance r\u00e9siduelle).<\/li>\n<li><strong>Effet interm\u00e9diaire (moyen) :<\/strong> &eta;<sub>p<\/sub><sup>2<\/sup> &approx; 0.06 (le facteur explique 6 % de la variance r\u00e9siduelle).<\/li>\n<li><strong>Effet majeur (large) :<\/strong> &eta;<sub>p<\/sub><sup>2<\/sup> &ge; 0.14 (le facteur explique 14 % ou plus de la variance r\u00e9siduelle).<\/li>\n<\/ul>\n<h3>10.2 Mesures alternatives de la taille d&rsquo;effet<\/h3>\n<p>Bien que l&rsquo;\u00eata-carr\u00e9 partiel demeure universellement pl\u00e9biscit\u00e9 par les revues affili\u00e9es \u00e0 l&rsquo;APA, il pr\u00e9sente un biais syst\u00e9matique bien document\u00e9 en m\u00e9trologie statistique : il surestime la proportion r\u00e9elle de variance expliqu\u00e9e au sein de la population globale, un ph\u00e9nom\u00e8ne particuli\u00e8rement pernicieux lorsque la taille d&rsquo;\u00e9chantillon <em>N<\/em> est r\u00e9duite. Pour surmonter cet \u00e9cueil, de nombreux m\u00e9thodologistes pr\u00e9conisent l&rsquo;usage de l&rsquo;om\u00e9ga-carr\u00e9 partiel (&omega;<sub>p<\/sub><sup>2<\/sup>), un estimateur moins biais\u00e9 fond\u00e9 sur les carr\u00e9s moyens :<\/p>\n<p><em>&omega;<sub>p<\/sub><sup>2<\/sup> = (DF<sub>Effet<\/sub> &times; (MS<sub>Effet<\/sub> &#8211; MS<sub>R\u00e9siduelle<\/sub>)) \/ (DF<sub>Effet<\/sub> &times; MS<sub>Effet<\/sub> + (N &#8211; DF<sub>Effet<\/sub>) &times; MS<sub>R\u00e9siduelle<\/sub>)<\/em><\/p>\n<p>Une impl\u00e9mentation computationnelle directe sous Python s&rsquo;\u00e9crit :<\/p>\n<p><code>df_effet = table_anova_type2.loc['C(Groupe)', 'df']<\/code><br \/>\n<code>ms_effet = table_anova_type2.loc['C(Groupe)', 'sum_sq'] \/ df_effet<\/code><br \/>\n<code>ms_res = table_anova_type2.loc['Residual', 'sum_sq'] \/ table_anova_type2.loc['Residual', 'df']<\/code><br \/>\n<code>n_total = len(df_etude)<\/code><br \/>\n<code>omega_p2 = (df_effet * (ms_effet - ms_res)) \/ (df_effet * ms_effet + (n_total - df_effet) * ms_res)<\/code><br \/>\n<code>print(f\"Omega-carre partiel : {omega_p2:.4f}\")<\/code><\/p>\n<p>Parall\u00e8lement, lors de la conduite des contrastes post-hoc par paires, la formulation du <em>d<\/em> de Cohen standardis\u00e9 ou du <em>g<\/em> de Hedges ajust\u00e9 doit s&rsquo;appuyer sur l&rsquo;\u00e9cart-type r\u00e9siduel commun issu du mod\u00e8le d&rsquo;ANCOVA (<em>s<sub>pooled<\/sub> = &radic;MS<sub>R\u00e9siduelle<\/sub><\/em>) plut\u00f4t que sur les \u00e9carts-types bruts non ajust\u00e9s des sous-\u00e9chantillons. Cette d\u00e9marche assure une parfaite coh\u00e9rence math\u00e9matique entre le test omnibus et les \u00e9preuves de comparaisons multiples.<\/p>\n<h2>11. Restitution acad\u00e9mique des conclusions selon les normes APA<\/h2>\n<h3>11.1 Formatage textuel des inf\u00e9rences statistiques<\/h3>\n<p>La diffusion des r\u00e9sultats d&rsquo;une analyse de covariance dans une publication savante ob\u00e9it aux normes r\u00e9dactionnelles strictes \u00e9nonc\u00e9es dans la 7e \u00e9dition du manuel de style de l&rsquo;APA. La restitution scripturale doit int\u00e9grer harmonieusement la description des contr\u00f4les pr\u00e9liminaires, l&rsquo;expression formelle de la statistique de test avec ses degr\u00e9s de libert\u00e9, la probabilit\u00e9 critique exacte (et non une simple dichotomie <em>p<\/em> &lt; 0.05), la m\u00e9trique de taille d&rsquo;effet, ainsi que le rappel explicite des moyennes marginales ajust\u00e9es accompagn\u00e9es de leur indice d&rsquo;erreur.<\/p>\n<p>Un mod\u00e8le de r\u00e9daction canonique en langue fran\u00e7aise se formule de la mani\u00e8re suivante :<\/p>\n<p><em>\u00ab Une analyse de covariance (ANCOVA) univari\u00e9e inter-sujets a \u00e9t\u00e9 conduite afin d&rsquo;examiner l&rsquo;impact de la m\u00e9thode didactique (Traditionnel vs Actif vs Microlearning) sur le score final d&rsquo;acquisition statistique (PostTest), en contr\u00f4lant statistiquement le niveau de comp\u00e9tence initial \u00e9valu\u00e9 au pr\u00e9-test (PreTest). L&rsquo;\u00e9valuation des postulats a attest\u00e9 de la normalit\u00e9 des r\u00e9sidus du mod\u00e8le (Shapiro-Wilk W = 0.991, p = 0.452) et de l&rsquo;homog\u00e9n\u00e9it\u00e9 des variances r\u00e9siduelles (test de Levene centr\u00e9 sur la m\u00e9diane, F(2, 147) = 0.843, p = 0.432). Par ailleurs, l&rsquo;absence d&rsquo;interaction statistiquement significative entre la covariable et le facteur exp\u00e9rimental a confirm\u00e9 le postulat d&rsquo;homog\u00e9n\u00e9it\u00e9 des pentes de r\u00e9gression, F(2, 144) = 0.612, p = 0.544. \u00bb<\/em><\/p>\n<p><em>\u00ab Apr\u00e8s contr\u00f4le statistique de l&rsquo;influence du score pr\u00e9-test, F(1, 146) = 284.15, p &lt; 0.001, &eta;<sub>p<\/sub><sup>2<\/sup> = 0.661, un effet principal hautement significatif du dispositif p\u00e9dagogique est observ\u00e9 sur les performances finales, F(2, 146) = 38.74, p &lt; 0.001, &eta;<sub>p<\/sub><sup>2<\/sup> = 0.347 (&omega;<sub>p<\/sub><sup>2<\/sup> = 0.338). Les moyennes marginales ajust\u00e9es indiquent une sup\u00e9riorit\u00e9 de l&rsquo;apprentissage par microlearning (M<sub>adj<\/sub> = 56.42, SE = 0.71) par rapport \u00e0 l&rsquo;apprentissage actif (M<sub>adj<\/sub> = 52.18, SE = 0.70) et \u00e0 l&rsquo;enseignement traditionnel (M<sub>adj<\/sub> = 47.35, SE = 0.71). Les contrastes post-hoc ajust\u00e9s par la proc\u00e9dure de Bonferroni r\u00e9v\u00e8lent que l&rsquo;ensemble des comparaisons par paires s&rsquo;av\u00e8re statistiquement significatif (toutes les p &lt; 0.001). \u00bb<\/em><\/p>\n<h3>11.2 Conception de tableaux et graphiques publiables<\/h3>\n<p>La mise en forme tabulaire aux normes \u00e9ditoriales acad\u00e9miques proscrit formellement les lignes de quadrillage verticales et requiert un agencement \u00e9pur\u00e9 compos\u00e9 exclusivement de trois lignes horizontales majeures (au-dessus du bloc d&rsquo;en-t\u00eate, sous le bloc d&rsquo;en-t\u00eate et sous la table de donn\u00e9es). Le tableau synth\u00e9tique d&rsquo;ANCOVA doit r\u00e9unir de mani\u00e8re concise les colonnes <em>Source<\/em>, <em>Somme des carr\u00e9s<\/em> (<em>SS<\/em>), <em>Degr\u00e9s de libert\u00e9<\/em> (<em>ddl<\/em>), <em>Carr\u00e9s moyens<\/em> (<em>MS<\/em>), statistique <em>F<\/em>, probabilit\u00e9 critique <em>p<\/em> et <em>&eta;<sub>p<\/sub><sup>2<\/sup><\/em>.<\/p>\n<p>Sur le plan iconographique, la repr\u00e9sentation de r\u00e9f\u00e9rence ne repose pas sur les moyennes observ\u00e9es brutes, mais sur un diagramme \u00e0 barres d&rsquo;erreur repr\u00e9sentant sp\u00e9cifiquement les moyennes marginales estim\u00e9es (EMMs) accompagn\u00e9es de leurs intervalles de confiance \u00e0 95 %. L&rsquo;adjonction de crochets de comparaison annot\u00e9s de symboles typographiques conventionnels (ex. : *** pour <em>p<\/em> &lt; 0.001) parach\u00e8ve l&rsquo;efficacit\u00e9 visuelle de la figure. Le code Python suivant mat\u00e9rialise cette construction graphique de standing \u00e9ditorial :<\/p>\n<p><code>plt.figure(figsize=(8, 6))<\/code><br \/>\n<code>x_coords = np.arange(len(df_emm))<\/code><br \/>\n<code>erreurs = df_emm['Moyenne_Ajustee'] - df_emm['IC_Bas_95']<\/code><br \/>\n<code>plt.errorbar(x=x_coords, y=df_emm['Moyenne_Ajustee'], yerr=erreurs, fmt='o',<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>color='navy', ecolor='firebrick', elinewidth=2, capsize=6, markersize=8)<\/code><br \/>\n<code>plt.xticks(x_coords, df_emm['Groupe'], fontsize=11)<\/code><br \/>\n<code>plt.ylabel(\"Score Post-Test ajust\u00e9 (Moyennes marginales)\", fontsize=12)<\/code><br \/>\n<code>plt.xlabel(\"Dispositif didactique exp\u00e9rimental\", fontsize=12)<\/code><br \/>\n<code>plt.title(\"Moyennes marginales estim\u00e9es et IC \u00e0 95 % apr\u00e8s contr\u00f4le du Pr\u00e9-Test\", fontsize=13)<\/code><br \/>\n<code>plt.ylim(40, 65)<\/code><br \/>\n<code>plt.grid(axis='y', linestyle=':', alpha=0.6)<\/code><br \/>\n<code>plt.tight_layout()<\/code><br \/>\n<code>plt.show()<\/code><\/p>\n<h2>12. Diagnostic des anomalies et approches m\u00e9thodologiques alternatives<\/h2>\n<h3>12.1 Strat\u00e9gies en cas de non-respect des postulats classiques<\/h3>\n<p>Lorsque la confrontation empirique aux donn\u00e9es r\u00e9v\u00e8le une violation patente des postulats param\u00e9triques \u00e9l\u00e9mentaires, l&rsquo;obstination \u00e0 utiliser l&rsquo;ANCOVA ordinaire compromet irr\u00e9m\u00e9diablement la sinc\u00e9rit\u00e9 des d\u00e9ductions inf\u00e9rentielles. Plusieurs voies de rem\u00e9diation s&rsquo;offrent au m\u00e9thodologiste selon la nature exacte de l&rsquo;anomalie d\u00e9tect\u00e9e.<\/p>\n<p>Face \u00e0 une d\u00e9viance marqu\u00e9e de la normalit\u00e9 ou \u00e0 une asym\u00e9trie substantielle de la variable d\u00e9pendante, l&rsquo;application d&rsquo;une transformation math\u00e9matique stabilisatrice de variance constitue un premier recours \u00e9prouv\u00e9. Les transformations logarithmique (<em>log(Y)<\/em>), racine carr\u00e9e (<em>&radic;Y<\/em>) ou la m\u00e9thode param\u00e9trique automatis\u00e9e de <a rel=\"noopener noreferrer\" href=\"https:\/\/en.wikipedia.org\/wiki\/Box%E2%80%93Cox_distribution\">Box-Cox<\/a> permettent fr\u00e9quemment de renormaliser les r\u00e9sidus d&rsquo;\u00e9chantillonnage et de r\u00e9sorber les singularit\u00e9s de distribution.<\/p>\n<p>En pr\u00e9sence d&rsquo;une h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 confirm\u00e9e de la variance r\u00e9siduelle ne pouvant \u00eatre corrig\u00e9e par une transformation d&rsquo;\u00e9chelle, l&rsquo;abandon des estimateurs classiques au profit d&rsquo;estimateurs de covariance robustes \u00e0 l&rsquo;h\u00e9t\u00e9rosc\u00e9dasticit\u00e9 s&rsquo;av\u00e8re salutaire. Statsmodels offre une impl\u00e9mentation imm\u00e9diate des estimateurs dits \u00ab sandwich \u00bb de Huber-White, notamment la correction HC3 (recommand\u00e9e par Long et Ervin pour les \u00e9chantillons de taille inf\u00e9rieure \u00e0 250) :<\/p>\n<p><code>modele_robuste = smf.ols('PostTest ~ C(Groupe) + PreTest', data=df_etude).fit(cov_type='HC3')<\/code><br \/>\n<code>print(modele_robuste.summary())<\/code><\/p>\n<p>Enfin, lorsque les donn\u00e9es d\u00e9fient radicalement tout traitement param\u00e9trique en raison d&rsquo;\u00e9chelles ordinales s\u00e9v\u00e8res ou de valeurs aberrantes extr\u00eames inextinguibles, l&rsquo;alternative r\u00e9side dans l&rsquo;analyse de covariance non param\u00e9trique bas\u00e9e sur les rangs, historiquement th\u00e9oris\u00e9e par E. A. Quade (1967). Le test de Quade proc\u00e8de en substituant aux mesures brutes leurs rangs respectifs, puis en r\u00e9gressant les rangs de <em>Y<\/em> sur les rangs de <em>X<\/em> avant d&rsquo;ex\u00e9cuter une ANOVA conventionnelle \u00e0 un facteur sur les r\u00e9sidus de rangs r\u00e9sultants.<\/p>\n<h3>12.2 Techniques de r\u00e9\u00e9chantillonnage et perspectives modernes<\/h3>\n<p>Au confluent des d\u00e9veloppements computationnels r\u00e9cents et de l&rsquo;\u00e9pist\u00e9mologie de la robustesse, les m\u00e9thodes computationnelles intensives de r\u00e9\u00e9chantillonnage s&rsquo;affirment comme des alternatives privil\u00e9gi\u00e9es aux inf\u00e9rences param\u00e9triques classiques. La technique du bootstrap r\u00e9siduel non param\u00e9trique s&rsquo;av\u00e8re particuli\u00e8rement adapt\u00e9e \u00e0 l&rsquo;analyse de covariance. Elle consiste \u00e0 r\u00e9\u00e9chantillonner avec remise les r\u00e9sidus du mod\u00e8le ajust\u00e9, \u00e0 r\u00e9g\u00e9n\u00e9rer it\u00e9rativement de pseudo-scores de sortie d\u00e9pendants, et \u00e0 recalculer les statistiques de test sur plusieurs milliers d&rsquo;it\u00e9rations (ex. : <em>B<\/em> = 5000) afin d&rsquo;engendrer une distribution empirique sans pr\u00e9suppos\u00e9 de normalit\u00e9.<\/p>\n<p>Un algorithme g\u00e9n\u00e9rique d&rsquo;amor\u00e7age (<em>bootstrapping<\/em>) pour extraire l&rsquo;intervalle de confiance robuste de la diff\u00e9rence entre deux moyennes ajust\u00e9es s&rsquo;articule ais\u00e9ment sous Python \u00e0 l&rsquo;aide d&rsquo;une simple boucle vectoris\u00e9e :<\/p>\n<p><code>B = 2000<\/code><br \/>\n<code>n_obs = len(df_etude)<\/code><br \/>\n<code>y_pred = modele_ols.fittedvalues<\/code><br \/>\n<code>resids = modele_ols.resid<\/code><br \/>\n<code>diff_boot = []<\/code><br \/>\n<code>for _ in range(B):<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>boot_resids = np.random.choice(resids, size=n_obs, replace=True)<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>df_etude['Post_Boot'] = y_pred + boot_resids<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>mod_b = smf.ols('Post_Boot ~ C(Groupe) + PreTest', data=df_etude).fit()<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>diff = mod_b.params['C(Groupe)[T.Microlearning]'] - mod_b.params['C(Groupe)[T.Actif]']<\/code><br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;<code>diff_boot.append(diff)<\/code><br \/>\n<code>ic_bootstrap = np.percentile(diff_boot, [2.5, 97.5])<\/code><br \/>\n<code>print(f\"Intervalle de confiance Bootstrap 95 % de la difference : {ic_bootstrap}\")<\/code><\/p>\n<p>Au-del\u00e0 du paradigme fr\u00e9quentiste, la mod\u00e9lisation statistique computationnelle contemporaine s&rsquo;oriente r\u00e9solument vers le cadre bay\u00e9sien. Gr\u00e2ce \u00e0 des \u00e9cosyst\u00e8mes probabilistes tels que <a rel=\"noopener noreferrer\" href=\"https:\/\/www.pymc.io\/\">PyMC<\/a>, les chercheurs peuvent formaliser l&rsquo;ANCOVA sous la forme d&rsquo;un mod\u00e8le hi\u00e9rarchique probabiliste continu. L&rsquo;attribution de distributions <em>a priori<\/em> (<em>priors<\/em>) r\u00e9gularis\u00e9es sur les coefficients et sur l&rsquo;\u00e9cart-type d&rsquo;erreur permet de g\u00e9n\u00e9rer des distributions post\u00e9rieures compl\u00e8tes via des algorithmes d&rsquo;\u00e9chantillonnage de Monte-Carlo par cha\u00eenes de Markov (MCMC). Cette approche \u00e9mancipe d\u00e9finitivement le chercheur de la tyrannie binaire du seuil <em>p<\/em> &lt; 0.05 et autorise des \u00e9nonc\u00e9s de probabilit\u00e9 directe quant \u00e0 la sup\u00e9riorit\u00e9 substantielle d&rsquo;un protocole d&rsquo;intervention psychologique ou p\u00e9dagogique.<\/p>\n<p>La rigueur m\u00e9thodologique, la pr\u00e9-enregistrement des hypoth\u00e8ses de recherche, la v\u00e9rification intransigeante des postulats statistiques et la transparence du code d&rsquo;analyse sous Python constituent les garants irrempla\u00e7ables d&rsquo;une science psychologique robuste, cumulative et r\u00e9plicable.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul>\n<li>American Psychological Association. (2020). <em>Publication manual of the American Psychological Association<\/em> (7th ed.). American Psychological Association. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1037\/0000165-000\">https:\/\/doi.org\/10.1037\/0000165-000<\/a><\/li>\n<li>Cohen, J. (1988). <em>Statistical power analysis for the behavioral sciences<\/em> (2nd ed.). Lawrence Erlbaum Associates.<\/li>\n<li>Fisher, R. A. (1932). <em>Statistical methods for research workers<\/em> (4th ed.). Oliver and Boyd.<\/li>\n<li>Kline, R. B. (2015). <em>Principles and practice of structural equation modeling<\/em> (4th ed.). Guilford Publications.<\/li>\n<li>Miller, G. A., &amp; Chapman, J. P. (2001). Misunderstanding analysis of covariance. <em>Journal of Abnormal Psychology<\/em>, 110(1), 40\u201348. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1037\/0021-843X.110.1.40\">https:\/\/doi.org\/10.1037\/0021-843X.110.1.40<\/a><\/li>\n<li>Nelder, J. A. (1977). A reformulation of linear models. <em>Journal of the Royal Statistical Society: Series A (General)<\/em>, 140(1), 48\u201377. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.2307\/2344517\">https:\/\/doi.org\/10.2307\/2344517<\/a><\/li>\n<li>Quade, D. (1967). Rank analysis of covariance. <em>Journal of the American Statistical Association<\/em>, 62(320), 1187\u20131203. <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.1080\/01621459.1967.10500925\">https:\/\/doi.org\/10.1080\/01621459.1967.10500925<\/a><\/li>\n<li>Seabold, S., &amp; Perktold, J. (2010). Statsmodels: Econometric and statistical modeling with Python. In <em>Proceedings of the 9th Python in Science Conference<\/em> (pp. 92\u201396). <a rel=\"noopener noreferrer\" href=\"https:\/\/doi.org\/10.25080\/Majora-92bf1922-011\">https:\/\/doi.org\/10.25080\/Majora-92bf1922-011<\/a><\/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<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Guide acad\u00e9mique complet pour r\u00e9aliser une analyse de covariance (ANCOVA) en Python avec statsmodels et pingouin dans le cadre des sciences psychologiques.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","template":"","categories":[1829,1994],"tags":[4402,5010,16,2468,2903],"class_list":["post-4062","psych_stat","type-psych_stat","status-publish","hentry","category-methodologie-statistique","category-psychologie-experimentale","tag-ancova","tag-pingouin","tag-psychometrie","tag-python","tag-statsmodels"],"_links":{"self":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/4062","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=4062"}],"version-history":[{"count":0,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=\/wp\/v2\/psych_stat\/4062\/revisions"}],"wp:attachment":[{"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4062"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4062"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/french.arabpsychology.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4062"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}