Comment effectuer une ANCOVA en Python

Guide académique complet pour réaliser une analyse de covariance (ANCOVA) en Python avec statsmodels et pingouin dans le cadre des sciences psychologiques.

Dr. Mohammed Looti Universitaire et chercheur spécialisé en psychologie
PUBLIÉ
Révisé scientifiquement · Dr. Marwa Abd-Alazim · septembre 11, 2026
Revu médicalement et scientifiquement Vérifié le : septembre 11, 2026
Dr. Marwa Abd-Alazim PhD in Psychology
Faculty Member • University of Kerbala
Critères d'évaluation et normes cliniques

Ce contenu fait l'objet d'un examen scientifique rigoureux et de normes éditoriales médicales afin de garantir l'exactitude clinique et la conformité aux directives fondées sur des preuves (APA / OMS).

L’analyse de covariance, universellement désignée sous l’acronyme ANCOVA (de l’anglais Analysis of Covariance), constitue l’une des pierres angulaires de la méthodologie inférentielle moderne appliquée aux sciences du comportement, à la neuropsychologie, aux sciences de l’éducation et à la biométrie. En combinant l’analyse de variance factorielle à la régression linéaire multiple, cette technique statistique permet d’examiner l’effet d’une ou plusieurs variables indépendantes catégorielles sur une variable réponse continue, tout en neutralisant par ajustement mathématique l’influence perturbatrice d’une ou de plusieurs variables continues concomitantes, désignées sous le vocable de covariables. Ce contrôle statistique a posteriori s’avère particulièrement crucial dans les disciplines où l’assignation strictement aléatoire des participants à des groupes expérimentaux se heurte à des contraintes éthiques, logistiques ou écologiques indépassables.

Historiquement développée par Ronald Aylmer Fisher dans les années 1930 pour affiner la précision des expérimentations agronomiques, l’ANCOVA a trouvé dans les sciences psychologiques un terrain d’application fertile, notamment pour la modélisation des protocoles d’intervention pré-test/post-test. En soustrayant de la variance d’erreur la part attribuable aux différences interindividuelles initiales des sujets (telles que le quotient intellectuel, l’âge chronologique, le statut socio-économique ou le niveau d’anxiété basale), l’analyse de covariance augmente substantiellement la puissance statistique des tests d’hypothèses. Elle permet ainsi d’isoler avec une rigueur accrue l’effet causal propre d’une intervention thérapeutique ou d’une manipulation expérimentale.

À l’ère de la science ouverte et de la recherche computationnelle reproductible, le langage de programmation Python s’est imposé comme un vecteur d’analyse statistique de premier plan. Grâce à des modules hautement optimisés tels que Pandas, Pingouin et Statsmodels, les chercheurs disposent désormais d’un écosystème logiciel complet permettant d’exécuter l’ANCOVA, de vérifier empiriquement l’ensemble de ses postulats sous-jacents, d’estimer les moyennes marginales ajustées et de quantifier la taille d’effet selon les standards éditoriaux de l’American Psychological Association (APA). Ce guide didactique et méthodologique approfondi a pour vocation de vous accompagner pas à pas dans la mise en œuvre rigoureuse de l’ANCOVA sous Python, depuis ses fondations théoriques jusqu’au reporting académique final.

1. Fondements théoriques de l’ANCOVA en sciences psychologiques

1.1 Définition et objectifs de l’analyse de covariance

L’analyse de covariance repose sur le principe fondamental du contrôle statistique de la variance. Dans toute recherche expérimentale ou quasi-expérimentale, la variance observée sur la variable dépendante est la résultante de deux composantes majeures : la variance systématique, induite par les facteurs expérimentaux manipulés par le chercheur, et la variance non systématique, traditionnellement qualifiée d’erreur expérimentale ou résiduelle. Lorsque cette dernière est volumineuse, elle obscurcit les effets réels du traitement, augmentant drastiquement le risque de commettre une erreur de Type II, c’est-à-dire de conclure à l’absence d’effet alors qu’une différence existe dans la population parente.

D’un point de vue conceptuel et mathématique, l’ANCOVA s’érige à l’intersection exacte de l’analyse de variance (ANOVA) à un facteur et de la régression linéaire simple. Alors que l’ANOVA décompose la variance totale en variations inter-groupes et intra-groupes sur la base de prédicteurs nominaux, la régression modélise une relation fonctionnelle continue entre deux ou plusieurs dimensions quantitatives. L’ANCOVA intègre simultanément ces deux approches : elle partitionne la variabilité de la variable réponse en modélisant conjointement l’appartenance groupale (variable indépendante catégorielle) et la relation linéaire liant la variable réponse à la variable d’ajustement (covariable continue).

Dans les devis de recherche quasi-expérimentaux en psychologie clinique ou scolaire, où les groupes préexistent à l’étude (classes d’élèves, cohortes hospitalières), l’assignation aléatoire intégrale est impossible. Dès lors, les groupes diffèrent fréquemment sur des variables d’amont avant même l’administration du traitement. L’ANCOVA remplit alors une mission de réduction du biais d’assignation en ajustant statistiquement les scores de sortie comme si tous les participants avaient débuté l’expérimentation avec une valeur identique sur la covariable. Il convient toutefois de distinguer scrupuleusement la variable indépendante catégorielle (le facteur expérimental comprenant au moins deux modalités), la variable dépendante continue (le critère d’évaluation quantitatif) et la covariable (la mesure d’ajustement continue mesurée préalablement à l’administration du traitement).

1.2 Mécanisme mathématique sous-jacent du modèle linéaire général

L’ANCOVA s’inscrit rigoureusement dans le cadre unifié du Modèle Linéaire Général (MLG). L’équation formelle paramétrique s’énonce classiquement sous la forme suivante pour chaque observation individuelle :

Yij = μ + αi + β(Xij – X̄..) + εij

Dans cette formulation algébrique, Yij représente le score de la variable dépendante pour le j-ème participant au sein du i-ème groupe de traitement. Le terme μ désigne la moyenne générale théorique de la population, tandis que αi figure l’effet différentiel associé à la modalité i du facteur expérimental principal, soumis à la contrainte habituelle de sommabilité nulle (Σαi = 0). Le coefficient β constitue la pente de régression linéaire commune reliant la covariable X à la variable réponse Y. Le terme (Xij – X̄..) exprime l’écart de la mesure individuelle de la covariable par rapport à la moyenne globale d’échantillon X̄.., opération désignée sous le nom de centrage. Enfin, εij incarne le terme d’erreur résiduelle stochastique, présumé distribué normalement avec une espérance nulle et une variance constante σ2.

Sur le plan de la décomposition matricielle, la somme totale des carrés des écarts (SStotale) n’est plus simplement scindée en sommes des carrés inter-groupes et intra-groupes comme dans une ANOVA conventionnelle. Elle est partitionnée en trois entités distinctes : la somme des carrés imputable au facteur expérimental (SSfacteur), la somme des carrés expliquée linéairement par la covariable (SScovariable), et la somme des carrés résiduelle non expliquée (SSrésiduelle). En extrayant SScovariable de la variabilité résiduelle brute de l’ANOVA, le dénominateur de la statistique de test F de Fisher se trouve substantiellement comprimé, ce qui affine la sensibilité de l’épreuve.

