Regressione logistica multivariabile

Modelli lineari generalizzati in Python

Ita Cirovic Donev

Data Science Consultant

Setting multivariabile

  • Formula del modello $$ \text{logit}(y) = \beta_0+\beta_1\color{red}{x_1} $$
Modelli lineari generalizzati in Python

Setting multivariabile

  • Formula del modello $$ \text{logit}(y) = \color{blue}{\beta_0}+\color{blue}{\beta_1}\color{red}{x_1} $$
Modelli lineari generalizzati in Python

Setting multivariabile

  • Formula del modello $$ \text{logit}(y) = \beta_0+\beta_1x_1 + \beta_2\color{red}{x_2} + ... + \beta_p \color{red}{x_p} $$
Modelli lineari generalizzati in Python

Setting multivariabile

  • Formula del modello $$ \text{logit}(y) = \beta_0+\beta_1x_1 + \color{blue}{\beta_2}\color{red}{x_2} + ... + \color{blue}{\beta_p}\color{red}{x_p} $$

  • In Python

    model = glm('y ~ x1 + x2 + x3 + x4', 
              data = my_data, 
              family = sm.families.Binomial()).fit()
    
Modelli lineari generalizzati in Python

Esempio - cambio di pozzo

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
===============================================================================
Modelli lineari generalizzati in Python

Esempio - cambio di pozzo

                  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
  • Entrambi i coefficienti sono statisticamente significativi
  • Segno dei coefficienti logico
  • Una variazione unitaria di distance100 corrisponde a −0,89 nel logit
  • Una variazione unitaria di arsenic corrisponde a +0,46 nel logit
Modelli lineari generalizzati in Python

Impatto di aggiungere una variabile

  • Impatto della variabile arsenic
  • distance100 passa da −0,62 a −0,89
  • Più lontano dal pozzo sicuro
    • Maggiore probabilità di arsenico più alto
                  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  
Modelli lineari generalizzati in Python

Multicollinearità

  • Variabili correlate con altre variabili del modello

Struttura di due variabili con correlazione 0,8 0,4 0, −0,4 e −0,8 rispettivamente.

  • Aumento degli errori standard dei coefficienti
    • I coefficienti possono non essere significativi
1 https://en.wikipedia.org/wiki/Correlation_and_dependence
Modelli lineari generalizzati in Python

Presenza di multicollinearità?

Cosa controllare?

  • Coefficiente non significativo ma variabile molto correlata con $y$
  • Aggiungere/rimuovere una variabile cambia molto i coefficienti
  • Segno del coefficiente non logico
  • Variabili con alta correlazione a coppie
Modelli lineari generalizzati in Python

Variance Inflation Factor (VIF)

  • Diagnostica più usata per la multicollinearità
    • Calcolata per ogni variabile esplicativa
    • Quanto è gonfiata la varianza del coefficiente
  • Soglia consigliata VIF > 2,5
  • In Python
from statsmodels.stats.outliers_influence import variance_inflation_factor
Modelli lineari generalizzati in Python

Passons à la pratique !

Modelli lineari generalizzati in Python

Preparing Video For Download...