Nếu bạn xem mã (loại đơn giản plot.lm
, không có dấu ngoặc đơn hoặc edit(plot.lm)
tại dấu nhắc R), bạn sẽ thấy khoảng cách của Cook được xác định là dòng 44, với cooks.distance()
chức năng. Để xem những gì nó làm, gõ stats:::cooks.distance.glm
tại dấu nhắc R. Ở đó bạn thấy rằng nó được định nghĩa là
(res/(1 - hat))^2 * hat/(dispersion * p)
trong đó res
phần dư Pearson (được trả về bởi influence()
hàm), hat
là ma trận mũ , p
là số lượng tham số trong mô hình và dispersion
là độ phân tán được xem xét cho mô hình hiện tại (cố định tại một cho hồi quy logistic và Poisson, xem help(glm)
). Tóm lại, nó được tính như là một hàm của đòn bẩy của các quan sát và phần dư được chuẩn hóa của chúng. (So sánh với stats:::cooks.distance.lm
.)
Để tham khảo chính thức hơn, bạn có thể theo dõi các tham chiếu trong plot.lm()
hàm, cụ thể là
Belsley, DA, Kuh, E. và Welsch, RE (1980). Chẩn đoán hồi quy . New York: Wiley.
Hơn nữa, về thông tin bổ sung được hiển thị trong đồ họa, chúng ta có thể nhìn xa hơn và thấy rằng R sử dụng
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) #
nơi rsp
được dán nhãn là Std. Pearson dư. trong trường hợp GLM, Std. phần dư khác (dòng 172); tuy nhiên, trong cả hai trường hợp, công thức được sử dụng bởi R là (dòng 175 và 178)
residuals(x, "pearson") / s * sqrt(1 - hii)
trong đó hii
ma trận mũ được trả về bởi hàm chung lm.influence()
. Đây là công thức thông thường cho std. dư:
rsj=rj1−h^j−−−−−√
trong đó ở đây biểu thị hiệp phương sai thứ . Xem ví dụ: Phân tích dữ liệu phân loại của Agresti , §4.5.5.jj
Các dòng tiếp theo của mã R vẽ một mượt mà cho khoảng cách Cook ( add.smooth=TRUE
trong plot.lm()
theo mặc định, xem getOption("add.smooth")
) và đường đồng mức (không hiển thị trong âm mưu của bạn) cho dư chuẩn quan trọng (xem cook.levels=
tùy chọn).