Estoy tratando de replicar lo que la función dfbetas()
hace en R .
dfbeta()
no es un problema ... Aquí hay un conjunto de vectores:
x <- c(0.512, 0.166, -0.142, -0.614, 12.72)
y <- c(0.545, -0.02, -0.137, -0.751, 1.344)
Si ajusto dos modelos de regresión de la siguiente manera:
fit1 <- lm(y ~ x)
fit2 <- lm(y[-5] ~ x[-5])
Veo que eliminar el último punto da como resultado una pendiente muy diferente (línea azul - más pronunciada):
Esto se refleja en el cambio de pendientes:
fit1$coeff[2] - fit2$coeff[2]
-0.9754245
que coincide con el dfbeta(fit1)
para el 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
Ahora, si quiero estandarizar este cambio de pendiente (obtener dfbetas ) y recurro a:
Williams, DA (1987) Diagnóstico generalizado de modelos lineales utilizando la desviación y eliminaciones de casos únicos. Estadística Aplicada 36, 181–191
que creo que puede ser una de las referencias en la documentación de R bajo el paquete {stats} . Allí la fórmula para dfbetas es:
Esto podría calcularse fácilmente en R:
(fit1$coef[2] - fit2$coef[2])/summary(fit2)$coef[4]
flexible: -6.79799
La pregunta es por qué no obtengo el quinto valor para la pendiente en:
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!
¿Cuál es la ecuación correcta para pasar de dfbeta a dfbetas ?
fuente