Ejemplo de Pronóstico con modelos SARIMA
Importación de datos
convertir en objeto de Serie Temporal (ts)
## Qtr1 Qtr2 Qtr3 Qtr4
## 2009 4227.33 4436.39 4312.85 4625.05
## 2010 4375.00 4579.71 4498.45 4994.77
## 2011 4727.87 5163.09 5032.40 5360.43
## 2012 5176.52 5401.29 5225.97 5582.38
## 2013 5208.33 5550.62 5428.02 5803.99
## 2014 5434.08 5701.62 5589.75 5868.02
## 2015 5617.57 5870.22 5828.24 6122.21
## 2016 5695.11 6181.81 5962.28 6352.22
## 2017 5934.20 6271.01 6150.91 6623.07
## 2018 6159.12 6529.22 6480.41 6852.10
## 2019 6401.11 6713.27 6691.85 7074.90
## 2020 6462.10 5378.00 6118.58 6962.52
## 2021 6736.65 7203.03 7236.93 7866.54
1. Cálculo automático del modelo ARIMA
library(forecast)
library(TSstudio)
PIB_trim.arima.automatico<-auto.arima(y = PIB_trim.ts)
summary(PIB_trim.arima.automatico)## Series: PIB_trim.ts
## ARIMA(1,0,0)(2,1,0)[4] with drift
##
## Coefficients:
## ar1 sar1 sar2 drift
## 0.5874 -0.8878 -0.3696 53.5077
## s.e. 0.1216 0.1435 0.2155 9.6501
##
## sigma^2 = 62491: log likelihood = -332.83
## AIC=675.66 AICc=677.09 BIC=685.02
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 1.201582 229.9509 105.3609 -0.0516886 1.814615 0.3266292
## ACF1
## Training set 0.04733266
1.1. Pronóstico usando el modelo automático
library(forecast)
#Tabla
pronostico.arima.automatico<-forecast(object = PIB_trim.arima.automatico,h = 4,level = c(.95)) |> print()## Point Forecast Lo 95 Hi 95
## 2022 Q1 7190.474 6700.516 7680.431
## 2022 Q2 6698.563 6130.341 7266.786
## 2022 Q3 7020.812 6427.981 7613.642
## 2022 Q4 7636.634 7035.547 8237.721
2. Cálculo “manual” del modelo
Calcular las Diferencias:
library(kableExtra)
d<-ndiffs(PIB_trim.ts)
D<-nsdiffs(PIB_trim.ts)
ordenes_integracion<-c(d,D)
names(ordenes_integracion)<-c("d","D")
ordenes_integracion %>% kable(caption = "Ordenes de Integración") |> kable_material()| x | |
|---|---|
| d | 1 |
| D | 1 |
library(TSstudio)
PIB_trim.ts_diff<-PIB_trim.ts |>
diff(lag = 4,diffences=D) |>
diff(diffences=d)
PIB_trim.ts_diff |>
ts_cor(lag.max = 3*4)Lectura del Correlograma:
Parte regular p=0, q=0 Parte estacional P=2,Q=0
library(forecast)
PIB_trim.arima.manual<-Arima(y = PIB_trim.ts,order = c(0,1,0), seasonal = c(2,1,0)) |> print()## Series: PIB_trim.ts
## ARIMA(0,1,0)(2,1,0)[4]
##
## Coefficients:
## sar1 sar2
## -0.8752 -0.3604
## s.e. 0.1439 0.2166
##
## sigma^2 = 75962: log likelihood = -331.39
## AIC=668.77 AICc=669.33 BIC=674.32
2.1. Pronóstico usando el modelo manual
library(forecast)
#Tabla
pronostico.arima.manual<-forecast(object = PIB_trim.arima.manual,h = 4,level = c(0.95)) |> print()## Point Forecast Lo 95 Hi 95
## 2022 Q1 7360.342 6820.153 7900.532
## 2022 Q2 6972.921 6208.978 7736.865
## 2022 Q3 7350.701 6415.065 8286.337
## 2022 Q4 8001.800 6921.421 9082.180