En el análisis de Series de Tiempo, la metodología de Box-Jenkins, nombrada así en honor a los estadásticos George E. P. Box y Gwilym Jenkins, se aplica a los modelos autorregresivos de media móvil (ARMA) o a los modelos autorregresivos integrados de media móvil (ARIMA) para encontrar el mejor ajuste de una serie temporal de valores, a fin de que los pronósticos sean más acertados.



MODELOS ARIMA

Para la obtención de estimaciones con propiedades estadísticas adecuadas de los parámetros de un modelo ARMA, es necesario que la serie muestral que utilizamos para la estimación sea estacionaria en media y varianza. En un sentido laxo del término diríamos que precisamos que la serie no tenga tendencia, y que presente un grado de dispersión similar en cualquier momento de tiempo (homogénea en varianza).

A efectos prácticos, el cumplimiento de esta propiedad pasa por tomar logaritmos para homogeneizar en varianza (no elimina la tendencia) y diferenciar adecuadamente la serie original objeto de estudio para que sea estacionaria en media (si elimina la tendencia).

Con la serie ya tratada para convertirla en estacionaria ya es posible estimar un Modelo ARMA.Pues bien, un Modelo Autorregresivo-Integrado de Medias Móviles de orden p, d, q, o abreviadamente ARIMA (p,d,q), no es más que un modelo ARMA (p,q) aplicado a una serie integrada de orden d., I(d), es decir, a la que ha sido necesario diferenciar d veces para eliminar la tendencia.

I(d) –> Número de veces que se ha diferenciado la serie
AR –> Parte autorregresiva
MA –> Parte de Medias Móviles

Por lo tanto, la expresión general de un modelo ARIMA (p,d,q) viene dada por:


donde , expresa que sobre la serie original \(y_t\), se han aplicado d diferencias. Por lo tanto, sobre una serie integrada de orden 2, necesitaría una doble diferenciación, lo cual se expresa como:



Se puede observar que en la expresión del ARIMA (p.d.q) desaparece el término independiente, justamente por la aplicación de las diferencias sucesivas.

Las series diferenciadas no tienen término independiente (sus valores oscilan alrededor del cero (Media = 0)).



EJEMPLO DIFERENCIACIÓN

En la Figura 1 puede verse la evolución mensual, durante algo más de ocho años, del consumo de gasolina en España (variable CONGA, en trazo grueso). Esta misma serie nos servirá de ejemplo posteriormente.

Evidentemente, la serie no es estacionaria, dado que muestra una clara tendencia al alza. Puesto que la tendencia puede ser adecuadamente recogida mediante una línea recta, parece que bastaría con realizar una sola diferencia a la serie original.

Pero, por otra parte, da la impresión de que la serie presenta algo más de dispersión en los últimos años, por lo que podría interesar trabajar, antes de la diferenciación, con la serie en logaritmos (variable LCONGA, en trazo fino y representada con la escala de la derecha del gráfico).

La nueva serie transformada presenta, en general, una menor dispersión y ésta parece, además, más similar para los diferentes años en subperiodos en que pudiera dividirse el gráfico. Por supuesto que la toma de logaritmos no elimina la tendencia, por lo que, a continuación, será preciso calcular las primeras diferencias.



En el nuevo gráfico, Figura 2, representamos la serie en logaritmos (LCONGA, ahora en trazo grueso y con la escala de la izquierda), así como la serie en diferencias (DLCONGA=LCONGA-LCONGA(-1), en trazo fino y con la escala de la derecha del gráfico).



La tendencia ha sido ahora eliminada en DLCONGA, cuyos valores oscilan alrededor de cero. Por tanto, esta última serie, con transformación logarítmica y en primeras diferencias, sería la que habría que modelizar con un ARMA (p,q).

Por tanto, conocemos entonces que debe realizarse una transformación logarítmica y que d = 1 en el modelo ARIMA correspondiente.




FUNCIÓN AUTO.ARIMA DE R: UNA OPCIÓN RÁPIDA PARA PRONOSTICAR

Esta opción puede servir para generar un buen modelo para realizar pronósticos.

