Se você der uma olhada no código (tipo simples plot.lm
, sem parênteses ou edit(plot.lm)
no prompt R), verá que as distâncias de Cook são definidas na linha 44, com a cooks.distance()
função Para ver o que faz, digite stats:::cooks.distance.glm
no prompt R. Lá você vê que é definido como
(res/(1 - hat))^2 * hat/(dispersion * p)
onde res
estão os resíduos de Pearson (retornados pela influence()
função), hat
é a matriz de chapéu , p
é o número de parâmetros no modelo e dispersion
é a dispersão considerada para o modelo atual (fixado em um para logística e regressão de Poisson, consulte help(glm)
). Em suma, é calculado em função da alavancagem das observações e de seus resíduos padronizados. (Compare com stats:::cooks.distance.lm
.)
Para uma referência mais formal, você pode seguir as referências na plot.lm()
função, a saber
Belsley, DA, Kuh, E. e Welsch, RE (1980). Diagnóstico de regressão . Nova York: Wiley.
Além disso, sobre as informações adicionais exibidas nos gráficos, podemos olhar mais longe e ver que R usa
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) #
onde rsp
é rotulado como Padrão. Pearson res. no caso de um GLM, Std. resíduos caso contrário (linha 172); em ambos os casos, no entanto, a fórmula usada por R é (linhas 175 e 178)
residuals(x, "pearson") / s * sqrt(1 - hii)
onde hii
é a matriz do chapéu retornada pela função genérica lm.influence()
. Esta é a fórmula usual para std. resíduos:
r sj= rj1 - h^j-----√
jj
As próximas linhas de código R desenhar uma suave para a distância de Cook ( add.smooth=TRUE
em plot.lm()
por padrão, consulte getOption("add.smooth")
) e linhas de contorno (não visível em seu lote) para resíduos padronizados críticos (veja a cook.levels=
opção).