Le mécanisme central de l’ANCOVA réside dans le calcul des moyennes de groupe ajustées, fréquemment qualifiées de moyennes marginales estimées (Estimated Marginal Means). Pour chaque groupe expérimental i, la moyenne ajustée Ȳ*i est obtenue en projetant la moyenne brute observée Ȳi sur la droite de régression commune évaluée à la moyenne globale de la covariable :

Ȳ*i = Ȳi – β(X̄i – X̄..)

Ce recalibrage algébrique neutralise tout déséquilibre préexistant entre les groupes sur la variable X. Si un groupe affichait un score moyen préliminaire supérieur à la moyenne collective, sa moyenne brute de sortie sera révisée à la baisse proportionnellement à la pente β, et inversement pour un groupe défavorisé au point de départ.

1.3 Pertinence méthodologique dans la recherche expérimentale

L’intérêt premier de l’analyse de covariance en recherche translationnelle et clinique réside dans le gain substantiel de puissance statistique qu’elle confère aux protocoles expérimentaux. Dans les recherches sur l’efficacité des psychothérapies cognitives et comportementales ou des remédiations neuropsychologiques, le recrutement de cohortes massives s’avère souvent restreint par les coûts humains et temporels. Dans un schéma ANOVA standard, une hétérogénéité prononcée des participants au niveau de base gonfle la variance d’erreur intra-groupe, réduisant la taille d’effet statistique perçue. En intégrant une covariable corrélée au critère d’au moins r = 0.30, l’ANCOVA absorbe une fraction notable de cette variance d’erreur, permettant de détecter des effets de traitement réels avec des tailles d’échantillon plus modestes.

Dans les devis longitudinaux comportant une mesure pré-test et post-test, l’inclusion du score pré-test comme covariable surpasse méthodologiquement l’analyse d’une simple variable de changement ou de gain brut (Post – Pré). Comme l’a démontré la littérature psychométrique, les scores de changement sont chroniquement affligés d’une faible fidélité de mesure et souffrent du phénomène pernicieux de régression vers la moyenne. L’ANCOVA sur les scores post-test avec ajustement du pré-test modélise mathématiquement la dépendance sérielle entre les temps de mesure tout en évitant les artefacts de surcorrection inhérents aux scores de différence soustractifs.

Enfin, l’ANCOVA permet de maîtriser rigoureusement les variables parasites ou confondantes inhérentes aux caractéristiques individuelles des participants. Qu’il s’agisse de l’âge chronologique dans les études sur le déclin mnésique, du niveau socio-éducatif des parents dans les évaluations des innovations pédagogiques, ou de l’anxiété-trait basale dans les protocoles d’exposition pharmacologique, l’insertion de ces paramètres continus permet d’assainir la comparaison factorielle. Elle garantit que la divergence finale observée entre les conditions expérimentales ne constitue pas un simple épiphénomène découlant d’une disparité sociodémographique ou cognitive initiale.

2. Configuration de l’environnement de calcul scientifique en Python

2.1 Sélection et installation des bibliothèques spécialisées

Pour mener à bien une analyse de covariance rigoureuse, reproductible et conforme aux standards internationaux, l’environnement de programmation Python s’appuie sur une suite synergique de bibliothèques scientifiques hautement spécialisées. Le socle fondamental de manipulation tabulaire et de calcul matriciel est assuré par NumPy et Pandas. Ces modules permettent d’importer, de structurer, d’indexer et d’effectuer des opérations vectorisées sur des volumes de données multidimensionnels avec des performances optimales.

Pour le traitement biostatistique direct et convivial, la bibliothèque Pingouin s’avère incontournable. Conçue explicitement pour les chercheurs en neurosciences et en psychologie, Pingouin propose une syntaxe épurée inspirée des conventions du logiciel R, synthétisant des résultats complexes sous la forme d’élégants DataFrames Pandas immédiatement exportables. La fonction dédiée à l’ANCOVA calcule automatiquement les sommes de carrés, les statistiques F, les degrés de liberté, ainsi que les tailles d’effet associées.

Pour une modélisation paramétrique avancée et une flexibilité totale dans l’écriture des contrastes, l’utilisation de Statsmodels est impérative. Cette bibliothèque implémente les modèles linéaires par moindres carrés ordinaires (Ordinary Least Squares, OLS) en employant la syntaxe symbolique introduite par Patsy. Elle donne accès au diagnostic microscopique de la régression, au calcul des sommes des carrés partielles de Type II et de Type III, ainsi qu’aux corrections d’hétéroscédasticité robustes. Enfin, l’exploration graphique et la validation visuelle des postulats reposent sur le binôme graphique formé par Matplotlib et Seaborn, qui offrent des fonctionnalités avancées pour tracer simultanément distributions, nuages de points multivariés et droites de régression conditionnelles.

L’installation de cet écosystème logiciel au sein de votre terminal ou invite de commande s’effectue simplement via le gestionnaire de paquets officiel de Python, en veillant à spécifier l’ensemble des modules requis dans une commande unifiée :

pip install numpy pandas scipy statsmodels pingouin matplotlib seaborn

2.2 Configuration du cadre de travail reproductible

L’intégrité de la démarche scientifique contemporaine exige une reproductibilité computationnelle absolue. En psychologie computationnelle, l’exécution d’analyses impliquant des rééchantillonnages statistiques, des simulations ou la génération de données synthétiques requiert la fixation stricte de la graine du générateur de nombres pseudo-aléatoires (random seed). L’omission de cette précaution élémentaire conduit inexorablement à des divergences marginales lors de la réplication des calculs par des tiers ou lors de la soumission éditoriale.

Sur le plan structurel, il est fortement recommandé d’isoler le projet de recherche dans un environnement virtuel étanche, qu’il soit orchestré par venv ou par le gestionnaire conda. Cette compartimentation logicielle prémunit l’analyste contre les conflits de versions entre bibliothèques, garantissant qu’une mise à jour logicielle ultérieure ne corrompra pas le pipeline d’analyse établi. L’initialisation d’un tel environnement virtuel sous environnement Unix ou Windows se déroule selon la procédure canonique :

python -m venv env_ancova
source env_ancova/bin/activate (sur macOS/Linux) ou env_ancovaScriptsactivate (sur Windows)

Au sommet du script Python principal, la configuration scripturale standard débute par l’importation ordonnée des modules et la définition de la graine aléatoire. Il convient également de verrouiller les options d’affichage de Pandas pour faciliter la lisibilité des matrices numériques et des tableaux de résultats statistiques :

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import pingouin as pg
import statsmodels.api as sm
import statsmodels.formula.api as smf
from statsmodels.stats.anova import anova_lm
from scipy import stats
np.random.seed(42)
pd.set_option('display.max_columns', 15)
pd.set_option('display.precision', 4)

3. Structuration et encodage des données empiriques

3.1 Création du jeu de données expérimental

