Если вы посмотрите на код (простой тип plot.lm
, без круглых скобок или edit(plot.lm)
на приглашение R), вы увидите, что расстояния Кука определены в строке 44 с помощью cooks.distance()
функции. Чтобы увидеть, что он делает, введите stats:::cooks.distance.glm
в приглашении R. Там вы видите, что это определяется как
(res/(1 - hat))^2 * hat/(dispersion * p)
где res
находится Пирсон остатки (как возвращено influence()
функция), hat
является матрица шляпы , p
это число параметров в модели, и dispersion
это дисперсия считается для текущей модели (фиксированной в одной логистической и регрессию Пуассона см help(glm)
). В целом, он рассчитывается как функция от рычагов наблюдений и их стандартизированных остатков. (Сравните с stats:::cooks.distance.lm
.)
Для более формальной ссылки вы можете следовать ссылкам в plot.lm()
функции, а именно
Белсли Д.А., Кух Э. и Уэлш Р.Э. (1980). Регрессивная диагностика . Нью-Йорк: Уайли.
Более того, что касается дополнительной информации, отображаемой на графике, мы можем посмотреть дальше и увидеть, что R использует
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) #
где rsp
помечено как Std. Остаток Пирсона. в случае GLM, Std. остатки в противном случае (строка 172); в обоих случаях, однако, формула, используемая R (строки 175 и 178)
residuals(x, "pearson") / s * sqrt(1 - hii)
где hii
- шляпная матрица, возвращаемая обобщенной функцией lm.influence()
. Это обычная формула для стандартного остатки:
r sJ= гJ1 - ч^J-----√
где J здесь обозначает Jковариата интересов. См., Например, Agresti Категориальный анализ данных , §4.5.5.
Следующие строки коды R рисовать гладкие , расстояния Кука ( add.smooth=TRUE
в plot.lm()
по умолчанию, см getOption("add.smooth")
) и контурные линии (не видимые в Вашем участке) для критических стандартизованных остатков (см cook.levels=
вариант).