Si echas un vistazo al código (tipo simple plot.lm
sin paréntesis, o edit(plot.lm)
en el indicador R), verá que Las distancias del cocinero se definen en la línea 44, con el cooks.distance()
función. Para ver lo que hace, escriba stats:::cooks.distance.glm
en el indicador R. Allí verá que está definido como
(res/(1 - hat))^2 * hat/(dispersion * p)
donde res
son los residuos de Pearson (devueltos por el influence()
función), hat
es el matriz del sombrero , p
es el número de parámetros del modelo, y dispersion
es la dispersión considerada para el modelo actual (fijada en uno para la regresión logística y de Poisson, véase help(glm)
). En resumen, se calcula en función del apalancamiento de las observaciones y sus residuos estandarizados. (Compárese con stats:::cooks.distance.lm
.)
Para una referencia más formal puede seguir las referencias en el plot.lm()
función, a saber
Belsley, D. A., Kuh, E. y Welsch, R. E. (1980). Diagnóstico de regresión . Nueva York: Wiley.
Además, sobre la información adicional que se muestra en los gráficos, podemos mirar más allá y ver que R utiliza
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) #
donde rsp
se etiqueta como residuo estándar de Pearson en el caso de un MLG, residuos estándar en caso contrario (línea 172); en ambos casos, sin embargo, la fórmula utilizada por R es (líneas 175 y 178)
residuals(x, "pearson") / s * sqrt(1 - hii)
donde hii
es la matriz del sombrero devuelta por la función genérica lm.influence()
. Esta es la fórmula habitual para los residuos estándar:
rsj=rj√1−ˆhj
donde j aquí denota el j covariable de interés. Véase, por ejemplo, Agresti Análisis de datos categóricos , §4.5.5.
Las siguientes líneas de código R dibujan un suavizador para la distancia de Cook ( add.smooth=TRUE
en plot.lm()
por defecto, véase getOption("add.smooth")
) y las líneas de contorno (no visibles en su gráfico) para los residuos críticos estandarizados (véase el cook.levels=
opción).