Régression logistique multivariable

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

Ita Cirovic Donev

Data Science Consultant

Contexte multivariable

  • Formule du modèle $$ \text{logit}(y) = \beta_0+\beta_1\color{red}{x_1} $$
Modèles linéaires généralisés en Python

Contexte multivariable

  • Formule du modèle $$ \text{logit}(y) = \color{blue}{\beta_0}+\color{blue}{\beta_1}\color{red}{x_1} $$
Modèles linéaires généralisés en Python

Contexte multivariable

  • Formule du modèle $$ \text{logit}(y) = \beta_0+\beta_1x_1 + \beta_2\color{red}{x_2} + ... + \beta_p \color{red}{x_p} $$
Modèles linéaires généralisés en Python

Contexte multivariable

  • Formule du modèle $$ \text{logit}(y) = \beta_0+\beta_1x_1 + \color{blue}{\beta_2}\color{red}{x_2} + ... + \color{blue}{\beta_p}\color{red}{x_p} $$

  • En Python

    model = glm('y ~ x1 + x2 + x3 + x4', 
              data = my_data, 
              family = sm.families.Binomial()).fit()
    
Modèles linéaires généralisés en Python

Exemple — changement de puits

formula = 'switch ~ distance100 + arsenic'
wells_fit = glm(formula = formula, data = wells, 
                family = sm.families.Binomial()).fit()
===============================================================================
                  coef    std err          z      P>|z|      [0.025      0.975]
-------------------------------------------------------------------------------
Intercept       0.0027      0.079      0.035      0.972      -0.153       0.158
distance100    -0.8966      0.104     -8.593      0.000      -1.101      -0.692
arsenic         0.4608      0.041     11.134      0.000       0.380       0.542
===============================================================================
Modèles linéaires généralisés en Python

Exemple — changement de puits

                  coef    std err          z      P>|z|      [0.025      0.975]
-------------------------------------------------------------------------------
Intercept       0.0027      0.079      0.035      0.972      -0.153       0.158
distance100    -0.8966      0.104     -8.593      0.000      -1.101      -0.692
arsenic         0.4608      0.041     11.134      0.000       0.380       0.542
  • Les deux coefficients sont statistiquement significatifs
  • Le signe des coefficients est logique
  • Une variation d'une unité de distance100 correspond à une baisse de 0,89 du logit
  • Une variation d'une unité de arsenic correspond à une hausse de 0,46 du logit
Modèles linéaires généralisés en Python

Impact de l'ajout d'une variable

  • Impact de la variable arsenic
  • distance100 passe de -0,62 à -0,89
  • Plus éloigné du puits sécuritaire
    • Probabilité plus élevée d'avoir plus d'arsenic
                  coef    std err 
---------------------------------
Intercept       0.0027      0.079
distance100    -0.8966      0.104
arsenic         0.4608      0.041  
                  coef    std err
---------------------------------
Intercept       0.6060      0.060
distance100    -0.6291      0.097  
Modèles linéaires généralisés en Python

Multicolinéarité

  • Variables corrélées avec d'autres variables du modèle

Structure de deux variables avec une corrélation de 0,8 0,4 0, -0,4 et -0,8 respectivement.

  • Hausse des erreurs types des coefficients
    • Les coefficients peuvent ne pas être statistiquement significatifs
1 https://en.wikipedia.org/wiki/Correlation_and_dependence
Modèles linéaires généralisés en Python

Présence de multicolinéarité ?

Que surveiller ?

  • Coefficient non significatif, mais variable fortement corrélée à $y$
  • Ajouter/retirer une variable change fortement les coefficients
  • Signe du coefficient illogique
  • Corrélations élevées entre paires de variables
Modèles linéaires généralisés en Python

Facteur d'inflation de la variance (VIF)

  • Diagnostic le plus utilisé pour la multicolinéarité
    • Calculé pour chaque variable explicative
    • Mesure l'ampleur de l'inflation de la variance du coefficient
  • Seuil suggéré VIF > 2,5
  • En Python
from statsmodels.stats.outliers_influence import variance_inflation_factor
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...