Los modelos ARIMA fueron popularizados en los años 70 por George Box y Gwilym Jenkins, se la conoce también como la metodología de Box y Jenkins aplicada a análisis y predicción de series univariantes.

ARIMA significa modelo autorregresivo integrado de media móvil. Cada una de las tres partes del acrónimo se le denomina componente y modela un comportamiento distinto de la serie.

Los modelos ARIMA generalmente se construyen a partir de los modelos ARMA, pero aquí se considera que la serie tratada, para que sea estacionaria en media tendrá que diferenciarse una serie de veces. Lo que representa una ventaja respecto a los modelos ARMA, ya que incorpora la diferenciación dentro del modelo.

Una de las ventajas que brinda esta metodología es que proporcionan predicciones optimas tanto en plazo inmediato (1 a 3 meses) como en el corto plazo, además esta metodología no necesita contar con varias series para realizar su estimación y pronostico; pues se requiere tan solo la serie a ser estudiada y sus rezagos.

Esquema de un modelo ARIMA

Descripción de

library(readxl)
library(tseries)
library(stargazer)
library(lmtest)
library(car)
library(strucchange)
library(TSstudio)
library(forecast)
# Base de datos
data_arg <- read_excel("D:/Libros/Seminarios/Diplomado Tecnicas Econometricas R/3 Modelo ARIMA/data_arg.xlsx", sheet = "data2")

Se declara la serie de tiempo y se descompone para ver su tendencia y estacionalidad.

# Serie de tiempo
tcly = ts(data_arg[ , 1],
          start = c(2005, 1),
          end = c(2022, 4),
          freq = 4)
head(tcly)
##           Qtr1      Qtr2      Qtr3      Qtr4
## 2005  8.053652 11.281673  7.079227  7.589323
## 2006  7.316862  6.424693
# Descomposicion de la serie de tiempo
ts_decompose(tcly)

1 Estacionariedad

Para confirmar la estacionaridad de las series se usan las pruebas de Dickey-Fuller (ADF) y Phillips-Perron (PP) para raíz unitaria, donde:

  • \(H_0\): La serie no es estacionaria. \(p.value \geq 0.05\)
  • \(H_1\): La serie es estacionaria. \(p.value \leq 0.05\)
# Prueba de Dickey-Fuller (ADF)
adf.test(tcly)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  tcly
## Dickey-Fuller = -2.5112, Lag order = 4, p-value = 0.3672
## alternative hypothesis: stationary
# Prueba de Phillips-Perron (PP)
pp.test(tcly)
## 
##  Phillips-Perron Unit Root Test
## 
## data:  tcly
## Dickey-Fuller Z(alpha) = -24.146, Truncation lag parameter = 3, p-value
## = 0.01969
## alternative hypothesis: stationary

1.1 Primera diferencia

Se aplica primera diferencia

# Primera diferencia
dtcly <- diff(tcly)
plot(dtcly)

# Prueba de Dickey-Fuller (ADF)
adf.test(dtcly)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  dtcly
## Dickey-Fuller = -4.6904, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
# Prueba de Phillips-Perron (PP)
pp.test(dtcly)
## 
##  Phillips-Perron Unit Root Test
## 
## data:  dtcly
## Dickey-Fuller Z(alpha) = -57.353, Truncation lag parameter = 3, p-value
## = 0.01
## alternative hypothesis: stationary

La serie es estacionaria.

1.2 Correlograma

estacionaria <- dtcly
muestra <- window(estacionaria,
                  start = c(2005, 1), 
                  end = c(2022, 4))

# Correlograma
ts_cor(muestra, lag = 8)

Los modelos a realizar son:

Modelo p d q
1 1 1 0
2 0 1 1
3 2 1 0
4 2 1 1
5 1 1 2
6 2 1 2

2 Modelo ARIMA (2,1,1)

# ARIMA
arima1<- arima(data_arg,
               order = c(2, 1, 1),
               method = "ML")

