Cours
Après avoir entraîné un modèle de régression logistique, comment être certain de pouvoir faire confiance à ses coefficients ?
La régression logistique est réputée pour sa simplicité. Avec scikit-learn, vous appelez .fit(), vous lisez les odds ratios, et l’affaire est pliée. Ce que beaucoup de débutants ignorent, c’est que le modèle repose sur ses propres hypothèses : si vous ne les respectez pas, les coefficients deviennent trompeurs et les prédictions se dégradent de façons qu’aucun indicateur standard ne révélera.
En vérité, la régression logistique impose moins d’hypothèses que la régression linéaire, et celles qu’elle impose sont faciles à vérifier. Il suffit d’exécuter les bons diagnostics avant d’interpréter la sortie pour savoir à quelles parties du modèle vous pouvez vous fier.
Dans cet article, je vous présente chacune des hypothèses de la régression logistique, comment les vérifier en Python et en R, ce qui se passe lorsqu’elles sont violées, et vers quelles alternatives vous tourner quand elles ne peuvent pas être respectées.
Si vous débutez en data science et en apprentissage automatique, lisez notre article de blog sur la régression linéaire simple pour comprendre ses hypothèses et diagnostics.
Qu’est-ce que la régression logistique ?
La régression logistique est un modèle de classification qui prédit la probabilité d’un résultat catégoriel. Vous lui fournissez des prédicteurs et il renvoie un nombre entre 0 et 1 à lire comme la probabilité d’appartenir à une classe donnée.
On l’utilise surtout pour la classification binaire : churn ou pas, spam ou non-spam. Des variantes comme la régression logistique multinomiale et ordinale couvrent plus de deux classes, mais, par défaut, « régression logistique » désigne le cas binaire.
Sous le capot, le modèle ajuste une combinaison linéaire de vos prédicteurs, puis la fait passer par la fonction logistique. La sortie est une probabilité, et les coefficients indiquent comment chaque prédicteur décale les log-odds.
À noter : la régression logistique n’est pas la régression linéaire. Cette dernière a des hypothèses familières comme la normalité des résidus, l’homoscédasticité, la linéarité entre prédicteurs et cible. La régression logistique n’impose pas ces hypothèses. Elle a sa propre liste, différente au point que transposer celles de la régression linéaire produit des résultats trompeurs.
Pour plus de détails sur la régression logistique, lisez notre article montrant son implémentation en Python.
Pourquoi les hypothèses de la régression logistique comptent
Elles comptent parce qu’elles sont directement liées à ce que vous faites du modèle.
Si vous respectez les hypothèses, les coefficients signifient bien ce que vous pensez. Les odds ratios que vous lisez sont valides et les probabilités du modèle se rapprochent des résultats réels. Quand les hypothèses ne sont pas respectées, tout cela devient fragile d’une manière qu’une matrice de confusion ou un autre indicateur ne montrera pas.
La bonne nouvelle, c’est que les violations ne sont pas binaires. Une légère entorse à l’hypothèse de linéarité du logit ne rend pas votre modèle inutile. Cela signifie juste que vos odds ratios sont un peu biaisés et que vos prédictions pourraient être moins bonnes que possible. Beaucoup de modèles en production vivent avec des hypothèses imparfaites, et c’est acceptable.
Ce qu’il ne faut pas faire, c’est zapper les vérifications. Sans diagnostics, vous ne pouvez pas savoir si vous faites face à un petit ou un gros problème avant que les prédictions ne déraillent.
Vue d’ensemble des hypothèses de la régression logistique
Avant d’entrer dans le détail, voici la liste complète à vérifier.
| Hypothèse | Ce qu’elle exige | Diagnostic courant |
|---|---|---|
| Observations indépendantes | Aucun enregistrement n’influence un autre | Plan d’étude, corrélation intraclasse |
| Variable cible appropriée | Binaire, ou modélisée avec la bonne variante | Inspection de la cible |
| Linéarité du logit | Prédicteurs linéaires dans les log-odds | Test de Box–Tidwell, splines |
| Pas de multicolinéarité sévère | Prédicteurs non fortement corrélés | VIF, matrice de corrélation |
| Taille d’échantillon suffisante | Assez d’événements par variable | Règle EPV |
| Pas de valeurs influentes | Aucun enregistrement ne biaise fortement l’ajustement | Distance de Cook, leverage |
Table des hypothèses de la régression logistique
Voilà la checklist complète. Dans la suite, je passe en revue chaque hypothèse avec des diagnostics en Python et en R, ce à quoi ressemble une violation, et quoi faire quand quelque chose cloche.
Les principales hypothèses de la régression logistique
Hypothèse 1 : la variable cible est binaire (ou modélisée de façon adéquate)
La régression logistique standard est conçue pour un résultat binaire. La variable cible doit comporter exactement deux catégories, et le modèle est bâti autour de ce cas.
Les exemples classiques : churn ou pas, maladie ou pas. Tout ce qui se formule en oui/non convient bien.
Si votre cible a plus de deux catégories, il faut une autre variante. La régression logistique multinomiale gère les catégories non ordonnées (segments clients, types de produits). La régression logistique ordinale gère les catégories ordonnées (notes de satisfaction de 1 à 5, où l’ordre a un sens).
Forcer un résultat multiclasses dans un modèle binaire revient souvent à regrouper des catégories qui ne devraient pas l’être. Si vous réduisez une échelle de satisfaction à cinq niveaux en « satisfait vs non », vous perdez une information utile au modèle. Choisissez la variante qui correspond à la forme de votre cible.
Hypothèse 2 : les observations sont indépendantes
Chaque ligne de votre jeu de données doit apporter au modèle une information que n’apporte aucune autre ligne. Si deux enregistrements sont liés d’une manière qui viole cela, vos erreurs standards et p-values perdent leur sens.
L’hypothèse échoue dès que des observations partagent une structure non modélisée : mesures répétées d’un même patient (biologie commune), élèves regroupés dans la même classe (enseignant et cadre partagés), etc.
Ignorer cela et ajuster une régression logistique simple amène le modèle à traiter chaque ligne comme une information neuve et à réduire trop fortement les erreurs standards. En surface, les coefficients peuvent sembler corrects, mais les p-values et intervalles de confiance seront trop optimistes.
Les alternatives usuelles sont la régression logistique à effets mixtes et les GEE. Les modèles à effets mixtes ajoutent des effets aléatoires pour les groupes (patient, classe) afin de tenir compte de la corrélation intragroupe. Les GEE, pour generalized estimating equations, fournissent des effets moyens de population avec erreurs standards corrigées, sans la machinerie des effets aléatoires.
Choisissez les effets mixtes si la variation intra-groupe vous intéresse. Optez pour les GEE si vous voulez des effets marginaux sur l’ensemble de la population.
Hypothèse 3 : linéarité du logit
C’est l’hypothèse la plus souvent mal comprise.
Le modèle n’assume pas une relation linéaire entre prédicteurs et résultat. Il assume une relation linéaire entre prédicteurs et log-odds du résultat. Ce n’est pas la même chose, et cela change ce qu’il faut vérifier.
Ce qu’est le logit
Le logit est le logarithme naturel des odds. Pour une probabilité p, les odds sont p / (1 - p), et le logit est le log de ce ratio :