Afin de concrétiser notre exposé par une démonstration pratique exhaustive, nous simulons une étude contrôlée et randomisée en psychologie de l’éducation évaluant l’efficacité comparée de trois dispositifs didactiques distincts sur l’acquisition de concepts complexes en statistiques. Les trois modalités de la variable indépendante catégorielle (Methode_Apprentissage) sont :

  • Traditionnel : Cours magistral descendant accompagné d’exercices sur support papier conventionnel.
  • Actif : Résolution collaborative de problèmes en petits groupes de pairs sous la supervision d’un tuteur.
  • Microlearning : Apprentissage fragmenté et distribué dans le temps via une application mobile interactive dotée d’algorithmes de répétition espacée.

L’échantillon comporte N = 150 étudiants universitaires, répartis équitablement à raison de 50 participants par condition d’apprentissage (dispositif équilibré). La variable dépendante continue (Score_PostTest) quantifie la performance finale à un examen standardisé noté de 0 à 100. La covariable continue (Score_PreTest) mesure les connaissances statistiques préalables des étudiants, évaluées lors d’un pré-test avant toute assignation expérimentale. La génération de ce jeu de données est programmée de manière à incorporer une corrélation substantielle entre le pré-test et le post-test (r ≈ 0.65), tout en matérialisant une supériorité pédagogique des méthodes actives et distribuées :

n_par_groupe = 50
groupes = ['Traditionnel', 'Actif', 'Microlearning']
data_list = []
for grp in groupes:
    pre = np.random.normal(loc=50, scale=10, size=n_par_groupe)
    if grp == 'Traditionnel':
        eff = 0
    elif grp == 'Actif':
        eff = 5
    else:
        eff = 9
    post = 15 + 0.65 * pre + eff + np.random.normal(loc=0, scale=5, size=n_par_groupe)
    df_grp = pd.DataFrame({'Groupe': grp, 'PreTest': pre, 'PostTest': post})
    data_list.append(df_grp)
df_etude = pd.concat(data_list, ignore_index=True)

3.2 Typage et validation de la structure tabulaire

Avant d’engager toute modélisation statistique, la vérification rigoureuse de la structure du tableau de données constitue une étape obligatoire du protocole méthodologique. En programmation Python, les variables catégorielles doivent être explicitement typées en tant que category ou object, tandis que les variables quantitatives doivent impérativement être formatées en types numériques à virgule flottante (float64). Une omission fréquente consiste à laisser une variable de traitement codée numériquement (ex. : 1, 2, 3) sous le format int64, ce qui inciterait Statsmodels à estimer une simple pente de régression linéaire continue au lieu de contrastes factoriels discrets.

L’encodage explicite de la variable factorielle et l’inspection de l’intégrité matricielle s’effectuent par les commandes :

df_etude['Groupe'] = df_etude['Groupe'].astype('category')
df_etude['Groupe'] = df_etude['Groupe'].cat.reorder_categories(['Traditionnel', 'Actif', 'Microlearning'], ordered=False)
df_etude['PreTest'] = df_etude['PreTest'].astype(float)
df_etude['PostTest'] = df_etude['PostTest'].astype(float)

Le contrôle des valeurs manquantes doit être systématique. Dans un devis expérimental, l’absence de données (Missing Completely At Random – MCAR, ou Missing At Random – MAR) peut altérer l’équilibre du plan factoriel. Le calcul df_etude.isna().sum() permet d’attester de l’exhaustivité des observations. Si des données manquantes étaient constatées, l’analyste devrait choisir entre une exclusion par liste (listwise deletion) si le volume est infinitésimal, ou une procédure d’imputation multiple par équations chaînées (MICE) si la perte d’informations menace la validité écologique de l’inférence.

4. Analyse exploratoire et inspection visuelle préalable

4.1 Calcul des statistiques descriptives stratifiées

L’analyse exploratoire des données constitue le préalable indispensable à toute entreprise inférentielle. Il s’agit en premier lieu de quantifier les mesures de tendance centrale (moyennes arithmétiques, médianes) et les indices de dispersion (écarts-types, écarts interquartiles) pour la variable dépendante et la covariable, conditionnellement à chaque niveau du facteur expérimental. Cette stratification permet de détecter immédiatement d’éventuelles asymétries de distribution ou des déséquilibres flagrants au niveau de base.

L’utilisation judicieuse de la méthode groupby() de Pandas combinée à agg() offre une synthèse tabulaire exhaustive :

stats_desc = df_etude.groupby('Groupe').agg({
    'PreTest': ['count', 'mean', 'std', 'median', lambda x: stats.iqr(x)],
    'PostTest': ['count', 'mean', 'std', 'median', lambda x: stats.iqr(x)]
})
stats_desc.columns = ['N', 'Moy_Pre', 'ET_Pre', 'Med_Pre', 'EIQ_Pre', 'N_Post', 'Moy_Post', 'ET_Post', 'Med_Post', 'EIQ_Post']

Au-delà des simples moyennes de groupe, il est impératif d’évaluer la force de l’association linéaire bivariée reliant la covariable à la variable dépendante au sein de chaque modalité factorielle. L’existence d’une corrélation de Pearson positive, substantielle et statistiquement significative (généralement comprise entre r = 0.40 et r = 0.80) atteste de la pertinence empirique de la covariable choisie. Par ailleurs, il convient de s’assurer du chevauchement suffisant des distributions de la covariable d’un groupe à l’autre (covariate overlap) : si les scores de pré-test d’un groupe étaient intégralement disjoints de ceux des autres groupes, toute tentative d’ajustement statistique par l’ANCOVA reposerait sur une extrapolation hors-échantillon mathématiquement invalide.

4.2 Représentation graphique exploratoire

La transcription graphique des distributions permet d’appréhender intuitivement la structure multidimensionnelle des données et d’identifier de potentielles valeurs aberrantes (outliers) bivariées. Une visualisation efficace combine la boîte à moustaches (boxplot) avec un diagramme de dispersion superposé présentant une légère gigue aléatoire (jitter) afin de conserver la perception de la densité d’échantillonnage individuelle sans occlusion visuelle.

Dans un second temps, le traçage d’un graphique en violon (violin plot) conditionnel permet d’examiner la symétrie et la multimodalité éventuelle des distributions de scores post-test pour chaque technique pédagogique. Cependant, la figure la plus cruciale pour l’analyse de covariance demeure le nuage de points bivarié superposant le PostTest en ordonnée et le PreTest en abscisse, stratifié par groupe de traitement et intégrant les droites d’ajustement linéaires locales calculées par la méthode des moindres carrés :

plt.figure(figsize=(10, 6))
sns.lmplot(x='PreTest', y='PostTest', hue='Groupe', data=df_etude, aspect=1.5,
           markers=['o', 's', '^'], palette='Set1', ci=95)
plt.title("Relation bivariée PreTest - PostTest par groupe pédagogique", fontsize=14)
plt.xlabel("Score Pré-test (Covariable)", fontsize=12)
plt.ylabel("Score Post-test (Variable Dépendante)", fontsize=12)
plt.grid(True, linestyle='--', alpha=0.5)
plt.show()

