Como institución financiera, a menudo nos encontramos con el análisis de datos de series temporales. Muchas veces terminamos haciendo regresión usando variables de series de tiempo. A medida que esto sucede, a menudo encontramos residuos con una estructura de series de tiempo que viola la suposición básica de errores independientes en la regresión de OLS. Recientemente, estamos construyendo otro modelo en el que creo que tenemos una regresión con errores autocorrelacionados. Los residuos del modelo lineal tienen lm(object)
claramente una estructura AR (1), como se desprende de ACF y PACF. Tomé dos enfoques diferentes, el primero obviamente era ajustar el modelo usando mínimos cuadrados generalizados gls()
en R. Esperaba que los residuos de gls (objeto) fueran un ruido blanco (errores independientes). Pero los residuos degls(object)
todavía tienen la misma estructura ARIMA que en la regresión ordinaria. Lamentablemente, hay algo mal en lo que estoy haciendo que no pude resolver. Por lo tanto, decidí ajustar manualmente los coeficientes de regresión del modelo lineal (estimaciones OLS). Sorprendentemente, eso parece estar funcionando cuando tracé los residuos de la regresión ajustada (los residuos son ruido blanco). Realmente quiero usar gls()
en el nlme
paquete para que la codificación sea mucho más simple y fácil. ¿Cuál sería el enfoque que debería tomar aquí? ¿Se supone que debo usar REML? ¿o es incorrecto mi expectativa de residuos no correlacionados (ruido blanco) del objeto gls ()?
gls.bk_ai <- gls(PRNP_BK_actINV ~ PRM_BK_INV_ENDING + NPRM_BK_INV_ENDING,
correlation=corARMA(p=1), method='ML', data = fit.cap01A)
gls2.bk_ai <- update(gls.bk_ai, correlation = corARMA(p=2))
gls3.bk_ai <- update(gls.bk_ai, correlation = corARMA(p=3))
gls0.bk_ai <- update(gls.bk_ai, correlation = NULL)
anova(gls.bk_ai, gls2.bk_ai, gls3.bk_ai, gls0.bk_ai)
## looking at the AIC value, gls model with AR(1) will be the best bet
acf2(residuals(gls.bk_ai)) # residuals are not white noise
¿Hay algo mal con lo que estoy haciendo ???????
predict.arima()
le darán mejores predicciones quepredict.gls()
.Desea los residuos normalizados. Ver
?residuals.lme
.fuente