Le logit
La régression logistique ajuste ensuite une équation linéaire sur cette échelle :

Formule de la régression logistique
Le membre de droite est linéaire en les prédicteurs. Le membre de gauche est la log-odds, pas la probabilité. La probabilité qui vous intéresse se récupère en passant la combinaison linéaire dans la fonction logistique, qui est non linéaire.
Ainsi, la relation entre un prédicteur et la probabilité est non linéaire. Celle entre un prédicteur et les log-odds doit, elle, être linéaire.
Pourquoi cela compte en pratique
Quand la linéarité du logit ne tient pas pour un prédicteur, son coefficient résume une courbe par une droite. Le modèle renvoie bien un nombre, potentiellement significatif, mais qui ne décrit pas la relation réelle dans vos données.
Par exemple, age peut avoir un effet en U sur les log-odds d’une maladie, avec un risque élevé aux extrêmes et plus faible au milieu. Si vous insérez age comme terme linéaire unique, le coefficient peut sortir proche de zéro et vous conclurez à tort que l’âge ne compte pas. C’est la spécification qui est erronée.
Vérifier la linéarité du logit
Plusieurs options s’offrent à vous.
La vérification la plus rapide est visuelle. Regroupez chaque prédicteur continu en déciles, calculez les log-odds empiriques dans chaque bin, puis tracez-les en fonction du prédicteur. Une droite approximative indique que l’hypothèse tient. Une courbe marquée indique l’inverse. Le contrôle est informel mais efficace avec assez de données par bin.
Le test de Box–Tidwell ajoute un terme d’interaction entre chaque prédicteur continu et son propre logarithme népérien. Si l’interaction est significative, l’hypothèse de linéarité du logit est violée pour ce prédicteur. Le test ne fonctionne que pour des prédicteurs strictement positifs (on ne prend pas le log de 0 ou d’un négatif) et il est sensible à la taille d’échantillon, comme tout test de significativité.
Les splines sont une autre option. Plutôt que de tester la linéarité, vous remplacez le terme linéaire par une base flexible (p. ex. spline cubique restreinte) et laissez le modèle ajuster la forme nécessaire. Si la spline s’ajuste nettement mieux (jugé via test de rapport de vraisemblance ou AIC), vous avez la preuve que la spécification linéaire était trop restrictive. Les splines servent aussi de correctif : les conserver au modèle final est souvent la meilleure réponse si la linéarité échoue.
Que faire si la linéarité échoue
Si l’hypothèse échoue pour un prédicteur, vous avez deux options :
- Transformer le prédicteur (log, racine carrée, etc.) jusqu’à obtenir une relation linéaire dans les log-odds
- Utiliser des splines et accepter un modèle légèrement plus complexe
Ces deux approches restent dans la famille logistique et valent mieux que d’exclure un prédicteur informatif.
Hypothèse 4 : pas de multicolinéarité sévère
La régression logistique tolère des prédicteurs corrélés jusqu’à un certain point. Au-delà, le modèle se met à mal se comporter d’une manière difficile à détecter via les métriques classiques.
La multicolinéarité survient lorsque deux prédicteurs ou plus véhiculent la même information (ou très similaire). Par exemple, la taille en pouces et en centimètres, ou chiffre d’affaires total et CA par client avec le nombre de clients à côté.
Deux problèmes apparaissent alors :
- Coefficients instables : ajouter ou supprimer une seule ligne peut faire varier fortement (voire changer le signe) le coefficient d’un prédicteur colinéaire. Le modèle « fonctionne », mais les coefficients pris isolément ne sont pas interprétables.
- Erreurs standards gonflées : avec moins d’information indépendante par prédicteur, l’incertitude sur chaque coefficient augmente. Les p-values montent et des effets réels peuvent sortir non significatifs.
Les prédictions, elles, sont généralement correctes. Si vous ne vous souciez que des probabilités prédites, une multicolinéarité faible à modérée pose rarement problème. Les « dégâts » se concentrent sur les coefficients et l’inférence.
Deux vérifications : la matrice de corrélation et le facteur d’inflation de variance (VIF). La matrice de corrélation est le premier réflexe, surtout pour des paires au-delà de 0,8–0,9 en valeur absolue. Limite : elle ne détecte que la colinéarité par paires, pas les redondances à plusieurs variables.
Le VIF couvre le cas multi-voies. Pour chaque prédicteur, il mesure combien la variance de son coefficient est gonflée par la colinéarité avec les autres. Un VIF de 1 signifie aucune colinéarité, jusqu’à 5 c’est généralement acceptable, au-dessus de 10 c’est un signal fort de redondance.
Si le VIF alerte, la solution la plus simple est de supprimer un des prédicteurs colinéaires ou de les combiner (somme, ratio). Si vous préférez tout conserver, la régularisation (ridge ou elastic net) stabilise les coefficients sans trancher.
Hypothèse 5 : taille d’échantillon adéquate
La régression logistique peut fonctionner avec de petits échantillons, mais avec moins de fiabilité. Les coefficients varient trop et les effets de classes rares deviennent presque impossibles à estimer.
La taille qui compte ici n’est pas le nombre total de lignes, mais le nombre d’événements (observations de la classe minoritaire). Un jeu de 100 000 lignes avec 50 fraudes relève d’un petit échantillon, car le modèle n’a que 50 exemples de ce qu’il doit apprendre.
C’est là qu’intervient la notion d’événements par variable (EPV). L’EPV est le nombre d’observations de la classe minoritaire divisé par le nombre de prédicteurs. Avec 50 fraudes et 10 prédicteurs, votre EPV est de 5.
La vieille règle empirique était d’au moins 10. Des simulations récentes montrent que le bon chiffre dépend des tailles d’effet et de la régularisation utilisée. Des EPV de 5 peuvent suffire dans certains contextes, quand d’autres exigent 20 ou plus.
Conclusion : traitez l’EPV comme un indicateur d’alerte. En dessous de 10, attendez-vous à des estimations instables et envisagez des méthodes pénalisées (logistique de Firth, ridge). En dessous de 5, collectez plus de données ou simplifiez le modèle avant de faire confiance à un coefficient isolé.
Le déséquilibre de classes est un problème lié mais distinct.
Un jeu où 99 % des cas appartiennent à une classe peut tout de même avoir suffisamment d’événements par variable. C’est le taux de base qui change, pas l’EPV. Les données déséquilibrées génèrent souvent des probabilités conservatrices et rendent la précision peu informative. Préférez le log-loss ou le score de Brier à la précision, et pensez aux poids de classe ou au réglage de seuil si vous devez équilibrer les décisions.
Hypothèse 6 : pas de points très influents
La régression logistique n’exige pas que vos prédicteurs soient normalement distribués. Des prédicteurs asymétriques ou des variables de comptage ne posent pas de problème en soi. Ce qui importe, c’est qu’aucune observation ne pèse démesurément sur les coefficients ajustés.
Une observation influente est celle qui, si vous la retiriez, changerait sensiblement le modèle. Ce n’est pas la même chose qu’un résidu extrême. Un point peut avoir un grand résidu sans être influent, et inversement.
Faites plusieurs diagnostics complémentaires :
- Leverage mesure à quel point les valeurs des prédicteurs d’une observation sont atypiques. Seul, il n’implique pas l’influence : il indique un potentiel d’influence si le résultat observé ne colle pas à ce que suggèrent ses prédicteurs.
- Distance de Cook combine leverage et résidu en un indicateur qui estime combien les coefficients changeraient si l’on retirait l’observation. Des valeurs élevées pointent les cas à investiguer. Règles pratiques : valeurs au-dessus de 4/n (n = taille d’échantillon) ou inspection des plus grandes valeurs.
- Diagnostics des résidus pour les cas que leverage et Cook manquent. Les résidus de déviance et de Pearson signalent les observations que le modèle ajuste mal. Un point avec un grand résidu mérite un examen, même avec un leverage modéré.
Quand vous trouvez un point influent, demandez-vous s’il est réel ou erroné. Une erreur de saisie se corrige ou s’enlève. Un cas réel mais inhabituel reste, et vous notez que vos conclusions en dépendent. N’excluez pas des points simplement parce qu’ils sont influents : vous finiriez avec un modèle surajusté au jeu d’entraînement.
Idées reçues sur les hypothèses de la régression logistique
La plupart des confusions viennent du copier-coller des hypothèses de la régression linéaire, bien connues et enseignées partout, là où elles n’ont pas lieu d’être. Voici les quatre idées à corriger.
La régression logistique exige des variables normalement distribuées
Faux. La régression logistique ne fait aucune hypothèse de normalité sur les variables du modèle.
La cible doit être binaire, pas normale (cf. Hypothèse 1). Les prédicteurs ne sont pas supposés normaux non plus : leur forme importe peu. Ce qui compte, c’est la relation avec les log-odds, pas la distribution marginale d’une variable isolée.
La régression logistique requiert l’homoscédasticité
Faux également. L’homoscédasticité (variance constante des résidus) est une hypothèse de la régression linéaire, pas de la logistique.
La variance du résultat en logistique dépend de la probabilité prédite elle-même. Pour une Bernoulli, la variance vaut p(1 - p), maximale près de p = 0,5 et minimale près de 0 et 1. La variance n’est pas constante et le modèle en tient compte via la vraisemblance qu’il maximise.
Ainsi, vous ne violez rien en ayant des probabilités prédites avec des variances différentes : c’est le fonctionnement normal du modèle.
Les prédicteurs doivent être normalement distribués
Faux. La régression logistique ne pose aucune hypothèse distributionnelle sur les prédicteurs.
Vous pouvez mélanger des prédicteurs continus, binaires, de comptage et catégoriels. Les asymétries et queues épaisses ne posent pas de problème. La seule contrainte concerne la linéarité du logit (Hypothèse 3), qui porte sur la forme de relation, pas sur la forme de distribution.
Si l’asymétrie d’un prédicteur pose problème, c’est généralement à cause de la linéarité du logit ou de points influents.
Les résidus doivent être normalement distribués
Faux. Il n’y a aucune hypothèse de normalité sur les résidus en logistique.
La régression linéaire suppose des résidus normalement distribués autour de zéro pour son inférence. La logistique utilise l’estimation par maximum de vraisemblance sur une loi binomiale, et la distribution de ses résidus est déterminée par la variable (0/1) et la probabilité ajustée. Ils ne sont pas normaux, et n’ont pas à l’être.
Quand vous regardez les diagnostics de résidus (Hypothèse 6), vous cherchez des observations influentes et des points que le modèle n’explique pas, pas une courbe en cloche.
Comment vérifier les hypothèses en Python
J’utiliserai statsmodels pour les diagnostics. Scikit-learn ajuste la régression logistique mais n’expose pas VIF, statistiques d’influence ou diagnostics de résidus par défaut.
Mise en place de l’exemple
Je vais générer un jeu de churn synthétique avec trois prédicteurs (âge, revenu, score de dépense), en corrélant volontairement âge et revenu pour que la multicolinéarité apparaisse.
import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
np.random.seed(42)
n = 1000
age = np.random.normal(40, 12, n).clip(18, 80)
income = 30000 + 1500 * age + np.random.normal(0, 8000, n)
spending_score = np.random.uniform(1, 100, n)
logit_p = -3 + 0.04 * age + 0.02 * spending_score
p = 1 / (1 + np.exp(-logit_p))
y = np.random.binomial(1, p)
df = pd.DataFrame({
"churned": y,
"age": age,
"income": income,
"spending_score": spending_score,
})
model = smf.glm(
"churned ~ age + income + spending_score",
data=df, family=sm.families.Binomial()
).fit()
print(model.summary())