Ce graphique permet une appréciation visuelle directe de deux conditions structurales clés de l’ANCOVA : la linéarité locale de la relation entre les mesures, et le parallélisme apparent des trois droites de régression. Des pentes visuellement discordantes constitueraient une alerte immédiate signalant une potentielle violation de l’hypothèse d’homogénéité des pentes.

5. Vérification des postulats fondamentaux : normalité et homoscédasticité

5.1 Évaluation de la normalité des résidus du modèle

L’une des confusions conceptuelles les plus tenaces dans la littérature expérimentale consiste à exiger que la variable dépendante brute soit distribuée normalement au sein de chaque groupe. En réalité, le postulat de normalité du modèle linéaire général porte exclusivement sur les résidus d’échantillonnage (residuals), c’est-à-dire sur les écarts individuels entre les valeurs réelles observées et les valeurs conditionnelles prédites par l’équation d’ANCOVA globale :

eij = Yij – Ŷij

Pour extraire ces résidus sous Python, il est préconisé d’ajuster préalablement le modèle linéaire via Statsmodels. L’évaluation de leur normalité repose sur un double diagnostic, à la fois formel et graphique. Sur le plan formel, le test de Shapiro-Wilk constitue l’épreuve statistique de référence lorsque la taille d’échantillon globale n’excède pas quelques centaines de participants. Une valeur p supérieure au seuil canonique de 0.05 autorise à retenir l’hypothèse nulle d’adéquation à la loi gaussienne :

modele_prelim = smf.ols('PostTest ~ C(Groupe) + PreTest', data=df_etude).fit()
residus = modele_prelim.resid
shapiro_stat, shapiro_p = stats.shapiro(residus)

Puisque les tests d’hypothèse formels deviennent excessivement sensibles aux déviations triviales lorsque N augmente, ils doivent obligatoirement être corroborés par une inspection du diagramme quantile-quantile (Q-Q plot), où les quantiles empiriques des résidus standardisés sont projetés contre les quantiles théoriques d’une distribution normale standard :

fig, ax = plt.subplots(figsize=(6, 6))
sm.qqplot(residus, line='45', fit=True, ax=ax)
ax.set_title("Diagramme Q-Q des résidus du modèle d'ANCOVA")
plt.show()

L’analyste veillera également à chiffrer les coefficients d’asymétrie (skewness) et d’aplatissement (kurtosis). Des indices compris dans l’intervalle [-1, +1] garantissent que les inférences de l’ANCOVA demeureront particulièrement robustes, le test F de Fisher bénéficiant du théorème central limite pour les échantillons modérés à grands.

5.2 Contrôle de l’homoscédasticité de la variance

Le postulat d’homoscédasticité stipule que la variance des résidus d’erreur doit demeurer rigoureusement constante à travers toutes les combinaisons des niveaux factoriels et sur l’ensemble du continuum de la covariable :

Var(εij) = σ2 ∀ i, j

En présence d’hétéroscédasticité (variances résiduelles inégales), les estimateurs des moindres carrés ordinaires demeurent sans biais mais perdent leur efficacité statistique, ce qui engendre un biais sur les erreurs-types estimées et invalide le taux nominal d’erreur de Type I lors du test des ratios F.

L’égalité des variances inter-groupes s’examine traditionnellement à l’aide du test de Levene. Afin de préserver la robustesse du test face à d’éventuelles déviations mineures de normalité, il est fermement recommandé de centrer l’épreuve sur la médiane plutôt que sur la moyenne arithmétique (procédure de Brown-Forsythe), implémentée nativement dans la bibliothèque SciPy :

stat_levene, p_levene = stats.levene(
    df_etude[df_etude['Groupe'] == 'Traditionnel']['PostTest'],
    df_etude[df_etude['Groupe'] == 'Actif']['PostTest'],
    df_etude[df_etude['Groupe'] == 'Microlearning']['PostTest'],
    center='median'
)

Cependant, l’ANCOVA exigeant également que la variance résiduelle ne fluctue pas en fonction de la valeur de la covariable continue, il convient de compléter cette démarche par le test d’hétéroscédasticité de Breusch-Pagan, disponible dans le sous-module de diagnostic de Statsmodels :

from statsmodels.stats.diagnostic import het_breuschpagan
bp_test = het_breuschpagan(residus, modele_prelim.model.exog)
labels = ['LM Statistic', 'LM-Test p-value', 'F-Statistic', 'F-Test p-value']
resultats_bp = dict(zip(labels, bp_test))

Un tracé de dispersion des résidus standardisés en fonction des valeurs prédites (fitted values) complétera l’investigation : un nuage de points sans forme géométrique identifiable (absence de structure en entonnoir ou en fuseau) confirme visuellement l’homogénéité de la variance.

6. Vérification des postulats spécifiques : linéarité et homogénéité des pentes

6.1 Linéarité de la relation entre covariable et variable dépendante

L’ajustement opéré par l’ANCOVA repose mathématiquement sur l’estimation d’une relation rectiligne entre la covariable continue et la variable dépendante. Si la relation réelle au sein de la population parente s’avère curviligne (par exemple quadratique, logarithmique ou sigmoïde), l’ajustement linéaire classique sera imparfait et laissera subsister une part substantielle de variance systématique dans le terme d’erreur résiduelle. Pire encore, en présence de sous-groupes situés sur différentes portions d’une courbe non linéaire, l’ajustement statistique peut induire de faux effets de groupe ou occulter des différences expérimentales majeures.

La vérification empirique de la linéarité s’opère par l’introduction de termes polynomiaux d’ordre supérieur au sein de l’équation de régression. En formulant un modèle concurrent incorporant le carré de la covariable centrée, l’analyste examine si l’accroissement de variance expliquée attribuable à la courbure atteint le seuil de significativité statistique :

df_etude['PreTest_Centree'] = df_etude['PreTest'] - df_etude['PreTest'].mean()
df_etude['PreTest_Carre'] = df_etude['PreTest_Centree'] ** 2
modele_poly = smf.ols('PostTest ~ C(Groupe) + PreTest_Centree + PreTest_Carre', data=df_etude).fit()

Si la statistique t associée au coefficient de PreTest_Carre n’est pas significative (p > 0.05), le chercheur peut légitimement conclure que la simplification linéaire ne dégrade pas la validité interne du modèle d’ANCOVA.

6.2 Test formel de l’homogénéité des pentes de régression

Le postulat d’homogénéité des pentes de régression (homogeneity of regression slopes) constitue la condition de validité la plus cruciale et la plus exigeante de l’analyse de covariance. L’ANCOVA classique suppose explicitement que l’effet de la covariable sur la variable réponse est invariant d’un groupe expérimental à l’autre, ce qui se traduit graphiquement par des droites de régression parfaitement parallèles dans la population :

β1 = β2 = … = βk = β

Sur le plan analytique, la violation de ce postulat signifie l’existence d’une interaction statistique de premier ordre entre la variable indépendante catégorielle et la covariable continue (Groupe × Covariable). Dans une telle configuration, l’ampleur et la nature même de l’effet du traitement varient en fonction de la valeur de la covariable : pour un individu ayant un score pré-test faible, la méthode A peut être supérieure, alors que pour un sujet disposant d’un pré-test élevé, la méthode B devient optimale. Présenter une « moyenne ajustée globale » devient alors dénué de sens scientifique.

