Aller au-delà de la régression linéaire

Modèles linéaires généralisés en Python

Ita Cirovic Donev

Data Science Consultant

Objectifs du cours

  • Découvrir les bases des GLM
  • Entraîner des GLM
  • Interpréter les résultats
  • Évaluer les performances
  • Calculer des prédictions
  • Chapitre 1 : en quoi les GLM prolongent les modèles linéaires
  • Chapitre 2 : régression binomiale (logistique)
  • Chapitre 3 : régression de Poisson
  • Chapitre 4 : régression logistique multivariée
Modèles linéaires généralisés en Python

Rappel : modèles linéaires

Nuage de points : années d'expérience et salaire.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \beta_0 + \beta_1\times\color{#FF6138}{\text{experience}} + \epsilon}$

$\normalsize{\color{#00A388}y = \beta_0 + \beta_1x_1 + \epsilon}$

Modèles linéaires généralisés en Python

Rappel : modèles linéaires

Nuage de points : années d'expérience et salaire.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\color{#00A388}{\text{salary}} = \beta_0 + \beta_1\times{\text{experience}} + \epsilon$

$\color{#00A388}y = \beta_0 + \beta_1x_1 + \epsilon$

where:
$\color{#00A388}y$ - variable réponse (sortie)

Modèles linéaires généralisés en Python

Rappel : modèles linéaires

Nuage de points : années d'expérience et salaire.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \beta_0 + \beta_1\times\color{#FF6138}{\text{experience}} + \epsilon}$

$\normalsize{\color{#00A388}y = \beta_0 + \beta_1\color{#FF6138}{x_1} + \epsilon}$

where:
$y$ - variable réponse (sortie)
$\color{#FF6138}x$ - variable explicative (entrée)

Modèles linéaires généralisés en Python

Rappel : modèles linéaires

Nuage de points : années d'expérience et salaire.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\times\color{#FF6138}{\text{experience}} + \epsilon}$

$\normalsize{\color{#00A388}y = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\color{#FF6138}{x_1} + \epsilon}$

where:
$y$ - variable réponse (sortie)
$x$ - variable explicative (entrée)
$\color{#007AFF}{\beta}$ - paramètres du modèle
$\color{#007AFF}{\beta_0}$ - ordonnée à l'origine
$\color{#007AFF}{\beta_1}$ - pente

Modèles linéaires généralisés en Python

Rappel : modèles linéaires

Nuage de points : années d'expérience et salaire.

$\color{#00A388}{\text{salary}} \sim \color{#FF6138}{\text{experience}}$

$\normalsize{\color{#00A388}{\text{salary}} = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\times\color{#FF6138}{\text{experience}} + \color{#B12BFF}\epsilon}$

$\normalsize{\color{#00A388}y = \color{#007AFF}{\beta_0} + \color{#007AFF}{\beta_1}\color{#FF6138}{x_1} + \color{#B12BFF}\epsilon}$

where:
$y$ - variable réponse (sortie)
$x$ - variable explicative (entrée)
$\color{#007AFF}{\beta}$ - paramètres du modèle
$\color{#007AFF}{\beta_0}$ - ordonnée à l'origine
$\color{#007AFF}{\beta_1}$ - pente
$\color{#B12BFF}{\epsilon}$ - erreur aléatoire

Modèles linéaires généralisés en Python

MODÈLE LINÉAIRE - ols()

from statsmodels.formula.api import ols
model = ols(formula = 'y ~ X', 
            data = my_data).fit()

Modèle linéaire GÉNÉRALISÉ - glm()

import statsmodels.api as sm
from statsmodels.formula.api import glm
model = glm(formula = 'y ~ X', 
            data = my_data,
            family = sm.families.____).fit()
Modèles linéaires généralisés en Python

Hypothèses des modèles linéaires

Ajustement linéaire aux données : années d'expérience et salaire.

$$ \normalsize{{\text{salary} = \color{blue}{25790} + \color{blue}{9449}\times\text{experience}}} $$

Fonction de régression

$\normalsize{E[y] = \mu = \beta_0 + \beta_1x_1}$

Hypothèses

  • Linéarité en paramètres
  • Erreurs indépendantes et normalement distribuées
  • Variance constante
Modèles linéaires généralisés en Python

Et si… ?

  • La réponse est binaire ou un compte $\rightarrow \color{red}{\text{PAS continue}}$

Distributions : continue, binaire et Poisson.

  • La variance de $y$ n'est pas constante $\rightarrow \color{red}{\text{dépend de la moyenne}}$
Modèles linéaires généralisés en Python

Jeu de données : nidification des limules

Nom de variable Description
sat Nombre de satellites dans le nid
y Au moins un satellite dans le nid ; 0/1
weight Poids du crabe femelle en kg
width Largeur du crabe femelle en cm
color 1 - moyen clair, 2 - moyen, 3 - moyen foncé, 4 - foncé
spine 1 - les deux en bon état, 2 - un usé ou cassé, 3 - les deux usés ou cassés
1 A. Agresti, An Introduction to Categorical Data Analysis, 2007.
Modèles linéaires généralisés en Python

Modèle linéaire et réponse binaire

 

$\text{satellite crab} \sim \text{female crab weight}$

y ~ weight

$P(\text{satellite crab is present})=P(y=1)$

Modèles linéaires généralisés en Python

Modèle linéaire et réponse binaire

Nuage de points : poids du crabe femelle et réponse (au moins un satellite présent).

Modèles linéaires généralisés en Python

Modèle linéaire et réponse binaire

Ajustement linéaire : poids du crabe femelle et réponse (au moins un satellite présent).

Modèles linéaires généralisés en Python

Modèle linéaire et réponse binaire

Lecture d'une probabilité pour l'ajustement linéaire : poids du crabe femelle et réponse (au moins un satellite présent).

Modèles linéaires généralisés en Python

Modèle linéaire et données binaires

Ajout d'un ajustement GLM (binomial) à l'ajustement linéaire : poids du crabe femelle et réponse (au moins un satellite présent).

Modèles linéaires généralisés en Python

Modèle linéaire et données binaires

Lecture d'une probabilité pour l'ajustement GLM (binomial) : poids du crabe femelle et réponse (au moins un satellite présent).

Modèles linéaires généralisés en Python

Des probabilités aux classes

Séparation des sorties du modèle selon un seuil de probabilité défini.

Modèles linéaires généralisés en Python

Passons à la pratique !

Modèles linéaires généralisés en Python

Preparing Video For Download...