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.glmno prompt R. Lá você vê que é definido como
(res/(1 - hat))^2 * hat/(dispersion * p)
onde resestã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=TRUEem 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).