Le test formel de ce postulat s’effectue en ajustant un modèle d’interaction complet sous Statsmodels et en observant la valeur F associée au terme croisé :

modele_interaction = smf.ols('PostTest ~ C(Groupe) * PreTest', data=df_etude).fit()
table_interaction = anova_lm(modele_interaction, typ=2)

Si la ligne relative à C(Groupe):PreTest affiche une valeur p > 0.05, l’hypothèse de parallélisme des pentes est préservée, autorisant le déploiement de l’ANCOVA standard. En revanche, si cette interaction s’avère statistiquement significative (p ≤ 0.05), l’ANCOVA classique doit être impérativement révoquée au profit d’analyses d’effets modérateurs ou de la mise en œuvre de la technique de Johnson-Neyman, qui identifie mathématiquement les régions de significativité sur le continuum de la covariable.

6.3 Indépendance entre la covariable et le facteur de traitement

Un principe méthodologique fréquemment bafoué lors de l’application de l’ANCOVA réside dans l’exigence d’indépendance (ou orthogonalité) entre le facteur expérimental et la mesure de covariance. La covariable doit idéalement être recueillie avant l’administration du traitement ou être par nature totalement insensible à celui-ci (ex. : prédisposition génétique, âge civil). Si l’intervention expérimentale modifie elle-même le niveau de la covariable, l’ajustement statistique éliminera une fraction authentique de l’effet du traitement, conduisant à une sous-estimation systématique de l’efficacité de l’intervention.

Sur le plan empirique, cette indépendance se vérifie en soumettant la covariable à une ANOVA à un facteur préalable, où elle joue temporairement le rôle de variable réponse vis-à-vis du groupe :

modele_indep = smf.ols('PreTest ~ C(Groupe)', data=df_etude).fit()
table_indep = anova_lm(modele_indep, typ=2)

Dans un protocole expérimental avec randomisation rigoureuse, les groupes ne doivent pas différer significativement sur le PreTest (p > 0.05). Dans les situations quasi-expérimentales où les groupes manifestent des disparités massives au départ, l’ajustement d’ANCOVA s’expose au célèbre paradoxe de Lord et aux mises en garde de Miller et Chapman (2001) : le contrôle statistique ne saurait créer une équivalence expérimentale artificielle là où la réalité écologique des groupes est fondamentalement hétérogène.

7. Exécution de l’ANCOVA avec le module Pingouin

7.1 Mise en œuvre de la fonction ancova()

La bibliothèque Pingouin s’impose comme l’outil le plus direct, ergonomique et spécialisé pour exécuter une analyse de covariance sous Python sans lourdeur syntaxique. Sa fonction éponyme ancova() encapsule l’ensemble du partitionnement matriciel des carrés et délivre instantanément les métriques essentielles dans un format tabulaire prêt pour la diffusion scientifique.

La signature syntaxique de la commande requiert la spécification des quatre arguments fondamentaux : le jeu de données sous forme de DataFrame (data), le nom de la variable dépendante continue (dv pour dependent variable), l’identifiant de la ou des covariables continues (covar), et le nom du facteur de classification inter-sujets (between) :

ancova_pingouin = pg.ancova(data=df_etude, dv='PostTest', covar='PreTest', between='Groupe')
print(ancova_pingouin)

En coulisses, Pingouin calcule de manière autonome les régressions sous-jacentes, procède à l’orthogonalisation des composantes et génère les contrastes appropriés. Cette concision syntaxique limite drastiquement les erreurs de codage manuel tout en assurant une vitesse d’exécution optimale même sur des bases de données volumineuses comportant des dizaines de milliers de lignes.

7.2 Lecture et décomposition du tableau de résultats Pingouin

La sortie générée par la fonction pg.ancova() se présente sous la forme d’un DataFrame structuré selon les canons internationaux de l’analyse de variance. Chaque ligne correspond à une source de variation identifiée du modèle, tandis que les colonnes détaillent les statistiques inférentielles associées :

  • Source : Désigne l’origine de la variance partitionnée. La table comporte typiquement le facteur expérimental principal (Groupe), la covariable continue (PreTest), et la composante d’erreur non expliquée (Residual).
  • SS (Sum of Squares) : La somme des carrés partielle dévolue à chaque terme. Pour le facteur Groupe, il s’agit de la variation expliquée nette, une fois retranchée la variance absorbée par le PreTest.
  • DF (Degrees of Freedom) : Les degrés de liberté associés. Pour un facteur à k modalités, DF = k – 1 (ici, 3 – 1 = 2). Pour la covariable continue, DF = 1. Pour les résidus, avec N observations totales et p prédicteurs (incluant la constante), DF = N – k – 1 (ici, 150 – 3 – 1 = 146).
  • MS (Mean Squares) : Les carrés moyens, obtenus en divisant chaque somme des carrés par ses degrés de liberté respectifs (MS = SS / DF). Le carré moyen résiduel (MSResidual) constitue l’estimateur non biaisé de la variance d’erreur commune σ2.
  • F : La statistique F de Fisher-Snedecor, calculée par le ratio du carré moyen de l’effet sur le carré moyen de l’erreur (F = MSEffet / MSResidual).
  • p-unc (Uncorrected p-value) : La probabilité critique bilatérale sous l’hypothèse nulle. Une valeur inférieure à 0.05 atteste que l’effet du traitement demeure statistiquement significatif après contrôle mathématique strict de la covariable.
  • np2 (Partial Eta-Squared, ηp2) : L’amplitude de l’effet standardisée, quantifiant la proportion de variance résiduelle expliquée spécifiquement par le facteur considéré.

L’observation attentive du tableau permet de quantifier précisément le gain apporté par l’ANCOVA : la comparaison de la valeur F obtenue avec celle d’une ANOVA simple montre presque systématiquement une élévation de la valeur statistique consécutive à l’amincissement de la variance d’erreur résiduelle.

8. Modélisation linéaire paramétrique avancée avec Statsmodels

8.1 Formulation du modèle par les moindres carrés ordinaires

Bien que Pingouin offre une ergonomie remarquable, la modélisation sous Statsmodels confère à l’expérimentateur une maîtrise granulaire supérieure, notamment en matière de paramétrisation explicite de la matrice d’expérience et de choix des contrastes de régression. En s’appuyant sur l’interface de formules de Patsy (hautement analogue à la syntaxe adoptée sous R), l’analyste spécifie la relation structurelle avec clarté :

modele_ols = smf.ols('PostTest ~ C(Groupe) + PreTest', data=df_etude).fit()
print(modele_ols.summary())

L’opérateur C(Groupe) stipule formellement que la variable Groupe doit être traitée comme un facteur polytomique qualitatif. Par défaut, Statsmodels adopte un codage de type « traitement » (dummy coding), désignant la première modalité par ordre alphabétique ou par ordre de niveau (ici, Traditionnel) comme modalité de référence. Le tableau récapitulatif summary() expose dès lors les coefficients de régression individuels (B), leurs erreurs-types associées (Std.Err.), les ratios de Student (t) et leurs valeurs p respectives.

