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