Estou tentando replicar o que a função dfbetas()
faz R .
dfbeta()
não é um problema ... Aqui está um conjunto de vetores:
x <- c(0.512, 0.166, -0.142, -0.614, 12.72)
y <- c(0.545, -0.02, -0.137, -0.751, 1.344)
Se eu encaixar dois modelos de regressão da seguinte maneira:
fit1 <- lm(y ~ x)
fit2 <- lm(y[-5] ~ x[-5])
Vejo que a eliminação do último ponto resulta em uma inclinação muito diferente (linha azul - mais íngreme):
Isso se reflete na mudança de inclinação:
fit1$coeff[2] - fit2$coeff[2]
-0.9754245
que coincide com o dfbeta(fit1)
do quinto valor:
(Intercept) x
1 0.182291949 -0.011780253
2 0.020129324 -0.001482465
3 -0.006317008 0.000513419
4 -0.207849024 0.019182219
5 -0.032139356 -0.975424544
Agora, se eu quiser padronizar essa alteração na inclinação (obtenha dfbetas ) e recorrer a:
Williams, DA (1987) Diagnóstico de modelo linear generalizado usando o desvio e exclusões de caso único. Estatísticas Aplicadas 36, 181–191
que eu acho que pode ser uma das referências na documentação do R no pacote {stats} . A fórmula para dfbetas é:
Isso pode ser facilmente calculado em R:
(fit1$coef[2] - fit2$coef[2])/summary(fit2)$coef[4]
produzindo: -6.79799
A questão é por que não estou obtendo o quinto valor da inclinação em:
dfbetas(fit1)
(Intercept) x
1 1.06199661 -0.39123009
2 0.06925319 -0.02907481
3 -0.02165967 0.01003539
4 -1.24491242 0.65495527
5 -0.54223793 -93.81415653!
Qual é a equação correta para ir de dfbeta para dfbetas ?