Capitolo 11 Richiami di Regressione Logistica
La regressione logistica è parte dei modelli GLM. L’obiettivo della regressione logistica è trovare una relazione causale tra i predittori (le colonne della matrice \(X\)) e la variabile di risposta \(Y\), dove \(Y\) può assumente solo valori \(0/1\) (dove \(0\) = “assenza”; \(1\) = “presenza”).
Il modello usato per trovare questa relazione, se esiste, stabilisce che la variabile di risposta è distribuia come una Binomiale con parametri \(n\) e \(p\),
\[Y_i \sim Bi(n_i, p_i)\]
e che \(p\) è “legato” ai predittori attraverso una trasformazione di una funzione lineare:
\[p_i = \frac{exp\left(a + b x_{i1} + c x_{i2} + \dots \right)}{1 + exp\left(a + b x_{i1} + c x_{i1} + \dots \right)}\]
dove i valori \(x_{ij}\) rappresentano l’\(i\)-mo valore (riga) della \(j\)-ma colonna della matrice \(X\) (cioè, i \(k\) predittori per l’\(i\)-ma osservazione).
La regressione logistica cerca i valori dei parametri \(a, b, c, \dots\) che massimizzano la (densità di) probabilità di avere i dati che sono stati osservati. Questi valori dei parametri (genericamente indicati con \(\hat{a}, \hat{b}, \hat{c}, \dots\)) saranno le stime dei parametri stessi.
11.1 Esempio: Default carte di credito
Come primo esempio presentiamo il dataset Default, contenente dati relativi a 10000
giovani utilizzatori di carta di credito, con l’obiettivo di prevedere quali clienti
non pagheranno il loro debito sulla carta di credito:
## default student balance income
## No :9667 No :7056 Min. : 0.0 Min. : 772
## Yes: 333 Yes:2944 1st Qu.: 481.7 1st Qu.:21340
## Median : 823.6 Median :34553
## Mean : 835.4 Mean :33517
## 3rd Qu.:1166.3 3rd Qu.:43808
## Max. :2654.3 Max. :73554
Per eseguire la regressione logistica sui dati delle carte di credito, useremo la funzione glm(). Questa funzione
richiede che sia impostata una formula che specifica la variabile di risposta categoriale e i predittori da usare,
il data frame contenente i dati, la famiglia distributiva, ed una serie di altri argomenti opzionali:
res_logit <- glm(default ~ student + balance, data = Default,
family = binomial(link = logit))
summary(res_logit)##
## Call:
## glm(formula = default ~ student + balance, family = binomial(link = logit),
## data = Default)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.4578 -0.1422 -0.0559 -0.0203 3.7435
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.075e+01 3.692e-01 -29.116 < 2e-16 ***
## studentYes -7.149e-01 1.475e-01 -4.846 1.26e-06 ***
## balance 5.738e-03 2.318e-04 24.750 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 2920.6 on 9999 degrees of freedom
## Residual deviance: 1571.7 on 9997 degrees of freedom
## AIC: 1577.7
##
## Number of Fisher Scoring iterations: 8
Per ottenere la probabiità di essere un defaulter (un non pagatore) per un singolo cliente, si può usare la funzione predict():
## 1 2 3 4 5 6
## 0.0014090960 0.0011403179 0.0100571943 0.0004469571 0.0019434977 0.0020503778
A partire dalla probabilità di default, dobbiamo scegliere una soglia di probabilità per cui definire probabile non pagatore
un cliente.
Per esempio, e si sceglie come soglia \(0.5\), allora il singolo cliente verrà classificato come non pagatore
se la sua ptobabilità stimata di defalut è maggiore di \(0.5\):
Per stabilire la bontà della classificazione, uno strumento spesso usato è la cosiddetta “matrice di confusione”, che incrocia le frequenze delle classi effettivamente osservate e quelle previste per tutte le osservazioni (clienti):
##
## default_logit No Yes
## Prev: No 9628 228
## PreV: Sì 39 105