Oltre la regressione lineare

Modelli lineari generalizzati in Python

Ita Cirovic Donev

Data Science Consultant

Obiettivi del corso

  • Impara i mattoni dei GLM
  • Allena GLM
  • Interpreta i risultati
  • Valuta le prestazioni
  • Calcola previsioni
  • Capitolo 1: Come i GLM estendono i modelli lineari
  • Capitolo 2: Regressione binomiale (logistica)
  • Capitolo 3: Regressione di Poisson
  • Capitolo 4: Regressione logistica multivariata
Modelli lineari generalizzati in Python

Ripasso dei modelli lineari

Scatterplot anni di esperienza e salario.

$\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}$

Modelli lineari generalizzati in Python

Ripasso dei modelli lineari

Scatterplot anni di esperienza e salario.

$\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$ - variabile risposta (output)

Modelli lineari generalizzati in Python

Ripasso dei modelli lineari

Scatterplot anni di esperienza e salario.

$\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$ - variabile risposta (output)
$\color{#FF6138}x$ - variabile esplicativa (input)

Modelli lineari generalizzati in Python

Ripasso dei modelli lineari

Scatterplot anni di esperienza e salario.

$\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$ - variabile risposta (output)
$x$ - variabile esplicativa (input)
$\color{#007AFF}{\beta}$ - parametri del modello
$\color{#007AFF}{\beta_0}$ - intercetta
$\color{#007AFF}{\beta_1}$ - pendenza

Modelli lineari generalizzati in Python

Ripasso dei modelli lineari

Scatterplot anni di esperienza e salario.

$\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$ - variabile risposta (output)
$x$ - variabile esplicativa (input)
$\color{#007AFF}{\beta}$ - parametri del modello
$\color{#007AFF}{\beta_0}$ - intercetta
$\color{#007AFF}{\beta_1}$ - pendenza
$\color{#B12BFF}{\epsilon}$ - errore casuale

Modelli lineari generalizzati in Python

MODELLO LINEARE - ols()

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

MODELLO LINEARE GENERALIZZATO - glm()

import statsmodels.api as sm
from statsmodels.formula.api import glm
model = glm(formula = 'y ~ X', 
            data = my_data,
            family = sm.families.____).fit()
Modelli lineari generalizzati in Python

Assunzioni dei modelli lineari

Fit lineare ai dati di anni di esperienza e salario.

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

Funzione di regressione

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

Assunzioni

  • Linearità nei parametri
  • Errori indipendenti e normali
  • Varianza costante
Modelli lineari generalizzati in Python

E se ...?

  • La risposta è binaria o di conteggio $\rightarrow \color{red}{\text{NON continua}}$

Displot di variabile continua, binaria e Poisson.

  • La varianza di $y$ non è costante $\rightarrow \color{red}{\text{dipende dalla media}}$
Modelli lineari generalizzati in Python

Dataset - nidificazione dei granchi a ferro di cavallo

Nome variabile Descrizione
sat Numero di satelliti nel nido
y C’è almeno un satellite nel nido; 0/1
weight Peso della femmina (kg)
width Larghezza della femmina (cm)
color 1 - medio chiaro, 2 - medio, 3 - medio scuro, 4 - scuro
spine 1 - entrambe buone, 2 - una usurata/rotta, 3 - entrambe usurate/rotte
1 A. Agresti, An Introduction to Categorical Data Analysis, 2007.
Modelli lineari generalizzati in Python

Modello lineare e risposta binaria

 

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

y ~ weight

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

Modelli lineari generalizzati in Python

Modello lineare e risposta binaria

Scatterplot peso della femmina e risposta (almeno un satellite vicino).

Modelli lineari generalizzati in Python

Modello lineare e risposta binaria

Fit lineare tra peso della femmina e risposta (almeno un satellite vicino).

Modelli lineari generalizzati in Python

Modello lineare e risposta binaria

Lettura del valore di probabilità per il fit lineare tra peso della femmina e risposta (almeno un satellite vicino).

Modelli lineari generalizzati in Python

Modello lineare e dati binari

Aggiunta del fit GLM (Binomiale) al fit lineare tra peso della femmina e risposta (almeno un satellite vicino).

Modelli lineari generalizzati in Python

Modello lineare e dati binari

Lettura della probabilità per il fit GLM (Binomiale) tra peso della femmina e risposta (almeno un satellite vicino).

Modelli lineari generalizzati in Python

Dalle probabilità alle classi

Separazione dell’output del modello dato un cutoff di probabilità.

Modelli lineari generalizzati in Python

Passiamo alla pratica!

Modelli lineari generalizzati in Python

Preparing Video For Download...