# Coeficientes
stargazer(arima1, type = "text")
## 
## =============================================
##                       Dependent variable:    
##                   ---------------------------
##                            data_arg          
## ---------------------------------------------
## ar1                        1.005***          
##                             (0.115)          
##                                              
## ar2                        -0.332***         
##                             (0.113)          
##                                              
## ma1                        -0.956***         
##                             (0.053)          
##                                              
## ---------------------------------------------
## Observations                  71             
## Log Likelihood             -198.605          
## sigma2                      15.442           
## Akaike Inf. Crit.           405.209          
## =============================================
## Note:             *p<0.1; **p<0.05; ***p<0.01

2.1 Evaluación del modelo

2.1.1 Ruido blanco

Es necesario que los residuos se comporten como ruido blanco, para ellos usamos la prueba de Dickey-Fuller aumentada, donde:

  • \(H_0\): Los residuos no se comportan como ruido blanco. \(p.value \geq 0.05\)
  • \(H_1\): Los residuos se comportan como ruido blanco. \(p.value \leq 0.05\)
# Prueba ADF para 
residuals = resid(arima1)
adf.test(residuals)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  residuals
## Dickey-Fuller = -4.3595, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary

2.1.2 Autocorrelación

Para determinar que un grupo cualquiera de autocorrelaciones sea distinta de cero, es decir, para comprobar si una serie de observaciones en un período de tiempo específico son aleatorias e independientes, se usa la prueba de Ljung-Box, donde:

  • \(H_0\): No hay autocorrelacion, los residuos se distribuyen de forma independiente. \(p.value \geq 0.05\)
  • \(H_1\): Si hay autocorrelacion, los residuos no se distribuyen de forma independiente \(p.value \leq 0.05\)
# Prueba Ljung-Box
checkresiduals(arima1)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(2,1,1)
## Q* = 21.17, df = 7, p-value = 0.003526
## 
## Model df: 3.   Total lags used: 10

3 Modelo final

Aquel que tenga el menor criterio de Akaike (AIC) con todos sus parámetros significativos, y cuyos residuos no estén correlacionados será el mejor modelo. En este caso el mejor modelo es el ARIMA (2, 0, 3)

\[\widehat{tcly}_t = \widehat{1.005}~tcly_{t-1} - \widehat{0.332}~tcly_{t-2} - \widehat{0.956}~tcly_{\epsilon_{t-2}}\]

Se puede observar que el crecimiento económico del primer rezago impacta positivamente en el crecimiento actual del PIB, pero el segundo rezago impacta negativamente. Las media móvil tiene un impacto negativo.

4 Proyección

prediccion1 <- forecast(arima1, h = 5)
summary(prediccion1)
## 
## Forecast method: ARIMA(2,1,1)
## 
## Model Information:
## 
## Call:
## arima(x = data_arg, order = c(2, 1, 1), method = "ML")
## 
## Coefficients:
##          ar1      ar2      ma1
##       1.0052  -0.3316  -0.9563
## s.e.  0.1155   0.1131   0.0528
## 
## sigma^2 estimated as 15.44:  log likelihood = -198.6,  aic = 405.21
## 
## Error measures:
##                      ME     RMSE      MAE      MPE    MAPE      MASE
## Training set -0.5462715 3.902188 2.555593 -31.3401 113.631 0.8435854
##                     ACF1
## Training set -0.09120176
## 
## Forecasts:
##    Point Forecast     Lo 80    Hi 80      Lo 95     Hi 95
## 73     0.14014122 -4.896094 5.176376  -7.562116  7.842398
## 74     0.03684737 -7.262003 7.335698 -11.125781 11.199476
## 75     0.39626842 -7.860738 8.653275 -12.231733 13.024270
## 76     0.79180175 -7.792865 9.376468 -12.337313 13.920916
## 77     1.07018400 -7.612523 9.752891 -12.208871 14.349239