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 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.
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).