Jeśli spojrzysz na kod (typ prosty plot.lm
, bez nawiasów lub edit(plot.lm)
na monit R), zobaczysz, że odległości Cooka są zdefiniowane w linii 44, z cooks.distance()
funkcją. Aby zobaczyć, co robi, wpisz stats:::cooks.distance.glm
w wierszu R. Tam widzisz, że jest to zdefiniowane jako
(res/(1 - hat))^2 * hat/(dispersion * p)
gdzie res
są reszty Pearsona (zwracane przez influence()
funkcję), hat
to macierz kapelusza , p
liczba parametrów w modelu i dispersion
rozproszenie brane pod uwagę dla bieżącego modelu (ustalone na jeden dla regresji logistycznej i regresji Poissona, patrz help(glm)
). Podsumowując, oblicza się go jako funkcję dźwigni obserwacji i ich standaryzowanych reszt. (Porównaj z stats:::cooks.distance.lm
.)
Aby uzyskać bardziej formalne odwołanie, możesz śledzić odniesienia w plot.lm()
funkcji, a mianowicie
Belsley, DA, Kuh, E. and Welsch, RE (1980). Diagnostyka regresji . Nowy Jork: Wiley.
Co więcej, o dodatkowych informacjach wyświetlanych w grafice, możemy spojrzeć dalej i zobaczyć, że R. używa
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) #
gdzie rsp
jest oznaczone jako Std. Resztka Pearson. w przypadku GLM, Std. w pozostałych przypadkach (linia 172); jednak w obu przypadkach wzór stosowany przez R jest następujący (wiersze 175 i 178)
residuals(x, "pearson") / s * sqrt(1 - hii)
gdzie hii
jest macierz kapelusza zwrócona przez funkcję ogólną lm.influence()
. Jest to zwykła formuła dla standardu. pozostałości:
r sjot= rjot1 - godz^jot-----√
jotjot
Kolejne linie kodu R narysować gładsza dla odległości Cooka ( add.smooth=TRUE
w plot.lm()
domyślnie zobaczyć getOption("add.smooth")
) i linie konturowe (niewidoczny na swojej działce) dla krytycznych standaryzowanych reszt (patrz cook.levels=
opcja).