Gabriel Chirinos
31/12/2021
En presente estudio técnico tiene como finalidad analizar una serie de tiempo no estacional y establecer varios modelos ARIMA candidatos a pronosticar la serie, se busca seleccionar el modelo ARIMA que presente el mejor ajuste a la serie.
El procedimiento utilizado en este analisis es el siguiente:
La serie de tiempo en estudio se trata del valor diario del dólar nortemaricano ($) en bolívares (bs), la data fue extraida de la página oficial del Banco Central de Venezuela y procesada en R para estructurarla en un formato tidy. Se posee la información diaria de las tasa de cambio desde el día 01/01/2020 hasta 31/12/2021.
Para el presente análisis se decide resumir la serie diaria a semanal, y para esto se utilizá la mediana semanal de los datos debido a que es mas robusta que un promedio contra valores atipicos o puntos de dispersión.
A continuación, se presenta la serie en estudio.
Se observa que la serie en estudio es no estacional con una tendencia de crecimiento ascendente, además, se aprecia que durante el año 2020 hasta el inicio del 2021 la tendecia es exponencial y para el resto del tiempo se amortigua la tendencia.
Un paso importante al utilizar la familia de modelos autorregresivos integrados de medias móviles (ARIMA) es analizar si la serie es estacionaria, una serie es estacionaria cuando su media y varianza permanecen invariantes durante el tiempo. Por lo expresado anteriormente, una serie con tendencia o patrones estacionales no es estacionaria.
En el caso de la serie en estudio al tener una clara tendencia se concluye que no es estacionaria. Esta aseveración se comprueba haciendo uso de pruebas de raíz unitaria, para este análisis se utiliza la prueba de KPSS (Kwiatkowski-Phillips-Schmidt-Shin).
A continuación, se computa la prueba KPSS.
## # A tibble: 1 x 2
## kpss_stat kpss_pvalue
## <dbl> <dbl>
## 1 2.09 0.01
Al tener un estadístico kpss de prueba (2,09) mayor al valor crítico (0,01), por lo que el p valor es menor se concluye que se rechaza la hipótesis nula, y por ende, la serie no es estacionaria. Se deduce que se debe diferenciar la serie de tiempo.
El paquete feasts en su función unitroot_ndiffs calcula el número de diferenciaciones necesarias para convertir la serie de no estacionaria a estacionaria, este proceso es realizado haciendo uso de secuencias de pruebas KPSS a medida que se diferencia la seria.
## # A tibble: 1 x 1
## ndiffs
## <int>
## 1 2
Se diferencia la serie dos veces y se procede a computar la prueba KPSS de nuevo.
## # A tibble: 1 x 2
## kpss_stat kpss_pvalue
## <dbl> <dbl>
## 1 0.0289 0.1
Se observa que el estadístico kpps es bastante pequeño (0,0289) y se encuentre en el rango esperado para una serie de tiempo estacionaria y al tener un p valor mayor al 1% se concluye que no hay suficientes evidencias para rechazar la hipótesis nula, y por ende, la serie es estacionaria.
Una vez se tenga el número de diferenciaciones necesarias para que la serie en estudio sea estacionaria se procede a realizar los gráficos de autocorrelación y autocorrelación parcial los cuales serán de ayuda para determinar los ordenes de p y q a seleccionar en los modelos ARIMA.
Del gráfico anterior se concluye lo siguiente:
Ya seleccionados los ordenes de p y q, y conociendo el número de diferenciaciones necesarias solo resta computar el ajuste de los modelos candidatos a la serie y comparar el AIC de todos los modelos.
En la tercera edición del libro “Forecasting: Principles and Practice” de Rob J. Hyndman se presentan los paquetes fable y feast los cuáles aportan un conjunto de funciones que ayudan en el ajuste de distintos modelos. Entre estas se encuentra la función ARIMA() la cuál nos permite establecer un rango de posibles valores para los parámetros p, q, y d, realizando el ajuste de todas las posibles combinaciones y seleccionando la que logre minimizar el AIC.
A continuación, se presenta un ejemplo para el ajuste de modelos ARIMA con p ∈ {1, 3, 6} y d = 2.
arima_fit <- serie %>%
model(arimaAR = ARIMA(
value ~ pdq(p = c(1:6), d = 2, q = 0),
trace = T, stepwise = F, order_constraint = p + d <= 8)
)
## ARIMA(1,2,0)(0,0,0)[1]+c -241.672171
## ARIMA(2,2,0)(0,0,0)[1]+c -239.548658
## ARIMA(3,2,0)(0,0,0)[1]+c -245.892118
## ARIMA(4,2,0)(0,0,0)[1]+c -244.413896
## ARIMA(5,2,0)(0,0,0)[1]+c -242.462654
## ARIMA(6,2,0)(0,0,0)[1]+c -246.151729
## ARIMA(1,2,0)(0,0,0)[1] -243.793453
## ARIMA(2,2,0)(0,0,0)[1] -241.713180
## ARIMA(3,2,0)(0,0,0)[1] -248.101053
## ARIMA(4,2,0)(0,0,0)[1] -246.669346
## ARIMA(5,2,0)(0,0,0)[1] -244.765843
## ARIMA(6,2,0)(0,0,0)[1] -248.504692
Se observa como se ajustan los modelos y se muestra el estadístico de calidad AIC para cada modelo, además, la función automáticamente evalua la inclusión de una constante c en los modelos. Se realiza esto pero para los distintos escenarios expuesto en el punto anterior y se presentan los mejor modelos resultantes de cada proceso.
Model name | Orders |
---|---|
arimaAR | <ARIMA(6,2,0)> |
arimaMA | <ARIMA(0,2,3)> |
arima | <ARIMA(1,2,3)> |
Ahora veamos el AIC de los modelos resultantes para ver cual logra minimizar el mismo.
.model | sigma2 | log_lik | AIC | AICc | BIC |
---|---|---|---|---|---|
arimaMA | 0.0043116 | 135.0527 | -262.1054 | -261.6972 | -251.5665 |
arima | 0.0042878 | 135.8103 | -261.6206 | -261.0020 | -248.4469 |
arimaAR | 0.0047715 | 131.8418 | -249.6836 | -248.5047 | -231.2405 |
De los tres modelos candidatos el que posee el menor AIC es el ARIMA(0,2,3). Se presenta los valores de los parámetros estimados del modelo.
## Series: value
## Model: ARIMA(0,2,3)
##
## Coefficients:
## ma1 ma2 ma3
## -0.4766 -0.1098 -0.3268
## s.e. 0.0990 0.0942 0.0888
##
## sigma^2 estimated as 0.004312: log likelihood=135.05
## AIC=-262.11 AICc=-261.7 BIC=-251.57
Se procede a evaluar los residuos del modelo escogido, se busca evaluar la presencia o no de autocorrelación serial en los mismos.
Se observa que el lag número 13 supera las bandas de significancia por lo que se procede a realizar el contraste de hipótesis de Ljung-Box para verificar.
## # A tibble: 1 x 3
## .model lb_stat lb_pvalue
## <chr> <dbl> <dbl>
## 1 arimaMA 32.1 0.228
Al optener un p-valor mayor al nivel de significancia (0,05), se concluye que no hay suficiente evidencia para rechazar la hipótesis nula y por ende los residuos del modelo no están auto correlacionados.
A continuación, se presenta el ajuste del modelo selecciona a la serie de tiempo.
Finalmente se computan los pronósticos para un horizonte de 8 semanas y se presenta gráficamente con su respectivo intervalo de confianza del 95%.