Modelo ARIMA

Oscar Rodriguez Mompean

Modelo ARIMA

Un modelo ARIMA o modelo autorregresivo integrado de medias moviles utiliza variaciones y regresiones de datos con el fin de encontrar patrones para hacer predicciones futuras explicadas por los datos del pasado.

Un modelo ARIMA utiliza 3 parametros (p,d,q). El parametro p hace referencia al orden del modelo autorregresivo AR, d hace referencia al numero de diferenciaciones que necesita la serie para ser estacionaria y q hace referencia al orden del modelo de medias moviles MA.

Un modelo arima se puede representar con la siguiente ecuacion: \[ Y_t = c + \phi_1y_d{_{t-1}} + \phi_p y_d{_{t-p}}+...+\theta_1 e_{t-1} + \theta_q e_{t-q} + e_t\] siendo \(e_{t}\) los errores del modelo que han de ser ruido blanco.

Pasos para estimar un modelo ARIMA

Para estimar un modelo ARIMA hay que seguir los siguentes pasos:

1º Diferenciar la serie original, el numero de diferenciaciones sera el parametro d.

2º Estimar los parametros p y q mediante el AFC y el PACF.

3º Comprobar que los residuos del modelo siguen un proceso de ruido blanco.

4º Usar el modelo para hacer predicciones.

Estimar y predecir un modelo ARIMA con R

Estimar un modelo ARIMA con R

Serie original

datos<-elecequip
plot(datos)

Estimar un modelo ARIMA con R

Realizamos un suavizado exponencial de la serie para ayudarnos a predecir mejor.

tsdatos <- seasadj(stl(elecequip, s.window="periodic"))
plot(tsdatos)

Estimar un modelo ARIMA con R

Descomponemos la serie para ver la tendencia y la estacionalidad.

descompuesta<-decompose(tsdatos)
plot(descompuesta)

Estimar un modelo ARIMA con R

Comprobamos si la serie es estacionaria.

adf.test(tsdatos, alternative = "stationary")
## 
##  Augmented Dickey-Fuller Test
## 
## data:  tsdatos
## Dickey-Fuller = -2.2538, Lag order = 5, p-value = 0.4699
## alternative hypothesis: stationary

Como el p-valor es mayor que 0.05 la serie no es estacionaria, hay que diferenciarla.

ndiffs(tsdatos)
## [1] 1

Como muestra el comando ndiffs hace falta realizar 1 diferenciacion.

Estimar un modelo ARIMA con R

estac<-diff(tsdatos,differences=1)
adf.test(estac, alternative = "stationary")
## 
##  Augmented Dickey-Fuller Test
## 
## data:  estac
## Dickey-Fuller = -4.108, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary

Ahora la serie ya es estacionaria y el valor de d en el modelo ARIMA es 1.

Estimar un modelo ARIMA con R

Para obtener los parametros p y q calculamos los diagramas ACF y PACF.

tsdisplay(diff(tsdatos),main="Serie con 1 diferenciacion y diagramas ACF y PACF")

Estimar un modelo ARIMA con R

Si no se ven claros los parametros p y q con los diagramas ACF y PACF, existe la funcion auto.arima, que nos sugiere el modelo ARIMA mas adecuado para la serie.

auto.arima(tsdatos, seasonal=FALSE)
## Series: tsdatos 
## ARIMA(3,1,1) 
## 
## Coefficients:
##          ar1     ar2     ar3      ma1
##       0.0519  0.1191  0.3730  -0.4542
## s.e.  0.1840  0.0888  0.0679   0.1993
## 
## sigma^2 estimated as 9.737:  log likelihood=-484.08
## AIC=978.17   AICc=978.49   BIC=994.4

Estimar un modelo ARIMA con R

En este caso el modelo sugerido es ARIMA(3,1,1).

modeloarima <- Arima(tsdatos, order=c(3,1,1))
summary(modeloarima)
## Series: tsdatos 
## ARIMA(3,1,1) 
## 
## Coefficients:
##          ar1     ar2     ar3      ma1
##       0.0519  0.1191  0.3730  -0.4542
## s.e.  0.1840  0.0888  0.0679   0.1993
## 
## sigma^2 estimated as 9.737:  log likelihood=-484.08
## AIC=978.17   AICc=978.49   BIC=994.4
## 
## Training set error measures:
##                        ME     RMSE      MAE         MPE     MAPE      MASE
## Training set -0.001227744 3.079373 2.389267 -0.04290849 2.517748 0.2913919
##                     ACF1
## Training set 0.008928479

Estimar un modelo ARIMA con R

Vamos a comprobar si los residuos del modelo estimado siguen un proceso de ruido blanco.

Acf(residuals(modeloarima))

Estimar un modelo ARIMA con R

Box.test(residuals(modeloarima), lag=24, fitdf=4, type="Ljung")
## 
##  Box-Ljung test
## 
## data:  residuals(modeloarima)
## X-squared = 20.496, df = 20, p-value = 0.4273

Como todos se encuentran dentro de los limites y el p-valor es mayor que 0.05, los residuos se comportan como ruido blanco.

Predecir un modelo ARIMA en R

Predecir un modelo ARIMA en R

Prediccion para el modelo ARIMA(3,1,1).

plot(forecast(modeloarima))

FIN