如果看一下代码(简单类型plot.lm
,不带括号,或edit(plot.lm)
在R提示符下),您会发现Cook的距离是通过cooks.distance()
函数定义在第44行。要查看其功能,请stats:::cooks.distance.glm
在R提示符下键入。在那里您看到它被定义为
(res/(1 - hat))^2 * hat/(dispersion * p)
其中res
是Pearson残差(由influence()
函数返回),hat
是hat矩阵,p
是模型中的参数数量,dispersion
是当前模型考虑的离散度(对于logistic和Poisson回归固定为1,请参见参考资料help(glm)
)。总之,它是根据观测结果及其标准化残差的函数来计算的。(与相比stats:::cooks.distance.lm
。)
要获得更正式的参考,您可以遵循plot.lm()
函数中的参考,即
Belsley,DA,Kuh,E.和Welsch,RE(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
被标记为标准。培生残渣。如果是GLM,则为标准。否则为残差(第172行);但是,在两种情况下,R使用的公式都是(第175和178行)
residuals(x, "pearson") / s * sqrt(1 - hii)
hii
泛型函数返回的帽子矩阵在哪里lm.influence()
?这是std的常用公式。残差:
[R 小号Ĵ= rĴ1 - ^ h^Ĵ-----√
ĴĴ
的R代码里面下一行绘制Cook距离更平滑(add.smooth=TRUE
在plot.lm()
默认情况下,见getOption("add.smooth")
)和关键标准化残差轮廓线(在你的情节不可见)(见cook.levels=
选项)。