01 75 60 34 00 | conseil@ensae.fr | Prenez RDV |

Régression linéaire et analyse de la variance avec Python

MéTHODES STATISTIQUES 3 jours (18 h) Intermédiaire 1 700 € HT
Régression linéaire et analyse de la variance avec Python

Objectifs pédagogiques

  • Comprendre et savoir mettre en œuvre un modèle de régression linéaire.
  • Savoir mesurer la qualité et la performance d’un modèle de régression.
  • Comprendre et savoir mener une analyse de la variance à un ou deux facteurs.

Programme détaillé

La formation traite de modèles entrant dans le cadre du modèle linéaire général (GLM), pour modéliser des phénomènes quantitatifs.

Régression linéaire simple 4h

  • Point de vue descriptif : méthode des moindres carrés (MCO)
  • Point de vue inférentiel : validation et qualité du modèle
  • Généralisation du modèle en prévision
  • Applications sur cas pratiques

Régression linéaire multiple 10h

  • Estimation et validation du modèle
  • Sélection de modèles : sélections backward, forward ou stepwise à l’aide des critères AIC, BIC ou Cp de Mallows
  • Traitements des variables explicatives qualitatives
  • Evaluation de la qualité prédictive d’un modèle
  • Applications sur cas pratiques

Analyse de la variance à un facteur 2h

  • Le modèle à effets fixes, tests de comparaisons multiples, analyse de la variance non paramétrique
  • Applications sur cas pratiques

Analyse de la variance à deux facteurs et plus 2h

  • La notion d’interactions
  • Utilisation de variables quantitatives et qualitatives dans le cadre du modèle linéaire général (analyse de la covariance)
  • Applications sur cas pratiques

Public visé

Data analysts, chargés d’études statistiques

Prérequis

Approche pédagogique

Moyens pédagogiques
Exposé théorique de concepts Applications pratiques sur ordinateur Échanges sur les pratiques et expériences des participants Temps de questions / réponses Exercices, quiz, etc.
Méthodes pédagogiques
Méthode expositive Méthode active

Régression et ANOVA en Python : statsmodels, ses formules et ses pièges

Pour la régression linéaire et l’analyse de la variance « à la manière d’un statisticien », avec coefficients, écarts-types, tests et tableau d’analyse de la variance, la bibliothèque de référence en Python est statsmodels. Elle propose deux interfaces, et le choix entre les deux n’est pas anodin.

Deux interfaces, une différence qui compte

L’interface par formules (statsmodels.formula.api) reprend la syntaxe de R : salaire ~ experience + C(diplome) * C(sexe). Elle code automatiquement les variables qualitatives, déclarées avec C(), et ajoute la constante. L’interface par matrices (statsmodels.api) demande de tout préparer soi-même, y compris la constante : oublier sm.add_constant() revient à estimer une régression forcée par l’origine, sans message d’avertissement.

import statsmodels.api as sm
import statsmodels.formula.api as smf

modele = smf.ols("salaire ~ experience + C(diplome) * C(sexe)", data=df).fit()
print(modele.summary())
sm.stats.anova_lm(modele, typ=2)   # tableau d'analyse de la variance

Par défaut, anova_lm() calcule des sommes de carrés séquentielles (type I), qui dépendent de l’ordre des variables dans la formule ; l’argument typ=2 donne des tests qui n’en dépendent pas.

Comparaisons multiples et version non paramétrique

Après une analyse de la variance à un facteur, la méthode de Tukey compare toutes les paires de moyennes en contrôlant le risque global d’erreur. Le test de Kruskal-Wallis, sa version non paramétrique, est dans SciPy :

from statsmodels.stats.multicomp import pairwise_tukeyhsd
from scipy.stats import kruskal

print(pairwise_tukeyhsd(df["salaire"], df["diplome"]).summary())
kruskal(*[g["salaire"] for _, g in df.groupby("diplome")])

Ce que Python ne fait pas tout seul : la sélection stepwise

Contrairement à SAS (GLMSELECT) ou R (step()), ni statsmodels ni scikit-learn ne proposent de sélection stepwise par AIC ou BIC prête à l’emploi. Les critères sont bien disponibles (modele.aic, modele.bic), mais la boucle d’ajout et de retrait des variables s’écrit en quelques lignes. Le SequentialFeatureSelector de scikit-learn mène des sélections forward ou backward, mais sur un autre principe : il compare les modèles par validation croisée, c’est-à-dire sur leur qualité de prévision plutôt que sur un critère d’information.

Les mêmes outils, avec une variable à expliquer qualitative, mènent à la classification supervisée avec Python.