Dans ce cadre, la constante (Intercept) représente la valeur prédite du PostTest pour la catégorie de référence lorsque le PreTest est rigoureusement égal à zéro (d’où l’importance conceptuelle d’un centrage préalable de la covariable pour conférer une interprétabilité directe à cet intercepte). Les coefficients associés aux modalités C(Groupe)[T.Actif] et C(Groupe)[T.Microlearning] quantifient le décalage moyen de performance par rapport au groupe traditionnel, pour une valeur constante quelconque du pré-test.

8.2 Choix du type de sommes des carrés

Dans les modèles multifactoriels et dans l’ANCOVA, le choix de la méthode de partitionnement de la somme des carrés exerce une influence directe sur les valeurs F obtenues, en particulier lorsque les effectifs au sein des cellules factorielles sont inégaux (plans déséquilibrés). Il existe trois approches canoniques :

  • Type I (Séquentiel) : Les variables explicatives sont introduites pas à pas dans l’ordre strict dicté par la syntaxe du modèle. La première variable absorbe toute la variance possible, et la seconde n’explique que la variance résiduelle non accaparée par la première. L’ordre d’écriture modifie radicalement les résultats statistiques, ce qui rend le Type I inadapté à l’ANCOVA standard.
  • Type II (Hiérarchique ou Partiel) : L’effet principal de chaque facteur est évalué après ajustement de tous les autres facteurs et covariables de même rang ou de rang inférieur, en excluant les termes d’interaction d’ordre supérieur. Cette approche est hautement recommandée et universellement adoptée lorsque l’hypothèse de parallélisme des pentes est validée (absence d’interaction Groupe × Covariable).
  • Type III (Marginal) : Chaque terme est évalué après contrôle de l’ensemble des autres termes du modèle, y compris les interactions potentielles. C’est l’approche par défaut de logiciels propriétaires tels que SPSS, mais elle suscite des controverses mathématiques en présence d’interactions fortes du fait de la violation du principe de marginalité hiérarchique de Nelder.

Pour exécuter un test omnibus non biaisé en adéquation avec la validation préalable de l’homogénéité des pentes, l’analyste fait appel à la fonction anova_lm de Statsmodels en renseignant explicitement le paramètre typ=2 :

table_anova_type2 = anova_lm(modele_ols, typ=2)
print(table_anova_type2)

Cette commande génère le test F omnibus exact de l’effet principal du traitement, garantissant que l’ordonnancement scriptural des termes dans la formule Patsy (ex. : PostTest ~ PreTest + C(Groupe) ou PostTest ~ C(Groupe) + PreTest) n’aura aucun impact pernicieux sur les valeurs inférentielles délivrées.

9. Calcul et comparaison des moyennes marginales ajustées

9.1 Estimation des moyennes marginales (Estimated Marginal Means)

La simple contemplation de l’effet omnibus significatif issu du test F de l’ANCOVA ne suffit pas à circonscrire précisément la nature clinique ou pédagogique des résultats. L’expérimentateur doit impérativement rapporter les moyennes marginales estimées (aussi appelées least-squares means). Les moyennes brutes observées sont trompeuses, car elles intègrent la fluctuation stochastique ou le déséquilibre structurel lié à la covariable au point de départ.

Le calcul computationnel des moyennes ajustées requiert de projeter le modèle linéaire en fixant artificiellement la valeur de la covariable continue à sa moyenne arithmétique globale calculée sur l’ensemble de la cohorte (X̄..). Sous Python, cette opération de calage s’implémente élégamment en générant un DataFrame synthétique représentatif, puis en sollicitant la méthode de prédiction du modèle Statsmodels :

moyenne_globale_pre = df_etude['PreTest'].mean()
df_predict = pd.DataFrame({
    'Groupe': ['Traditionnel', 'Actif', 'Microlearning'],
    'PreTest': [moyenne_globale_pre, moyenne_globale_pre, moyenne_globale_pre]
})
predictions = modele_ols.get_prediction(df_predict)
df_emm = predictions.summary_frame(alpha=0.05)
df_emm['Groupe'] = df_predict['Groupe']
df_emm = df_emm[['Groupe', 'mean', 'mean_se', 'mean_ci_lower', 'mean_ci_upper']]
df_emm.columns = ['Groupe', 'Moyenne_Ajustee', 'Erreur_Type', 'IC_Bas_95', 'IC_Haut_95']
print(df_emm)

Ce tableau fournit non seulement la moyenne rectifiée pour chaque groupe d’apprentissage, mais également l’erreur-type de prédiction et les intervalles de confiance à 95 % associés. Il permet de quantifier l’amplitude réelle des écarts de performance nets entre les approches didactiques une fois purgée l’hétérogénéité initiale des étudiants.

9.2 Comparaisons par paires post-hoc

Lorsque la variable indépendante comprend plus de deux modalités (ce qui est le cas de notre facteur à trois niveaux), un test F omnibus statistiquement significatif atteste qu’au moins deux groupes diffèrent mutuellement, sans révéler précisément quelles paires s’écartent l’une de l’autre. L’exécution de comparaisons par paires (post-hoc tests) devient indispensable.

Toutefois, exécuter une multitude de tests t bilatéraux conventionnels dégrade gravement le taux d’erreur par famille d’hypothèses (family-wise error rate). Pour préserver l’inflation de l’erreur de Type I au seuil nominal de α = 0.05, des procédures d’ajustement de la valeur critique p doivent impérativement intervenir. Les approches les plus courantes sont la correction conservative de Bonferroni ou la procédure séquentielle par paliers de Holm-Bonferroni. La bibliothèque Pingouin propose une méthode puissante permettant d’effectuer ces contrastes directement à partir des résidus de l’ajustement de la covariable :

posthoc = pg.pairwise_tests(data=df_etude, dv='PostTest', between='Groupe',
                            covar='PreTest', padjust='bonf')
print(posthoc[['A', 'B', 'T', 'dof', 'p-unc', 'p-corr', 'hedges']])

Dans ce tableau, p-corr indique la valeur critique rectifiée par la méthode de Bonferroni. L’analyste examine ainsi si la méthode du Microlearning surpasse significativement l’apprentissage Actif, et si ces deux modalités surpassent individuellement l’enseignement Traditionnel. Les intervalles de confiance à 95 % des différences moyennes de contrastes doivent accompagner systématiquement ces déductions.

10. Quantification de l’amplitude de l’effet

10.1 Calcul de l’êta-carré partiel

Sous l’impulsion du mouvement en faveur de la rigueur méthodologique et de la réplication en sciences psychologiques, le seul étalage d’une valeur p statistiquement significative est aujourd’hui jugé totalement indigent par les comités de lecture internationaux. Une valeur p informe exclusivement sur la plausibilité de l’hypothèse nulle au regard de la taille d’échantillon, mais ne dit absolument rien de l’ampleur pragmatique de l’effet découvert. L’indice standardisé d’amplitude d’effet prééminent associé à l’ANCOVA est l’êta-carré partiel (ηp2).