La función auto.arima de la librería forecast de R, proporciona una opción rápida para construir pronósticos con series temporales, debido a que evalúa entre todos los posibles modelos, al mejor modelo considerando diversos criterios: estacionariedad, estacionalidad, diferencias, entre otras.

Para llevar a cabo la utilización de esta función (auto.arima) en primer lugar, se cargan los paquetes de R necesarios:

library(forecast)
## Warning: package 'forecast' was built under R version 3.4.4
library(openxlsx)
## Warning: package 'openxlsx' was built under R version 3.4.3

La primera librería sirve para realizar proyecciones y la segunda para cargar bases de excel a RStudio.

setwd("C:/Users/Master/Desktop/ARIMA")

data<- read.xlsx("estancia.xlsx", detectDates=T)

Luego como se trata de una serie temporal, es necesario configurarla como tal, donde la serie tendrá inicio en el año 2000, mes 1 y la frecuencia es 12 puesto que es mensual.

#time serie
tsdata<-ts(data,start=c(2000,1),frequency=12)

Para realizar un auto pronóstico, se utiliza la función auto.arima y se pueden guardar los resultados en un objeto con cualquier nombre (modelo en este caso) y llamar los resultados con la función summary. Se puede observar que lo que se está utilizando es la columna 2 de la matriz tsdata (matriz que puede tener varias variables):

modelo<-auto.arima(tsdata[,2])

summary(modelo)
## Series: tsdata[, 2] 
## ARIMA(2,0,2)(2,1,0)[12] with drift 
## 
## Coefficients:
##          ar1      ar2      ma1     ma2     sar1     sar2    drift
##       1.3170  -0.6047  -1.0347  0.5861  -0.3413  -0.3050  -0.0152
## s.e.  0.1784   0.1713   0.1899  0.1488   0.0746   0.0759   0.0020
## 
## sigma^2 estimated as 0.08651:  log likelihood=-38.06
## AIC=92.12   AICc=92.86   BIC=118.67
## 
## Training set error measures:
##                       ME      RMSE       MAE         MPE     MAPE
## Training set 0.001255529 0.2808954 0.2144858 -0.06915079 2.766483
##                   MASE       ACF1
## Training set 0.6843149 0.01510399

Se puede observar que la función auto.arima devuelve el posible mejor modelo de entre todos los modelos y realiza transformaciones de la variable de ser el caso que no sea estacionaria; adicionalmente, evalua presencia de estacionalidad en la serie y si existe este componente, construye modelos SARIMA.

Por otra parte, también devuelve los conocidos como criterios de predictibilidad, los cuales son utilizados para evaluar la capacidad predictiva de los modelos incluyendo los criterios de información AIC, AICC, BIC.

Veamos como luce el pronóstico de la variable en estudio:

pronostico<- forecast(modelo,12,level=95)

plot(pronostico, main="Pronóstico con auto.arima",
ylab="Total Nacional")

Lo que hace la función forecast es llamar al objeto con el nombre modelo, y el número de proyecciones fuera de la muestra; adicionalmente pude construir intervalos de confianza a cualquier nivel.

Para obtener esos pronósticos en una matriz (donde se guardarán los pronósticos con los intervalos de confianza solicitados), basta con realizar los siguiente:

matriz.pronosticos <-data.frame(pronostico$mean,pronostico$lower,pronostico$upper)
matriz.pronosticos
##    pronostico.mean     X95.   X95..1
## 1         7.173308 6.596825 7.749791
## 2         6.550987 5.951976 7.149998
## 3         6.298425 5.665753 6.931097
## 4         5.006753 4.351700 5.661806
## 5         5.085862 4.423149 5.748574
## 6         5.450688 4.787313 6.114064
## 7         6.344240 5.680510 7.007970
## 8         6.806382 6.141026 7.471739
## 9         5.821779 5.154685 6.488874
## 10        5.742824 5.074798 6.410850
## 11        6.361942 5.693691 7.030193
## 12        5.875419 5.207166 6.543672

Finalmente, se llega a la conclusión de que la función auto.arima es útil y de fácil entendimiento.

Aunque es necesario que se evalúen las series en un estudio paso a paso, y en base a la experiencia y a lo que dicta la teoría econométrica (estacionariedad, evaluación del modelo, capacidad predictiva, stress testing, entre otros.), se elaboren los modelos.