Universidad Miguel Hernández de Elche
Autores: Jose Manuel Ortuño Lorente
Juan Antonio Ramos Mora
Juan Carlos Senent Núñez
Curso 2017/18
Análisis Estadístico de Series Económicas
Grado Estadística Empresarial
Universidad Miguel Hernández de Elche

ARIMA

ARIMA es la abreviatura de “AutoRegressive Integrated Moving Average”, consiste en un modelo estadístico que utiliza variaciones y regresiones de datos estadísticos con el fin de encontrar patrones para una predicción hacia el futuro. Se trata de un modelo dinámico de series temporales, es decir, las estimaciones futuras vienen explicadas por los datos del pasado y no por variables independientes.

AutoReressive (AR) se refiere a los “lags” de las series diferenciadas.
Integrated (I) es el número de diferencias utilizadas para hacer que las series temporales sean estacionarias.
Moving Average (MA) se refiere a los “lags” de los errores.

Fórmula

Modelo ARIMA (p,d,q)

donde p son los parámetros pertenecientes a la parte autorregresiva (AR), d corresponde a las diferencias que son necesarias para convertir la serie original en estacionaria, q son los parámetros pertenecientes a la parte medias móviles (MA) del modelo.

Modelo Arima en R

Comenzamos simulando un modelo Arima(1,1,1).

miSerie = arima.sim(list(order = c(1,1,1), ar=0.5, ma=0.6), sd=1.55, n = 730)
plot(miSerie)

Como podemos comprobar la serie simulada es no estacionaria.

Ahora hay que hacer una serie diferenciada para poder comprobar si es o no estacionaria, que consiste en pasar la serie original xt a la serie yt, para asi poder eliminar la tendencia en una serie temporal.

##Creacion de la serie diferenciada##
dms=diff(miSerie)
plot(dms)

Tras realizar la serie diferenciada, comprobamos que se trata de una serie estacionaria. Por ello realizamos los correlogramas.

par(mfrow=c(1,2))
acf(dms)
pacf(dms)

Por lo tanto tras ver los correlogramas podemos comprobar que se trata de un ARMA(1,1).

Ahora vamos a comprobar que estamos utilizando el modelo adecuado.

library(forecast)
ajuste=arima(miSerie,order=c(1,1,1))
ajuste
## 
## Call:
## arima(x = miSerie, order = c(1, 1, 1))
## 
## Coefficients:
##          ar1    ma1
##       0.5312  0.588
## s.e.  0.0361  0.033
## 
## sigma^2 estimated as 2.493:  log likelihood = -1369.84,  aic = 2745.68

Tras realizar nosotros una Arima(1,1,1), debemos evaluar y comprobar que estamos ante el modelo adecuado, por ello vamos a utilizar el comando tsdiag.

tsdiag(ajuste)

Tras aplicar dicho comando, comporbamos que no queda estructura de autocorrelación en los residuos del ajuste, es decir no hay autocorrelaciones significativas. y el ACF, claramente nos sugiere que estamos ante el modelo correcto.

Para tener certeza de ello, comprobamos a través del comando auto.arima.

ajuste2=auto.arima(miSerie)
ajuste2
## Series: miSerie 
## ARIMA(1,1,1) 
## 
## Coefficients:
##          ar1    ma1
##       0.5312  0.588
## s.e.  0.0361  0.033
## 
## sigma^2 estimated as 2.499:  log likelihood=-1369.84
## AIC=2745.68   AICc=2745.71   BIC=2759.46

Y efectivamente genera un mismo modelo, por lo tanto podemos proceder a realizar predicciones, sobre dicho modelo.

forecast(ajuste)
##     Point Forecast    Lo 80     Hi 80    Lo 95     Hi 95
## 732       86.46729 84.44398  88.49061 83.37291  89.56168
## 733       87.31470 82.57353  92.05587 80.06371  94.56569
## 734       87.76486 80.51047  95.01924 76.67023  98.85948
## 735       88.00399 78.50667  97.50131 73.47910 102.52888
## 736       88.13102 76.63978  99.62226 70.55668 105.70535
## 737       88.19850 74.92206 101.47493 67.89394 108.50305
## 738       88.23435 73.34267 103.12602 65.45949 111.00920
## 739       88.25339 71.88423 104.62254 63.21893 113.28785
## 740       88.26350 70.52922 105.99778 61.14126 115.38574
## 741       88.26888 69.26214 107.27562 59.20058 117.33718
plot(forecast(ajuste))

La linea azul muestra el ajuste proporcionado por el modelo.

En esta predicción podemos observar que hay dos intervalos de confianza, que uno se trata de la parte azul(predicción) y el otro intervalo es la parte negra(serie).