Résumé du modèle
Le résumé vous donne coefficients, erreurs standards, statistiques z et p-values. age et spending_score ressortent comme prédicteurs pertinents. Le coefficient de income est minuscule car le résultat ne dépend pas directement du revenu : son effet apparent est absorbé par l’âge.
Multicolinéarité avec le VIF
Le calcul est extrêmement simple avec statsmodels :
from statsmodels.stats.outliers_influence import variance_inflation_factor
X = sm.add_constant(df[["age", "income", "spending_score"]])
vif = pd.DataFrame({
"feature": X.columns,
"VIF": [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
})
print(vif[vif["feature"] != "const"])

Sortie VIF
Les VIF de age et income tournent autour de 5,5 : multicolinéarité modérée. spending_score est proche de 1, ce qui est souhaitable. Au-delà de 5, c’est un petit drapeau ; au-delà de 10, un vrai problème à traiter. Ici, on peut soit retirer age ou income, soit les combiner en une seule variable.
Linéarité du logit avec Box–Tidwell
Le test de Box–Tidwell ajoute des interactions entre chaque prédicteur continu et son logarithme. Des interactions significatives signalent une relation non linéaire dans les log-odds pour ce prédicteur.
df_bt = df.copy()
for col in ["age", "income", "spending_score"]:
df_bt[f"{col}_logx"] = df_bt[col] * np.log(df_bt[col])
bt_formula = (
"churned ~ age + income + spending_score + "
"age_logx + income_logx + spending_score_logx"
)
bt_model = smf.glm(
bt_formula, data=df_bt, family=sm.families.Binomial()
).fit()
interactions = ["age_logx", "income_logx", "spending_score_logx"]
print(bt_model.pvalues[interactions])

Sortie Box–Tidwell
Si une p-value est inférieure à 0,05, la linéarité du logit est suspecte pour ce prédicteur. Ici, le logit a été généré linéairement, les interactions ne devraient donc pas être significatives. Sur des données réelles, traitez un résultat significatif comme un signal pour tracer les log-odds empiriques et décider entre transformation ou spline.
Diagnostics d’influence
Statsmodels donne accès à la distance de Cook et au leverage via get_influence().
influence = model.get_influence()
cooks_d = influence.cooks_distance[0]
leverage = influence.hat_matrix_diag
flagged = pd.DataFrame({
"cooks_d": cooks_d,
"leverage": leverage,
}).sort_values("cooks_d", ascending=False).head(10)
print(flagged)

Diagnostics d’influence
Le seuil de la distance de Cook à investiguer est environ 4/n. Avec 1000 lignes, 0,004. Toute valeur nettement au-dessus mérite une inspection. Ici, les plus grandes distances restent faibles : c’est l’issue « ennuyeuse mais rassurante » que l’on souhaite.
Ajoutons une visualisation pour faciliter la lecture :

Diagnostics d’influence visualisés
Les points bien au-dessus de la ligne en pointillés sont à investiguer. Il y en a quelques-uns, mais pas trop.
Diagnostics des résidus
Les résidus de déviance indiquent les observations que le modèle ajuste mal.
deviance_resid = model.resid_deviance
fitted = model.fittedvalues
resid_df = pd.DataFrame({
"fitted": fitted,
"deviance": deviance_resid,
}).sort_values("deviance", key=abs, ascending=False).head(10)
print(resid_df)

Diagnostics des résidus
De grands résidus de déviance positifs : le modèle a attribué une faible probabilité à un cas positif. Négatifs : l’inverse. Recoupez ces observations à grand résidu avec les diagnostics d’influence ci-dessus. Un cas à la fois mal prédit et influent mérite votre priorité.
Comment vérifier les hypothèses en R
R offre un meilleur support intégré. L’essentiel provient de glm() en base et du package car.
Mise en place de l’exemple
Je génère un jeu similaire à l’exemple Python, avec âge et revenu corrélés.
set.seed(42)
n <- 1000
age <- pmin(pmax(rnorm(n, mean = 40, sd = 12), 18), 80)
income <- 30000 + 1500 * age + rnorm(n, sd = 8000)
spending_score <- runif(n, min = 1, max = 100)
logit_p <- -3 + 0.04 * age + 0.02 * spending_score
p <- 1 / (1 + exp(-logit_p))
churned <- rbinom(n, size = 1, prob = p)
df <- data.frame(churned, age, income, spending_score)
model <- glm(churned ~ age + income + spending_score,
data = df, family = binomial)
summary(model)

Sortie du résumé du modèle
La sortie de summary(model) fournit coefficients, erreurs standards, statistiques z et p-values. age et spending_score devraient apparaître pertinents, tandis que l’effet de income est absorbé par age.
Multicolinéarité avec le VIF
Le package car fournit vif() pour tout glm :
library(car)
vif(model)

Sortie VIF en R
age et income renverront des VIF autour de 5,7, montrant la multicolinéarité construite dans les données. spending_score est proche de 1. Comme en Python, au-delà de 5 on se méfie, au-delà de 10 c’est problématique.
Linéarité du logit avec Box–Tidwell
La fonction car::boxTidwell vise la régression linéaire, donc en logistique, le plus simple est d’ajouter manuellement les interactions et de réajuster :
df_bt <- df
df_bt$age_logx <- df_bt$age * log(df_bt$age)
df_bt$income_logx <- df_bt$income * log(df_bt$income)
df_bt$spending_score_logx <- df_bt$spending_score * log(df_bt$spending_score)
bt_model <- glm(
churned ~ age + income + spending_score +
age_logx + income_logx + spending_score_logx,
data = df_bt, family = binomial
)
interactions <- c("age_logx", "income_logx", "spending_score_logx")
summary(bt_model)$coefficients[interactions, ]

Sortie BoX–Tidwell en R
La sortie donne le coefficient et la p-value de chaque interaction. Des p-values significatives signalent une violation de la linéarité du logit pour ce prédicteur. Sur ces données synthétiques, le test ne devrait pas rejeter la linéarité. Sur des données réelles, enchaînez avec des tracés de log-odds empiriques ou ajustez des splines (package splines).
Diagnostics d’influence
R fournit cooks.distance() et hatvalues() en base, sans package tiers :
cooks_d <- cooks.distance(model)
leverage <- hatvalues(model)
influence_df <- data.frame(
index = seq_along(cooks_d),
cooks_d = cooks_d,
leverage = leverage
)
head(influence_df[order(-influence_df$cooks_d), ], 10)

Diagnostics d’influence en R
Même seuil pour la distance de Cook : 4/n, soit 0,004 pour 1000 lignes. Toute valeur bien au-dessus mérite enquête. Pour une vérification rapide, plot(model, which = 4) produit un graphique de la distance de Cook en une ligne.

Diagnostics d’influence en R visualisés
Diagnostics des résidus
La fonction residuals() renvoie les résidus de déviance d’un glm :
deviance_resid <- residuals(model, type = "deviance")
fitted_vals <- fitted(model)
resid_df <- data.frame(
fitted = fitted_vals,
deviance = deviance_resid
)
head(resid_df[order(-abs(resid_df$deviance)), ], 10)

Diagnostics des résidus en R
De grands résidus absolus correspondent à des cas mal prédits. Recoupez-les avec les drapeaux de distance de Cook ci-dessus pour repérer les observations à la fois mal ajustées et influentes.
Pour une vue d’ensemble en un coup d’œil, influence.measures(model) renvoie un tableau combinant distance de Cook, leverage, DFBETAs et d’autres statistiques d’influence. C’est le moyen le plus rapide de parcourir tous les diagnostics standard d’un glm ajusté.
Que se passe-t-il quand les hypothèses sont violées ?
La plupart des violations ne « cassent » pas votre modèle. Elles le font dévier subtilement, et vous ne le verrez que si vous savez quoi chercher.
Quatre conséquences reviennent souvent :
- Coefficients instables : de petites variations des données (quelques lignes, de légères modifs d’ingénierie de variables) peuvent changer fortement les coefficients ou leur signe. C’est l’effet classique de la multicolinéarité et aussi d’un échantillon trop petit pour le nombre de prédicteurs.
- Mauvaise calibration : les probabilités prédites ne reflètent plus les taux observés. Le modèle prédit 30 % de churn pour un groupe et on observe 15 %. La précision peut rester correcte, mais les probabilités sont décalées. Les violations de la linéarité du logit et les points influents y contribuent.
- Inférence trompeuse : c’est la plus difficile à détecter, car le modèle produit des erreurs standards et p-values qui semblent normales. Des observations corrélées réduisent les erreurs standards en dessous de leur vraie valeur, et de mauvaises spécifications les gonflent. Dans les deux cas, vos p-values ne signifient pas ce que vous croyez.
- Prédiction dégradée : le symptôme le plus visible, même s’il est souvent le plus faible. Les prédictions résistent généralement mieux que les coefficients, d’où le risque de passer à côté si l’on ne regarde que l’exactitude.
Honnêtement, les violations rendent rarement un modèle inutilisable. Elles rendent certaines parties peu fiables, selon l’hypothèse rompue. D’où l’importance des diagnostics.
Quelles alternatives si les hypothèses échouent ?
Si vos diagnostics pointent des problèmes insolubles au sein de la logistique, passez à un modèle qui n’impose pas ces hypothèses.
Les modèles additifs généralisés (GAM) sont la première piste. Un GAM conserve la fonction de lien logit et la structure additive interprétable, mais remplace les termes linéaires par des fonctions lisses de chaque prédicteur. Vous obtenez des « coefficients en forme » plutôt que des nombres uniques, ce qui résout la linéarité du logit. Les GAM restent assez paramétriques pour être examinés et interprétés, un bon cran au-dessus de la logistique quand la linéarité ne tient pas.
Les modèles à arbres sont l’alternative plus flexible. Random forests et gradient boosting n’imposent aucune hypothèse sur les distributions ni sur la forme des relations. Ils gèrent la multicolinéarité et capturent les non-linéarités. Ils n’offrent pas l’interprétation simple par coefficients, mais surpassent souvent sur les métriques prédictives quand les données présentent des structures non linéaires ou des interactions non spécifiées.
Le choix entre GAM et arbres dépend de votre besoin.
- Choisissez les GAM si l’interprétabilité prime et que vous voulez voir l’effet de chaque prédicteur sur les log-odds
- Choisissez un gradient-boosted tree si la qualité prédictive prime et qu’un modèle moins transparent vous convient
Il est utile de rappeler que les hypothèses de la logistique sont plus faciles à vérifier qu’à ignorer. Si vous pouvez corriger par transformation, spline, régularisation ou meilleur échantillon, l’interprétabilité et l’inférence de la logistique l’emportent souvent sur un basculement vers un modèle plus souple.
Passez aux GAM ou aux arbres quand les diagnostics montrent que les hypothèses ne tiennent vraiment pas, pas juste parce que la logistique n’est pas « state of the art ».
Bonnes pratiques pour modéliser en régression logistique
Et pour finir, suivez cette courte liste pour obtenir un modèle fiable :
- Vérifiez les hypothèses avant d’interpréter : exécutez VIF, test de Box–Tidwell et diagnostics d’influence avant de lire les coefficients. Si vous interprétez d’abord et vérifiez ensuite, vous finirez par défendre des chiffres non vérifiés. Vous ne voulez pas être cette personne en réunion
- Utilisez la régularisation quand l’échantillon est petit : ridge ou elastic net stabilisent les coefficients quand l’EPV est faible ou les prédicteurs corrélés. Vous échangez un léger biais contre une grosse réduction de variance : souvent un bon compromis
- Validez sur des données non vues : conservez un jeu de test ou utilisez la validation croisée. Les métriques d’entraînement surévaluent la performance dès que le modèle peut surajuster, ce qui arrive avec beaucoup de prédicteurs ou des événements rares
- Évaluez la calibration : la précision masque si vos probabilités reflètent les taux réels. Utilisez le log-loss ou le score de Brier et examinez une courbe de calibration quand les probabilités comptent pour les décisions business
Conclusion
À vrai dire, la régression logistique fait partie des modèles les plus indulgents.
Elle tolère des prédicteurs asymétriques et des classes déséquilibrées, et se moque de la forme des résidus. Ce qu’elle tolère mal, ce sont une relation mal spécifiée avec les log-odds et un ensemble de prédicteurs redondants.
C’est pourquoi la linéarité du logit et la multicolinéarité sont les deux vérifications à considérer comme obligatoires. Ce sont elles qui déforment le modèle d’une façon qu’aucune métrique standard ne détecte. Les quatre autres hypothèses restent pertinentes, mais ces deux-là méritent votre priorité.
Par sécurité, exécutez les diagnostics en parallèle de l’évaluation, pas après. Un modèle qui prédit bien et passe ses contrôles d’hypothèses est un modèle que vous pouvez défendre. En deçà, c’est un modèle que vous avez entraîné sans vraiment l’avoir validé.
Si tout cela vous paraît complexe, c’est normal. Devenir un bon ingénieur en machine learning demande beaucoup ; nous vous recommandons donc de vous inscrire à notre parcours Machine Learning Scientist in Python. 85 heures de formation pour être prêt·e pour 2026.
FAQs
La régression logistique a-t-elle des hypothèses ?
Oui. La régression logistique impose moins d’hypothèses que la régression linéaire, mais elle n’en est pas dépourvue. Les principales portent sur la forme de la variable cible, l’indépendance des observations, la linéarité des log-odds et l’absence de multicolinéarité élevée ou de points très influents.
Quelles sont les hypothèses les plus importantes de la régression logistique ?
Les deux plus importantes sont la linéarité du logit et l’absence de forte multicolinéarité. La linéarité du logit est la plus souvent mal comprise : la régression logistique n’assume pas de relation linéaire avec la cible, mais bien avec les log-odds. La multicolinéarité compte car elle déforme les coefficients et gonfle les erreurs standards sans affecter l’exactitude, ce qui la rend invisible si l’on ne regarde que la performance prédictive.
Que se passe-t-il si les hypothèses de la régression logistique sont violées ?
Cela dépend de l’hypothèse en cause. Des violations de la linéarité du logit ou une forte multicolinéarité dégradent discrètement les coefficients tout en laissant l’exactitude intacte, d’où leur discrétion. Des manquements à l’indépendance gonflent ou réduisent les erreurs standards, rendant les p-values peu fiables. La plupart des violations ne rendent pas un modèle inutile, mais elles rendent certaines parties peu fiables d’une manière que l’exactitude seule ne montre pas.
La régression logistique exige-t-elle des prédicteurs normalement distribués ?
Non. La régression logistique ne pose aucune hypothèse distributionnelle sur les prédicteurs. Vous pouvez mélanger des variables continues, catégorielles, asymétriques ou à queues épaisses sans souci. Ce qui importe, c’est la relation entre chaque prédicteur et les log-odds, pas la forme marginale du prédicteur.
Quel est un bon seuil de VIF en régression logistique ?
Des VIF jusqu’à 5 sont généralement acceptables, entre 5 et 10 ils suggèrent une multicolinéarité modérée à investiguer, et au-delà de 10 ils signalent des prédicteurs redondants. Ces seuils sont des conventions, car l’interprétation du VIF dépend de la taille d’échantillon et de la précision recherchée. Si le VIF d’un prédicteur est élevé et que son erreur standard est instable selon les sous-échantillons, vous avez des indices que la colinéarité pose problème.
