El aumento del IPC tiene muchas consecuencias económicas, una de ellas es la disminución del consumo producto del incremento de los precios. Con esto en mente, se plantea conocer cómo afecta el IPC al consumo de Cali. Para esto, se analizará el IPC nacional y se comparará con las licencias de construcción aprobadas en Cali, la venta de vehículos nuevos en Cali y la cantidad de depósitos de ahorros de Cali.
Se descompondrán las series de tiempo para conocer sus
estacionalidades, con las que se podrá encontrar la relación entre el
IPC y las demás variables. Además, se propondrán unos modelos ARIMA que
serán evaluados para predecir el comportamiento futuro de las series de
tiempo.
En primer lugar, se descomponen todas las series de tiempo para
conocer su tendencia, estacionalidad e irregularidad
#Se descomponen los datos con la funcion decompose
LiccDecomp <- decompose(SerieLic)
VehcDecomp <- decompose(SerieVehc)
DepoDecomp <- decompose(SerieDepo)
IpcDecomp <- decompose(SerieIpc)
A continuación se muestra la información que da como
resultado de la descomposición de las series de tiempo.
Licencias de construcción:
Figura 1. Descomposición de la serie Licencias de construcción en Cali. Fuente: Elaboración propia con datos de Julieth Cerón
La serie original aparenta ser estacionaria. Sin embargo, más adelante se verificará esta hipótesis.
En la tendencia de la serie de tiempo de Licencias de Construcción se pueden analizar 2 ciclos: El primero que comienza a finales de 2013 hasta mediados de 2016 y el segundo que comienza con el fin del primero hasta finales de 2020.
También se puede observar en el gráfico de estacionalidad como al
inicio de cada año es cuando mayor cantidad de licencias de construcción
se aprueban y en diciembre cuando menos.
Componentes de Ventas de vehículos nuevos:
Figura 2. Descomposición de la serie Ventas de vehículos nuevos en Cali. Fuente: Elaboración propia con datos de Julieth Cerón
La serie original demuestra que no es una serie estacionaria.
La tendencia no es muy clara y no pueden observarse claremente ciclos.
En el gráfico de estacionalidad se observa que el momento del año
donde más se venden vehículos nuevos es a finales del mismo, mientras
que los meses de inicio de año son los más débiles.
Componentes de Depósitos de ahorros:
Figura 3. Descomposición de la serie Depósitos de ahorros en Cali. Fuente: Elaboración propia con datos de Julieth Cerón
La serie original muestra claramente que está lejos de ser una serie estacionaria.
La tendencia no muestra ciclos evidentes pero se puede observar que viene en una tendencia generalmente alcista.
La estacionalidad muestra que a mediados de año es cuando las cuentas
de ahorro tienden a tener mayores cantidades de depósitos, mientras que
para finales de año es cuando menos tienen.
Componentes del Índice de precios del consumidor:
Figura 4. Descomposición de la serie IPC nacional. Fuente: Elaboración propia con datos de Julieth Cerón
La serie original es claramente no estacionaria.
La tendencia ha sido alcista a través de los años y no muestra ciclos evidentes.
La estacionalidad muestra que es a mediados de año cuando se registra
el IPC más alto, que disminuye gradualmente hasta diciembre.
Para realizar el pronóstico con ARIMA, es necesario plantear unos modelos que posteriormente serán evaluados para saber si pueden predecir con precisión el comportamiento futuro de una serie de tiempo.
Para crear los modelos, las series de tiempo deben ajustarse para ser estacionarias. Si lo son, entonces no es necesario de ningún ajuste. Para eso, se aplicará el test de Dickey Fuller.
Para realizar el test, se contrastan las dos hipótesis:
H0: Serie no estacionaria: Hay raíz unitaria.
H1: Serie estacionaria: No hay raíz unitaria.
adf.test(SerieLic)
## Warning in adf.test(SerieLic): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: SerieLic
## Dickey-Fuller = -5.45, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
adf.test(SerieVehc)
## Warning in adf.test(SerieVehc): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: SerieVehc
## Dickey-Fuller = -4.0978, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
adf.test(SerieDepo)
##
## Augmented Dickey-Fuller Test
##
## data: SerieDepo
## Dickey-Fuller = -1.6644, Lag order = 5, p-value = 0.716
## alternative hypothesis: stationary
adf.test(SerieIpc)
##
## Augmented Dickey-Fuller Test
##
## data: SerieIpc
## Dickey-Fuller = -0.7888, Lag order = 5, p-value = 0.9602
## alternative hypothesis: stationary
En este caso, el valor P < 0.05 que manejan la
serie de licencias de construcción y la serie de ventas de vehículos
nuevos demostrarían que las series son estacionarias. Sin embargo, en el
punto anterior se comentó en el análisis visual que no lo era. Por
tanto, se decide diferenciar la serie de ventas de vehículos nuevos.
En cuanto a la serie de Depósitos de ahorros y la serie de Índice de
precios al consumidor dan un valor P muy alto, es necesario
diferenciarlas hasta que logren ser estacionales (Las diferencias de la
serie de Depósitos de ahorros serán logarítmicas).
Desestacionalización
Figura 5. Elaboración propia con datos de Julieth Cerón
Figura 6. Elaboración propia con datos de Julieth Cerón
Figura 7. Elaboración propia con datos de Julieth Cerón
Figura 8. Elaboración propia con datos de Julieth Cerón
En los gráficos anteriores se puede ver cómo afecta la
estacionalidad a cada variable. En el caso de licencias de construcción
y de venta de vehículos nuevos, se trabajará con la serie
desestacionalizada.
En cuanto a la serie de depósitos de ahorros y de IPC se trabajará
con las series originales puesto que la estacionalidad no tiene mucho
efecto en la serie de tiempo.
Elección de diferencias
Figura 9.Elaboración propia con datos de Julieth Cerón
Figura 10.Elaboración propia con datos de Julieth Cerón
Figura 11.Elaboración propia con datos de Julieth Cerón
Verificación de diferencias
Se realiza el test de Dickey-Fuller para corroborar cuántas diferencias utilizar:
H0: No estacionaria H1:
Estacionaria
adf.test(VehcSA_d1)
##
## Augmented Dickey-Fuller Test
##
## data: VehcSA_d1
## Dickey-Fuller = -5.5203, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
adf.test(VehcSA_d2)
##
## Augmented Dickey-Fuller Test
##
## data: VehcSA_d2
## Dickey-Fuller = -7.4823, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
adf.test(DepoSA_d1)
##
## Augmented Dickey-Fuller Test
##
## data: DepoSA_d1
## Dickey-Fuller = -5.2612, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
adf.test(DepoSA_d2)
##
## Augmented Dickey-Fuller Test
##
## data: DepoSA_d2
## Dickey-Fuller = -7.4431, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
adf.test(IpcSA_d1)
##
## Augmented Dickey-Fuller Test
##
## data: IpcSA_d1
## Dickey-Fuller = -4.299, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
adf.test(IpcSA_d2)
##
## Augmented Dickey-Fuller Test
##
## data: IpcSA_d2
## Dickey-Fuller = -6.4796, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
Al tener un valor P inferior a 0.5, se confirma que
solo se necesita de una diferencia para estacionarizar las series.
ARIMA
Para continuar con el modelo ARIMA, es necesario determinar P y Q (AR, MA)
En primer lugar se mirará el gráfico ACF (MA) para buscar retrasos con correlación significativa
Figuras 12, 13, 14, 15. Elaboración propia con datos de Julieth
Cerón
Después de identificar aquellos retrasos que pueden ser usados en el
modelo, se mirarán los retrasos en la función de autocorrelación parcial
- PACF (Ar)
Figuras 16, 17, 18, 19. Elaboración propia con datos de Julieth
Cerón
Después de realizar los dos procedimientos. Se
obtienen los siguientes posibles modelos para cada una de las series de
tiempo:
Orden: (p, q, d)
LicModel1 = arima(Lic_SA, order = c(3,0,3))
LicModel2 = arima(Lic_SA, order = c(5,0,5))
LicModel3 = auto.arima(Lic_SA)
VehcModel1 = arima(VehcSA_d1, order = c(1,1,1))
VehcModel2 = arima(VehcSA_d1, order = c(2,1,6))
VehcModel3 = auto.arima(Vehc_SA)
DepoModel1 = arima(DepoSA_d1, order = c(2,1,5))
DepoModel2 = arima(DepoSA_d1, order = c(2,1,2))
DepoModel3 = auto.arima(Depo_SA)
IpcModel1 = arima(IpcSA_d1, order = c(1,1,1))
IpcModel2 = arima(IpcSA_d1, order = c(1,1,3))
IpcModel3 = auto.arima(Ipc_SA)
AIC y BIC
A continuación se buscarán los
modelos que presenten menor AIC y BIC para posteriormente usarlos en el
análisis
LicModel1
##
## Call:
## arima(x = Lic_SA, order = c(3, 0, 3))
##
## Coefficients:
## ar1 ar2 ar3 ma1 ma2 ma3 intercept
## -0.6113 0.655 0.6002 0.7356 -0.7355 -1.0000 87225.2062
## s.e. 0.0784 0.073 0.0774 0.0465 0.0411 0.0495 895.3601
##
## sigma^2 estimated as 1.848e+09: log likelihood = -1551.03, aic = 3118.05
LicModel2
##
## Call:
## arima(x = Lic_SA, order = c(5, 0, 5))
##
## Coefficients:
## ar1 ar2 ar3 ar4 ar5 ma1 ma2 ma3 ma4
## 0.0217 0.1029 -0.3891 0.2220 0.5480 0.0960 -0.2051 0.2051 -0.096
## s.e. 0.0935 0.0885 0.0929 0.0881 0.0915 0.0574 0.0527 0.0519 0.056
## ma5 intercept
## -1.0000 87234.253
## s.e. 0.0616 874.161
##
## sigma^2 estimated as 1.783e+09: log likelihood = -1550.03, aic = 3124.05
LicModel3
## Series: Lic_SA
## ARIMA(0,0,0)(0,0,1)[12] with non-zero mean
##
## Coefficients:
## sma1 mean
## -0.1809 87222.447
## s.e. 0.1098 3542.983
##
## sigma^2 = 2.332e+09: log likelihood = -1561.28
## AIC=3128.57 AICc=3128.76 BIC=3137.12
VehcModel1
##
## Call:
## arima(x = VehcSA_d1, order = c(1, 1, 1))
##
## Coefficients:
## ar1 ma1
## -0.3504 -1.000
## s.e. 0.0877 0.023
##
## sigma^2 estimated as 165446: log likelihood = -842, aic = 1690
VehcModel2
##
## Call:
## arima(x = VehcSA_d1, order = c(2, 1, 6))
##
## Coefficients:
## ar1 ar2 ma1 ma2 ma3 ma4 ma5 ma6
## 0.0929 0.1505 -1.6298 0.3408 0.6105 -0.569 0.217 0.0327
## s.e. NaN NaN NaN NaN NaN NaN NaN NaN
##
## sigma^2 estimated as 132856: log likelihood = -830.96, aic = 1679.92
VehcModel3
## Series: Vehc_SA
## ARIMA(0,1,2)
##
## Coefficients:
## ma1 ma2
## -0.3976 -0.2593
## s.e. 0.0926 0.1006
##
## sigma^2 = 67073: log likelihood = -794.46
## AIC=1594.92 AICc=1595.14 BIC=1603.13
DepoModel1
##
## Call:
## arima(x = DepoSA_d1, order = c(2, 1, 5))
##
## Coefficients:
## ar1 ar2 ma1 ma2 ma3 ma4 ma5
## 1.4756 -0.8382 -2.4885 2.5462 -1.3148 0.3208 -0.0637
## s.e. 0.1450 0.1599 0.1785 0.3957 0.3988 0.2848 0.1119
##
## sigma^2 estimated as 0.001167: log likelihood = 244.08, aic = -472.17
DepoModel2
##
## Call:
## arima(x = DepoSA_d1, order = c(2, 1, 2))
##
## Coefficients:
## ar1 ar2 ma1 ma2
## 0.1053 0.1760 -1.0763 0.0763
## s.e. 0.3030 0.0894 0.2994 0.2985
##
## sigma^2 estimated as 0.001232: log likelihood = 241.03, aic = -472.06
DepoModel3
## Series: Depo_SA
## ARIMA(0,1,0)
##
## sigma^2 = 5.38e+22: log likelihood = -3503.76
## AIC=7009.53 AICc=7009.56 BIC=7012.37
IpcModel1
##
## Call:
## arima(x = IpcSA_d1, order = c(1, 1, 1))
##
## Coefficients:
## ar1 ma1
## 0.1605 -0.8851
## s.e. 0.1059 0.0557
##
## sigma^2 estimated as 0.242: log likelihood = -90.03, aic = 186.06
IpcModel2
##
## Call:
## arima(x = IpcSA_d1, order = c(1, 1, 3))
##
## Coefficients:
## ar1 ma1 ma2 ma3
## -0.3361 -0.3868 -0.3819 -0.0427
## s.e. NaN NaN NaN NaN
##
## sigma^2 estimated as 0.242: log likelihood = -90.02, aic = 190.05
IpcModel3
## Series: Ipc_SA
## ARIMA(0,2,1)
##
## Coefficients:
## ma1
## -0.8051
## s.e. 0.0532
##
## sigma^2 = 0.1708: log likelihood = -67.44
## AIC=138.89 AICc=138.98 BIC=144.56
Se eligen los siguientes modelos basados en el AIC y
BIC de cada modelo
Licencias de construcción
Modelo1 y Modelo3
Venta de vehículos nuevos
Modelo2 y Modelo3
Depósitos de ahorros
Modelo2 y Modelo3
IPC
Modelo1 y Modelo3
Validación de los
modelos
Para validar si los residuales de los modelos son ruido blanco, se usará el Test de Box-Jenkins
H0: No hay autocorrelación de los residuos H1: Existe autocorrelación de los residuos
Box.test(LicModel1$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: LicModel1$residuals
## X-squared = 8.1202, df = 20, p-value = 0.991
Box.test(LicModel3$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: LicModel3$residuals
## X-squared = 14.699, df = 20, p-value = 0.7934
Box.test(VehcModel2$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: VehcModel2$residuals
## X-squared = 37.911, df = 20, p-value = 0.009079
Box.test(VehcModel3$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: VehcModel3$residuals
## X-squared = 22.931, df = 20, p-value = 0.2922
Box.test(DepoModel2$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: DepoModel2$residuals
## X-squared = 17.831, df = 20, p-value = 0.5985
Box.test(DepoModel3$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: DepoModel3$residuals
## X-squared = 52.913, df = 20, p-value = 8.371e-05
Box.test(IpcModel1$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: IpcModel1$residuals
## X-squared = 24.997, df = 20, p-value = 0.2016
Box.test(IpcModel3$residuals, lag = 20, type = "Ljung-Box")
##
## Box-Ljung test
##
## data: IpcModel3$residuals
## X-squared = 10.876, df = 20, p-value = 0.9494
Para licencias de construcción, los residuales de cada
modelo son ruido blanco
Para Ventas de vehículos nuevos, el
modelo 2 presenta residuales que no son ruido blanco, mientras que los
del modelo 3 sí lo son
Para depósitos de ahorros, los
residuales de cada modelo son ruido blanco
Para el IPC, los
residuales de ambos modelos son ruido blanco
A
continuación se revisará que los residuales se distribuyan de forma
normal mediante el test de normalidad Shapiro-Wilk
H0: Los residuos siguen una distribución normal.
H1: Los residuos NO siguen una distribución
normal.
shapiro.test(LicModel2$residuals)
##
## Shapiro-Wilk normality test
##
## data: LicModel2$residuals
## W = 0.97907, p-value = 0.04486
shapiro.test(LicModel3$residuals)
##
## Shapiro-Wilk normality test
##
## data: LicModel3$residuals
## W = 0.9346, p-value = 1.03e-05
shapiro.test(VehcModel2$residuals)
##
## Shapiro-Wilk normality test
##
## data: VehcModel2$residuals
## W = 0.91507, p-value = 2.144e-06
shapiro.test(VehcModel3$residuals)
##
## Shapiro-Wilk normality test
##
## data: VehcModel3$residuals
## W = 0.92693, p-value = 9.371e-06
shapiro.test(DepoModel1$residuals)
##
## Shapiro-Wilk normality test
##
## data: DepoModel1$residuals
## W = 0.82539, p-value = 5.649e-11
shapiro.test(DepoModel2$residuals)
##
## Shapiro-Wilk normality test
##
## data: DepoModel2$residuals
## W = 0.83007, p-value = 8.439e-11
shapiro.test(IpcModel1$residuals)
##
## Shapiro-Wilk normality test
##
## data: IpcModel1$residuals
## W = 0.85181, p-value = 6.016e-10
shapiro.test(IpcModel3$residuals)
##
## Shapiro-Wilk normality test
##
## data: IpcModel3$residuals
## W = 0.81922, p-value = 2.991e-11
En este caso, debido a que todos los valores P son menores
a 0.05. Los residuales de ningún modelo se distribuyen de forma normal
A continuación se procederá con el pronóstico ARIMA de cada modelo, cabe resaltar que este pronóstico está intentando predecir los últimos 4 meses de los que ya tenemos constancia. Esto se hace con el objetivo de comprobar la precisión del modelo antes de intentar pronosticar el futuro real.
## Point Forecast Lo 95 Hi 95
## Sep 2022 101568.99 16416.90 186721.1
## Oct 2022 53428.89 -32318.46 139176.2
## Nov 2022 127179.02 40581.14 213776.9
## Dec 2022 49276.88 -39207.48 137761.2
## Point Forecast Lo 95 Hi 95
## Sep 2022 90147.02 -4493.147 184787.2
## Oct 2022 91291.28 -3348.889 185931.4
## Nov 2022 95747.52 1107.348 190387.7
## Dec 2022 105137.96 10497.794 199778.1
## Point Forecast Lo 95 Hi 95
## Aug 2022 -97.06784 -811.6626 617.5270
## Sep 2022 -158.20155 -969.0863 652.6832
## Oct 2022 36.77613 -785.1775 858.7298
## Nov 2022 -74.77632 -912.0915 762.5389
## Point Forecast Lo 95 Hi 95
## Aug 2022 2096.038 1588.436 2603.640
## Sep 2022 2024.700 1432.116 2617.284
## Oct 2022 2024.700 1407.064 2642.337
## Nov 2022 2024.700 1382.988 2666.413
## Point Forecast Lo 95 Hi 95
## Sep 2022 0.004987378 -0.06408509 0.07405985
## Oct 2022 0.003966094 -0.06515102 0.07308321
## Nov 2022 0.007292079 -0.06302016 0.07760432
## Dec 2022 0.007462532 -0.06288442 0.07780948
## Point Forecast Lo 95 Hi 95
## Sep 2022 1.181214e+13 1.135754e+13 1.226674e+13
## Oct 2022 1.181214e+13 1.116923e+13 1.245505e+13
## Nov 2022 1.181214e+13 1.102475e+13 1.259954e+13
## Dec 2022 1.181214e+13 1.090293e+13 1.272135e+13
## Point Forecast Lo 95 Hi 95
## Sep 2022 1.0272769 0.06306387 1.991490
## Oct 2022 0.9722702 -0.02783367 1.972374
## Nov 2022 0.9634417 -0.04835545 1.975239
## Dec 2022 0.9620247 -0.05878962 1.982839
## Point Forecast Lo 95 Hi 95
## Sep 2022 124.8280 124.0179 125.6380
## Oct 2022 125.9722 124.7100 127.2344
## Nov 2022 127.1165 125.4251 128.8078
## Dec 2022 128.2607 126.1374 130.3841
Figuras 20,21,22,23,24,25,27,27. Elaboración propia con datos de
Julieth cerón.
Para revisar si los modelos son precisos,
se calculará el MAE y RMSE de cada pronóstico y se elegirán aquellos
modelos que sirvan para predecir realmente el comportamiento de la serie
de tiempo.
MAE
mae(LicObservado, LicPronosticado1)
## [1] 28007.31
mae(LicObservado, LicPronosticado2)
## [1] 37586.2
mae(VehcObservado, VehcPronosticado1)
## [1] 1813.317
mae(VehcObservado, VehcPronosticado2)
## [1] 302.5349
mae(DepoObservado, DepoPronosticado1)
## [1] 1.174302e+13
mae(DepoObservado, DepoPronosticado2)
## [1] 69119857381
mae(IpcObservado, IpcPronosticado1)
## [1] 125.0962
mae(IpcObservado, IpcPronosticado2)
## [1] 0.4668445
RMSE
rmse(LicObservado, LicPronosticado1)
## [1] 38119.86
rmse(LicObservado, LicPronosticado2)
## [1] 38776.61
rmse(VehcObservado, VehcPronosticado1)
## [1] 1816.499
rmse(VehcObservado, VehcPronosticado2)
## [1] 321.3636
rmse(DepoObservado, DepoPronosticado1)
## [1] 1.174314e+13
rmse(DepoObservado, DepoPronosticado2)
## [1] 87060939213
rmse(IpcObservado, IpcPronosticado1)
## [1] 125.1034
rmse(IpcObservado, IpcPronosticado2)
## [1] 0.5203955
Analizando el MAE y RMSE, pero dándole más importancia
al RMSE debido a la información presentada hasta ahora. Se decide que
los únicos pronósticos lo suficientemente precisos como para pronosticar
los primeros 4 meses de 2023 son:
Modelo 3 de depósitos de
ahorros: (0, 1, 0)
Modelo 3 de IPC: (0, 2, 1)
Figura 28. Elaboración propia con datos de Julieth Cerón
## Point Forecast Lo 95 Hi 95
## Jan 2023 1.173948e+13 1.129132e+13 1.218763e+13
## Feb 2023 1.173948e+13 1.110569e+13 1.237327e+13
## Mar 2023 1.173948e+13 1.096325e+13 1.251571e+13
## Apr 2023 1.173948e+13 1.084317e+13 1.263579e+13
Figura 29. Elaboración propia con datos de Julieth Cerón
## Point Forecast Lo 95 Hi 95
## Jan 2023 129.9845 129.1814 130.7876
## Feb 2023 131.2419 129.9882 132.4955
## Mar 2023 132.4992 130.8166 134.1819
## Apr 2023 133.7566 131.6413 135.8719
Basado en estos resultados, se recomienda a los bancos mantener un
perfil de riesgo conservador durantes los siguientes 4 meses, puesto que
los clientes no incrementarán sus depósitos.
Por otro lado, se
recomienda a un inversionista que contrate un CDT ajustado al IPC,
debido a que por una parte las tasas incrementarán debido a que las
tasas de los préstamos también incrementan, y por otra parte porque con
el incremento pronosticado el inversor podrá recibir una tasa variable
creciente.