5.4 Le osservazioni influenti
Una volta che abbiamo stimato il modello di regressione lineare, è necessario eseguire una serie di verifiche per controllare che le ipotesi del modello siano soddisfatte e per valutare che non ci siano troppe osservazioni che esercitano un’influenza particolarmente forte sui risultati della stima. Ora presentiamo alcune funzioni disponibli in R per identificare queste ultime.
Due funzioni di R utili per identificare la presenza di osservazioni potenzialmente influenti sono rstandard()
e hatvalues()
, che restituiscono rispettivamente i residui standardizzati e i cosiddetti effetti-leva (in inglese leverage). Entrambe le funzioni richiedono solo che venga specificato il modello stimato e producono in output un vettore numerico contenenti tali quantità. Entrambe queste misure possono essere rappresentate in un grafico per evidenziare i valori più critici. Il codice seguente calcola e produce il grafico dei residui standardizzati per il modello multiplo comp_m2
:
> stdres <- rstandard(comp_m2)
> plot(stdres, ylim = c(min(stdres, -3), max(stdres, 3)),
+ xlab = "Indice di riga", ylab = "Residui standardizzati", type = "n")
> text(x = stdres, labels = 1:nrow(comp), cex = 0.5)
> abline(h = c(-2, 0, 2), lty = 2)
Notate che nella funzione plot()
abbiamo utilizzato l’argomento type = "n"
(che sta per “nothing”), il quale consente di preparare gli assi del grafico, ma di non disegnare i punti. Questi vengono aggiunti con la successiva riga di codice attraverso la funzione text()
, che sovrappone un’etichetta di testo in corrispondenza delle coordinate dei punti (x = stdres
). In questo esempio le etichette di testo usate sono i numeri di riga delle osservazioni (labels = 1:nrow(comp)
). Ciò permette di identificare direttamente dal grafico quali sono le osservazioni con un residuo standardizzato particolarmente grande (in valore assoluto). Le soglie oltre le quali le osservazioni vengono di solito classificate come outlier sono -2 e +2 (aggiunte nel grafico per mezzo della funzione abline()
). In questo caso ci sono 7 osservazioni outlier, ovvero la numero 2, 3, 45, 71, 89, 103 e 113.
Il codice seguente calcola e produce il grafico dei leverage per lo stesso modello:
> lev <- hatvalues(comp_m2)
> lev_thr <- 2*mean(lev)
> plot(lev, ylim = c(0, max(lev, lev_thr)),
+ xlab = "Indice di riga", ylab = "Effetto-leva", type = "n")
> text(x = lev, labels = 1:nrow(comp), cex = 0.5)
> abline(h = lev_thr, lty = 2)
Per i leverage la soglia comunemente utilizzata è pari a due volte la media dei leverage (che nel precedente codice è memorizzata nell’oggetto lev_thr
). Per questo modello ci sono 7 osservazioni con elevato leverage, ovvero la numero 2, 88, 93, 94, 96, 104 e 108.