Se dai un'occhiata al codice (tipo semplice plot.lm
, senza parentesi o edit(plot.lm)
al prompt R), vedrai che le distanze di Cook sono definite nella riga 44, con la cooks.distance()
funzione. Per vedere cosa fa, digitare stats:::cooks.distance.glm
al prompt R. Lì vedi che è definito come
(res/(1 - hat))^2 * hat/(dispersion * p)
dove res
sono i residui di Pearson (come restituito dalla influence()
funzione), hat
è la matrice del cappello , p
è il numero di parametri nel modello ed dispersion
è la dispersione considerata per il modello corrente (fissata su uno per la regressione logistica e di Poisson, vedi help(glm)
). In breve, viene calcolato in funzione della leva finanziaria delle osservazioni e dei loro residui standardizzati. (Confronta con stats:::cooks.distance.lm
.)
Per un riferimento più formale è possibile seguire i riferimenti nella plot.lm()
funzione, vale a dire
Belsley, DA, Kuh, E. e Welsch, RE (1980). Diagnostica di regressione . New York: Wiley.
Inoltre, riguardo alle informazioni aggiuntive visualizzate nella grafica, possiamo guardare oltre e vedere che R usa
plot(xx, rsp, ... # line 230
panel(xx, rsp, ...) # line 233
cl.h <- sqrt(crit * p * (1 - hh)/hh) # line 243
lines(hh, cl.h, lty = 2, col = 2) #
lines(hh, -cl.h, lty = 2, col = 2) #
dove rsp
è etichettato come Std. Pearson resid. in caso di GLM, Std. residui altrimenti (linea 172); in entrambi i casi, tuttavia, la formula utilizzata da R è (righe 175 e 178)
residuals(x, "pearson") / s * sqrt(1 - hii)
dove si hii
trova la matrice cappello restituita dalla funzione generica lm.influence()
. Questa è la solita formula per std. residui:
r sj= rj1 - h^j-----√
jj
Le righe successive del codice R disegnano più uniformemente la distanza di Cook ( add.smooth=TRUE
in plot.lm()
per impostazione predefinita, vedi getOption("add.smooth")
) e le curve di livello (non visibili nel diagramma) per i residui standardizzati critici (vedi l' cook.levels=
opzione).