Mathématiquement, l’êta-carré partiel indexe la proportion de la variance totale non attribuable aux autres prédicteurs qui est spécifiquement absorbée par le facteur expérimental :

ηp2 = SSEffet / (SSEffet + SSRésiduelle)

Dans les sorties tabulaires de Pingouin, cette métrique est automatiquement renseignée dans la colonne np2. Si l’on recourt à la modélisation sous Statsmodels, le calcul vectoriel s’opère instantanément à partir de la table d’ANOVA :

ss_groupe = table_anova_type2.loc['C(Groupe)', 'sum_sq']
ss_residus = table_anova_type2.loc['Residual', 'sum_sq']
eta_p2 = ss_groupe / (ss_groupe + ss_residus)
print(f"Eta-carre partiel : {eta_p2:.4f}")

Pour l’interprétation théorique de cet indice dans le champ des sciences humaines, les directives sémantiques canoniques proposées par Jacob Cohen (1988) fournissent les points d’ancrage suivants :

  • Effet mineur (faible) : ηp2 ≈ 0.01 (le facteur explique 1 % de la variance résiduelle).
  • Effet intermédiaire (moyen) : ηp2 ≈ 0.06 (le facteur explique 6 % de la variance résiduelle).
  • Effet majeur (large) : ηp2 ≥ 0.14 (le facteur explique 14 % ou plus de la variance résiduelle).

10.2 Mesures alternatives de la taille d’effet

Bien que l’êta-carré partiel demeure universellement plébiscité par les revues affiliées à l’APA, il présente un biais systématique bien documenté en métrologie statistique : il surestime la proportion réelle de variance expliquée au sein de la population globale, un phénomène particulièrement pernicieux lorsque la taille d’échantillon N est réduite. Pour surmonter cet écueil, de nombreux méthodologistes préconisent l’usage de l’oméga-carré partiel (ωp2), un estimateur moins biaisé fondé sur les carrés moyens :

ωp2 = (DFEffet × (MSEffet – MSRésiduelle)) / (DFEffet × MSEffet + (N – DFEffet) × MSRésiduelle)

Une implémentation computationnelle directe sous Python s’écrit :

df_effet = table_anova_type2.loc['C(Groupe)', 'df']
ms_effet = table_anova_type2.loc['C(Groupe)', 'sum_sq'] / df_effet
ms_res = table_anova_type2.loc['Residual', 'sum_sq'] / table_anova_type2.loc['Residual', 'df']
n_total = len(df_etude)
omega_p2 = (df_effet * (ms_effet - ms_res)) / (df_effet * ms_effet + (n_total - df_effet) * ms_res)
print(f"Omega-carre partiel : {omega_p2:.4f}")

Parallèlement, lors de la conduite des contrastes post-hoc par paires, la formulation du d de Cohen standardisé ou du g de Hedges ajusté doit s’appuyer sur l’écart-type résiduel commun issu du modèle d’ANCOVA (spooled = √MSRésiduelle) plutôt que sur les écarts-types bruts non ajustés des sous-échantillons. Cette démarche assure une parfaite cohérence mathématique entre le test omnibus et les épreuves de comparaisons multiples.

11. Restitution académique des conclusions selon les normes APA

11.1 Formatage textuel des inférences statistiques

La diffusion des résultats d’une analyse de covariance dans une publication savante obéit aux normes rédactionnelles strictes énoncées dans la 7e édition du manuel de style de l’APA. La restitution scripturale doit intégrer harmonieusement la description des contrôles préliminaires, l’expression formelle de la statistique de test avec ses degrés de liberté, la probabilité critique exacte (et non une simple dichotomie p < 0.05), la métrique de taille d’effet, ainsi que le rappel explicite des moyennes marginales ajustées accompagnées de leur indice d’erreur.

Un modèle de rédaction canonique en langue française se formule de la manière suivante :

« Une analyse de covariance (ANCOVA) univariée inter-sujets a été conduite afin d’examiner l’impact de la méthode didactique (Traditionnel vs Actif vs Microlearning) sur le score final d’acquisition statistique (PostTest), en contrôlant statistiquement le niveau de compétence initial évalué au pré-test (PreTest). L’évaluation des postulats a attesté de la normalité des résidus du modèle (Shapiro-Wilk W = 0.991, p = 0.452) et de l’homogénéité des variances résiduelles (test de Levene centré sur la médiane, F(2, 147) = 0.843, p = 0.432). Par ailleurs, l’absence d’interaction statistiquement significative entre la covariable et le facteur expérimental a confirmé le postulat d’homogénéité des pentes de régression, F(2, 144) = 0.612, p = 0.544. »

« Après contrôle statistique de l’influence du score pré-test, F(1, 146) = 284.15, p < 0.001, ηp2 = 0.661, un effet principal hautement significatif du dispositif pédagogique est observé sur les performances finales, F(2, 146) = 38.74, p < 0.001, ηp2 = 0.347 (ωp2 = 0.338). Les moyennes marginales ajustées indiquent une supériorité de l’apprentissage par microlearning (Madj = 56.42, SE = 0.71) par rapport à l’apprentissage actif (Madj = 52.18, SE = 0.70) et à l’enseignement traditionnel (Madj = 47.35, SE = 0.71). Les contrastes post-hoc ajustés par la procédure de Bonferroni révèlent que l’ensemble des comparaisons par paires s’avère statistiquement significatif (toutes les p < 0.001). »

11.2 Conception de tableaux et graphiques publiables

La mise en forme tabulaire aux normes éditoriales académiques proscrit formellement les lignes de quadrillage verticales et requiert un agencement épuré composé exclusivement de trois lignes horizontales majeures (au-dessus du bloc d’en-tête, sous le bloc d’en-tête et sous la table de données). Le tableau synthétique d’ANCOVA doit réunir de manière concise les colonnes Source, Somme des carrés (SS), Degrés de liberté (ddl), Carrés moyens (MS), statistique F, probabilité critique p et ηp2.

Sur le plan iconographique, la représentation de référence ne repose pas sur les moyennes observées brutes, mais sur un diagramme à barres d’erreur représentant spécifiquement les moyennes marginales estimées (EMMs) accompagnées de leurs intervalles de confiance à 95 %. L’adjonction de crochets de comparaison annotés de symboles typographiques conventionnels (ex. : *** pour p < 0.001) parachève l’efficacité visuelle de la figure. Le code Python suivant matérialise cette construction graphique de standing éditorial :

plt.figure(figsize=(8, 6))
x_coords = np.arange(len(df_emm))
erreurs = df_emm['Moyenne_Ajustee'] - df_emm['IC_Bas_95']
plt.errorbar(x=x_coords, y=df_emm['Moyenne_Ajustee'], yerr=erreurs, fmt='o',
             color='navy', ecolor='firebrick', elinewidth=2, capsize=6, markersize=8)
