10 votos

Cómo calcular manualmente dfbetas

Estoy tratando de replicar lo que la función dfbetas() ¿en R.

dfbeta() no es un problema... Aquí es 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 me caben 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 se traduce en una muy diferente pendiente (línea azul - más pronunciada):

enter image description here

Esto se refleja en el cambio en las laderas:

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 me quieren estandarizar este cambio en la pendiente (obtener dfbetas) y me recurrir a:

Williams, D. A. (1987) modelo lineal Generalizado diagnóstico mediante la la desviación y de caso único de supresión. Estadística Aplicada 36, 181-191

que creo que puede ser una de las referencias en el R de la documentación en el marco del paquete {estadísticas}. De ahí la fórmula para dfbetas es:

$\large \mathrm{dfbetas} (i, \mathrm{fit}) = \Large {(\hat{b} - \hat{b}_{-i})\over \mathrm{SE}\, \hat{b}_{-i}}$

Esto podría ser fácilmente calculado en R:

(fit1$coef[2] - fit2$coef[2])/summary(fit2)$coef[4]

rendimiento: -6.79799

La pregunta es por qué no estoy recibiendo el quinto valor de 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 ir de dfbeta a dfbetas?

12voto

Dario Castañé Puntos 131

$DFBETAS_{k(i)}$ se calcula por:

$b_k-b_{k(i)}\over{\sqrt{MSE_{(i)}c_{kk}}}$, para$k$ = 1, 2,. . . ,$p$.

donde$b_k$ es el coeficiente de regresión$k$ que usa todos los datos y$b_{k(i)}$ es el mismo coeficiente con el caso$i$ th eliminado. $MSE_{(i)}$ aquí es el error cuadrático medio de la regresión donde se borra el caso$i$ y$c_{kk}$ es el elemento diagonal$k$ th de la matriz de covarianza sin escalar$(X^{\prime}X)^{-1}$.

Así que puedes calcular$DFBETAS_{k(i)}$ 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 
 

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X