Cargamos las librerias a usar

library(ggplot2)
library(rmarkdown)
library(fpp2)
library(forecast)
library(timeDate)
library(gridExtra)
library(urca)

Modelo SARIMA

Describiremos el procedimiento de modelado ARIMA estacional utilizando datos trimestrales del comercio minorista europeo de 1996 a 2011.

autoplot(euretail) + ylab("Retail index") + xlab("Year")

Los datos son claramente no estacionarios y tienen cierta estacionalidad, por lo que, primero tomaremos una diferencia estacional. Los datos estacionalmente diferenciados se muestran a continuaciĂ³n:

euretail %>% diff(lag=4) %>% ggtsdisplay()

Estos tambiĂ©n parecen no estacionarios, por lo que tomamos una primera diferencia adicional, como se muestra a continuaciĂ³n:

euretail %>% diff(lag=4) %>% diff() %>% ggtsdisplay()

Nuestro objetivo ahora es encontrar un modelo ARIMA apropiado basado en ACF y PACF, para esto, observamos los dos Ăºltimos grĂ¡ficos de la figura anterior. En el ACF podemos observar un repunte en el rezago 1, lo cual sugiere un componente MA(1) no estacional, y el repunte significativo en el rezago 4 del ACF sugiere un componente MA(1) estacional. En consecuencia, comenzamos con ARIMA(0,1,1)(0,1,1) A continuaciĂ³n se muestran los resultados de este modelo ajustado.

euretail %>%
  Arima(order=c(0,1,1), seasonal=c(0,1,1)) %>%
  residuals() %>% ggtsdisplay()

Tanto el ACF como el PACF muestran picos significativos en el rezago 2 y picos casi significativos en el rezago 3, lo que indica que es necesario incluir en el modelo algunos tĂ©rminos no estacionales adicionales. El AICc del modelo ARIMA(0,1,2)(0,1,1)4 es 74,36, mientras que el del modelo ARIMA(0,1,3)(0,1,1)4 es 68,53. TambiĂ©n probamos otros modelos con tĂ©rminos AR, pero ninguno que diera un valor AICc menor. En consecuencia, elegimos el modelo ARIMA(0,1,3)(0,1,1)4 Sus residuos se representan en la siguiente figura. Todos los picos estĂ¡n ahora dentro de los lĂ­mites de significancia, por lo que los residuos parecen ser ruido blanco. La prueba de Ljung-Box tambiĂ©n muestra que los residuos no tienen autocorrelaciones restantes.

fit3 <- Arima(euretail, order=c(0,1,3), seasonal=c(0,1,1))
checkresiduals(fit3)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,1,3)(0,1,1)[4]
## Q* = 0.51128, df = 4, p-value = 0.9724
## 
## Model df: 4.   Total lags used: 8

Por lo tanto, ahora tenemos un modelo ARIMA estacional que pasa las comprobaciones requeridas y estĂ¡ listo para realizar pronĂ³sticos. Los pronĂ³sticos del modelo para los prĂ³ximos tres años se muestran en la Figura siguiente . Las previsiones siguen la tendencia reciente de los datos, debido a la doble diferenciaciĂ³n. Los intervalos de predicciĂ³n grandes y en rĂ¡pido aumento muestran que el Ă­ndice de comercio minorista podrĂ­a comenzar a aumentar o disminuir en cualquier momento; mientras que los pronĂ³sticos puntuales tienden a bajar, los intervalos de predicciĂ³n permiten que los datos tengan una tendencia ascendente durante el perĂ­odo de pronĂ³stico.

fit3 %>% forecast(h=12) %>% autoplot()

PodrĂ­amos haber hecho auto.arima()la mayor parte de este trabajo por nosotros. HabrĂ­a dado el mismo resultado.

auto.arima(euretail)
## Series: euretail 
## ARIMA(0,1,3)(0,1,1)[4] 
## 
## Coefficients:
##          ma1     ma2     ma3     sma1
##       0.2630  0.3694  0.4200  -0.6636
## s.e.  0.1237  0.1255  0.1294   0.1545
## 
## sigma^2 = 0.156:  log likelihood = -28.63
## AIC=67.26   AICc=68.39   BIC=77.65