plt.xticks(x_coords, df_emm['Groupe'], fontsize=11)
plt.ylabel("Score Post-Test ajusté (Moyennes marginales)", fontsize=12)
plt.xlabel("Dispositif didactique expérimental", fontsize=12)
plt.title("Moyennes marginales estimées et IC à 95 % après contrôle du Pré-Test", fontsize=13)
plt.ylim(40, 65)
plt.grid(axis='y', linestyle=':', alpha=0.6)
plt.tight_layout()
plt.show()

12. Diagnostic des anomalies et approches méthodologiques alternatives

12.1 Stratégies en cas de non-respect des postulats classiques

Lorsque la confrontation empirique aux données révèle une violation patente des postulats paramétriques élémentaires, l’obstination à utiliser l’ANCOVA ordinaire compromet irrémédiablement la sincérité des déductions inférentielles. Plusieurs voies de remédiation s’offrent au méthodologiste selon la nature exacte de l’anomalie détectée.

Face à une déviance marquée de la normalité ou à une asymétrie substantielle de la variable dépendante, l’application d’une transformation mathématique stabilisatrice de variance constitue un premier recours éprouvé. Les transformations logarithmique (log(Y)), racine carrée (√Y) ou la méthode paramétrique automatisée de Box-Cox permettent fréquemment de renormaliser les résidus d’échantillonnage et de résorber les singularités de distribution.

En présence d’une hétéroscédasticité confirmée de la variance résiduelle ne pouvant être corrigée par une transformation d’échelle, l’abandon des estimateurs classiques au profit d’estimateurs de covariance robustes à l’hétéroscédasticité s’avère salutaire. Statsmodels offre une implémentation immédiate des estimateurs dits « sandwich » de Huber-White, notamment la correction HC3 (recommandée par Long et Ervin pour les échantillons de taille inférieure à 250) :

modele_robuste = smf.ols('PostTest ~ C(Groupe) + PreTest', data=df_etude).fit(cov_type='HC3')
print(modele_robuste.summary())

Enfin, lorsque les données défient radicalement tout traitement paramétrique en raison d’échelles ordinales sévères ou de valeurs aberrantes extrêmes inextinguibles, l’alternative réside dans l’analyse de covariance non paramétrique basée sur les rangs, historiquement théorisée par E. A. Quade (1967). Le test de Quade procède en substituant aux mesures brutes leurs rangs respectifs, puis en régressant les rangs de Y sur les rangs de X avant d’exécuter une ANOVA conventionnelle à un facteur sur les résidus de rangs résultants.

12.2 Techniques de rééchantillonnage et perspectives modernes

Au confluent des développements computationnels récents et de l’épistémologie de la robustesse, les méthodes computationnelles intensives de rééchantillonnage s’affirment comme des alternatives privilégiées aux inférences paramétriques classiques. La technique du bootstrap résiduel non paramétrique s’avère particulièrement adaptée à l’analyse de covariance. Elle consiste à rééchantillonner avec remise les résidus du modèle ajusté, à régénérer itérativement de pseudo-scores de sortie dépendants, et à recalculer les statistiques de test sur plusieurs milliers d’itérations (ex. : B = 5000) afin d’engendrer une distribution empirique sans présupposé de normalité.

Un algorithme générique d’amorçage (bootstrapping) pour extraire l’intervalle de confiance robuste de la différence entre deux moyennes ajustées s’articule aisément sous Python à l’aide d’une simple boucle vectorisée :

B = 2000
n_obs = len(df_etude)
y_pred = modele_ols.fittedvalues
resids = modele_ols.resid
diff_boot = []
for _ in range(B):
    boot_resids = np.random.choice(resids, size=n_obs, replace=True)
    df_etude['Post_Boot'] = y_pred + boot_resids
    mod_b = smf.ols('Post_Boot ~ C(Groupe) + PreTest', data=df_etude).fit()
    diff = mod_b.params['C(Groupe)[T.Microlearning]'] - mod_b.params['C(Groupe)[T.Actif]']
    diff_boot.append(diff)
ic_bootstrap = np.percentile(diff_boot, [2.5, 97.5])
print(f"Intervalle de confiance Bootstrap 95 % de la difference : {ic_bootstrap}")

Au-delà du paradigme fréquentiste, la modélisation statistique computationnelle contemporaine s’oriente résolument vers le cadre bayésien. Grâce à des écosystèmes probabilistes tels que PyMC, les chercheurs peuvent formaliser l’ANCOVA sous la forme d’un modèle hiérarchique probabiliste continu. L’attribution de distributions a priori (priors) régularisées sur les coefficients et sur l’écart-type d’erreur permet de générer des distributions postérieures complètes via des algorithmes d’échantillonnage de Monte-Carlo par chaînes de Markov (MCMC). Cette approche émancipe définitivement le chercheur de la tyrannie binaire du seuil p < 0.05 et autorise des énoncés de probabilité directe quant à la supériorité substantielle d’un protocole d’intervention psychologique ou pédagogique.

La rigueur méthodologique, la pré-enregistrement des hypothèses de recherche, la vérification intransigeante des postulats statistiques et la transparence du code d’analyse sous Python constituent les garants irremplaçables d’une science psychologique robuste, cumulative et réplicable.

Références

  • American Psychological Association. (2020). Publication manual of the American Psychological Association (7th ed.). American Psychological Association. https://doi.org/10.1037/0000165-000
  • Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2nd ed.). Lawrence Erlbaum Associates.
  • Fisher, R. A. (1932). Statistical methods for research workers (4th ed.). Oliver and Boyd.
  • Kline, R. B. (2015). Principles and practice of structural equation modeling (4th ed.). Guilford Publications.
  • Miller, G. A., & Chapman, J. P. (2001). Misunderstanding analysis of covariance. Journal of Abnormal Psychology, 110(1), 40–48. https://doi.org/10.1037/0021-843X.110.1.40
  • Nelder, J. A. (1977). A reformulation of linear models. Journal of the Royal Statistical Society: Series A (General), 140(1), 48–77. https://doi.org/10.2307/2344517
  • Quade, D. (1967). Rank analysis of covariance. Journal of the American Statistical Association, 62(320), 1187–1203. https://doi.org/10.1080/01621459.1967.10500925
  • Seabold, S., & Perktold, J. (2010). Statsmodels: Econometric and statistical modeling with Python. In Proceedings of the 9th Python in Science Conference (pp. 92–96). https://doi.org/10.25080/Majora-92bf1922-011
  • Vallat, R. (2018). Pingouin: statistics in Python. Journal of Open Source Software, 3(31), 1026. https://doi.org/10.21105/joss.01026
★

Rate This Content

5.0 / 5 • 1 vote

Citer cet article

Looti, M. (2026, septembre 11). Comment effectuer une ANCOVA en Python. Base de données de psychologie en français. https://fr.arabpsychology.com/statistics/comment-effectuer-ancova-python/
Looti, Mohammed. “Comment effectuer une ANCOVA en Python.” Base de données de psychologie en français, 11 septembre 2026, https://fr.arabpsychology.com/statistics/comment-effectuer-ancova-python/.
Looti, Mohammed. “Comment effectuer une ANCOVA en Python.” Base de données de psychologie en français. septembre 11, 2026. https://fr.arabpsychology.com/statistics/comment-effectuer-ancova-python/.