Dati binari e regressione logistica

Modelli lineari generalizzati in Python

Ita Cirovic Donev

Data Science Consultant

Dati di risposta binaria

  • Risposta binaria $\rightarrow \large{\texttt{\color{#079EA1}{0},\color{#ED715F}{1}}}$

Esempi:

  • Credit scoring $\rightarrow \texttt{\color{#ED715F}{"Default"}/\color{#079EA1}{"No default"}}$
  • Superare un test $\rightarrow \texttt{\color{#079EA1}{"Pass"}/\color{#ED715F}{"Fail"}}$
  • Rilevamento frodi $\rightarrow \texttt{\color{#ED715F}{"Frode"}/\color{#079EA1}{"No frode"}}$
  • Scelta di un prodotto $\rightarrow \texttt{\color{#2485F2}{"Prodotto ABC"}/\color{#F2AC30}{"Prodotto XYZ"}}$
Modelli lineari generalizzati in Python

Dati binari

NON RAGGRUPPATI

  • Singolo evento
  • Lancia una moneta
  • Due esiti possibili: 0/1
  • $Bernoulli(p)$ o
  • $Binomiale(n=1,p)$

RAGGRUPPATI

  • Eventi multipli
  • Lancia più monete
  • Numero di successi in $n$ prove
  • $Binomiale(n,p)$
Modelli lineari generalizzati in Python

Funzione logistica

Scatterplot: ore di studio e esito test (0/1)

Modelli lineari generalizzati in Python

Funzione logistica

Scatterplot: ore di studio e esito test (0/1)

  • Esito test: $PASS=1$ o $FAIL=0$

  • Vogliamo modellare

$P(y=1)=\beta_0 + \beta_1x_1$

$P(\text{Pass})=\beta_0 + \beta_1 \times \text{Ore di studio}$

Modelli lineari generalizzati in Python

Funzione logistica

Adattamento logistico ai dati: ore di studio e esito test (0/1)

  • Esito test: $PASS=1$ o $FAIL=0$

  • Vogliamo modellare

$P(y=1)=\beta_0 + \beta_1x_1$

$P(\text{Pass})=\beta_0 + \beta_1 \times \text{Ore di studio}$

  • Usa la funzione logistica

$f(z) = \frac{1}{(1+\exp(-z))}$

Modelli lineari generalizzati in Python

Odds e odds ratio

       

$$ ODDS = \frac{\text{evento che si verifica}}{\text{evento che NON si verifica}} $$

       

$$ \text{RAPPORTO DI ODDS} = \frac{odds 1}{odds 2} $$

Modelli lineari generalizzati in Python

Esempio di odds

  • 4 partite 3 vittorie e 1 sconfitta in sequenza

  • Odds 3 a 1 Calcolo visivo degli odds con 3 vittorie al numeratore e 1 sconfitta al denominatore.

Modelli lineari generalizzati in Python

Odds e probabilità

  $$ \text{odds} \neq \text{probabilità} $$

  $$ \text{odds} = \frac{\text{probabilità}}{1-\text{probabilità}} $$

  $$ \text{probabilità} = \frac{\text{odds}}{1+\text{odds}} $$

Modelli lineari generalizzati in Python

Dal modello di probabilità alla regressione logistica

 

Passo 1. Modello di probabilità

$E(y)=\mu=P(y=1)=\beta_0 + \beta_1x_1$

 

Passo 2. Funzione logistica

$f(z) = \large{\frac{1}{(1+\exp(-z))}}$

 

Passo 3. Applica la funzione logistica $\rightarrow$ INVERSA-LOGIT

$\mu = \large{\frac{1}{1+\exp(-(\beta_0+\beta_1x_1))}} = \large{\frac{\exp(\beta_0+\beta_1x_1)}{1+\exp(\beta_0+\beta_1x_1)}}$

$1-\mu = \large{\frac{1}{1+\exp(\beta_0+\beta_1x_1)}}$

Modelli lineari generalizzati in Python

Dal modello di probabilità alla regressione logistica

 

  • Probabilità $\rightarrow$ odds $$ ODDS=\frac{\mu}{1-\mu} = exp{(\beta_0+\beta_1x_1)} $$  
  • Trasformazione log $\rightarrow \color{#CF5383}{\text{REGRESSIONE LOGISTICA}}$

  $$ LOGIT(\mu)=log(\frac{\mu}{1-\mu}) = \beta_0+\beta_1x_1 $$

Modelli lineari generalizzati in Python

Regressione logistica in Python

Funzione - glm()

model_GLM = glm(formula = 'y ~ x',                        
                data = my_data, 
                family = sm.families.Binomial()).fit

Input

y = [0,1,1,0,...]
y = ['No','Sì','Sì',...]
y = ['Fail','Pass','Pass',...]
Modelli lineari generalizzati in Python

Esercitiamoci!

Modelli lineari generalizzati in Python

Preparing Video For Download...