Cómo calcular manualmente dfbetas


8

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):

ingrese la descripción de la imagen aquí

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:

reFsimitunas(yo,Fyot)=(si^-si^-yo)Smisi^-yo

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 ?

Respuestas:


10

reFsimiTUNASk(yo) se calcula por:

sik-sik(yo)METROSmi(yo)Ckk, para k= 1, 2,. . . ,pags.

dónde sik es el kEl coeficiente de regresión que utiliza todos los datos y sik(yo) es el mismo coeficiente con el yoSe eliminó el caso. METROSmi(yo) aquí está el error cuadrático medio de la regresión donde el yo el caso se elimina y Ckk es el kth elemento diagonal de la matriz de covarianza sin escala (XX)-1.

Entonces puedes calcular reFsimiTUNASk(yo) manualmente con el siguiente código R:

numerator<-(fit1$coef[2] - fit2$coef[2])
denominator<-sqrt((summary(fit2)$sigma^2)*diag(summary(fit1)$cov.unscaled)[2])
DFBETAS<-numerator/denominator
DFBETAS
        x 
-93.81416 

Si no es obvio, p es el número de parámetros o coeficientes de regresión. Perdón por la notación descuidada. ;-)
StatsStudent
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.