Empezamoss agregando la base de datos
Convertimos la base de datos en series de tiempo
taller_1 <- taller$`Cartera hipotecaria en moneda legal, mensual(Dato fin de mes) Miles de millones COP`
datos1.ts <- ts(taller_1, start = c(2015, 1), frequency = 12)
datos1.ts## Jan Feb Mar Apr May Jun Jul Aug Sep
## 2015 36.848 37.310 37.615 38.377 38.954 39.139 39.730 40.153 41.005
## 2016 43.061 43.527 44.223 44.826 45.360 46.154 46.677 47.322 47.500
## 2017 49.202 49.840 50.230 50.678 51.244 51.353 51.707 52.417 53.053
## 2018 54.857 55.152 55.864 56.345 57.123 57.775 57.669 58.546 59.182
## 2019 61.711 62.206 62.408 62.700 63.147 63.722 64.379 64.890 65.469
## 2020 67.758 68.326 68.506 68.619 68.846 69.135 69.485 69.661 70.110
## 2021 72.305 73.163 73.890 74.697 75.292 76.094 77.049 77.763 79.225
## 2022 82.837 83.852 85.097 85.930 86.880 88.144 89.193 90.292 91.358
## 2023 94.667 95.180 95.743 96.068 96.771 97.286 97.641 98.537 99.443
## 2024 102.950 103.463 103.498 103.862 104.647 105.156 105.615 106.353 107.052
## 2025 111.225
## Oct Nov Dec
## 2015 41.234 41.821 42.717
## 2016 47.884 48.379 49.113
## 2017 53.517 53.864 54.692
## 2018 59.878 60.584 61.336
## 2019 66.042 66.639 67.347
## 2020 70.707 71.121 72.132
## 2021 80.108 80.953 82.424
## 2022 92.207 93.514 94.547
## 2023 100.135 101.388 102.398
## 2024 107.976 109.094 110.440
## 2025
utilizamos este codigo dado que nuestra base de datos termina en enero de 2025 y no se rellene con datos falsos
Comenzamos mirando los graficos
plot(datos1.ts , main="serie de tiempo", ylab= "CARTERA", col="red")#podemos ver que es una caminata aleatoriacon esto podemos afirmar que se va notando que tenemos una caminata aleatoria(“mal llamado caminata de borracho”)
##
## Augmented Dickey-Fuller Test
##
## data: datos1.ts
## Dickey-Fuller = -0.093823, Lag order = 0, p-value = 0.99
## alternative hypothesis: stationary
como verificamos afirmamos que como es valor p es mayor a 0.05 se confirma que la serie no es estacionaria
para poder seguir, necesitamos mirar los graficos PACF Y ACF con los datos originales
como verificamos que hay un resago dado que entra en el segundo.
Entonces seria “1”
aqui podemos observar que no entran en ningun resago entonces es “0”
le agregamos a este codigo el method ML por lo que funcion arima de una vez reconoce si la serie es estacionaria o no por lo tanto no permite hacer la funcion si la serie no es estacionaria
##
## Call:
## arima(x = datos1.ts, order = c(1, 0, 0), method = "ML")
##
## Coefficients:
## ar1 intercept
## 0.9998 73.9874
## s.e. 0.0002 36.8469
##
## sigma^2 estimated as 0.4811: log likelihood = -131.41, aic = 268.81
volvemos a realizar lo del 5 punto pero esta vez comenzando haciendo las diferencias para que la serie sea estacionaria
## [1] 2
comenzamos mirando que nos toca hacer 2 diferencias pero ha medida que vamos haciendo cada diferencia verificamos si es estacionaria o no
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct
## 2015 0.462 0.305 0.762 0.577 0.185 0.591 0.423 0.852 0.229
## 2016 0.344 0.466 0.696 0.603 0.534 0.794 0.523 0.645 0.178 0.384
## 2017 0.089 0.638 0.390 0.448 0.566 0.109 0.354 0.710 0.636 0.464
## 2018 0.165 0.295 0.712 0.481 0.778 0.652 -0.106 0.877 0.636 0.696
## 2019 0.375 0.495 0.202 0.292 0.447 0.575 0.657 0.511 0.579 0.573
## 2020 0.411 0.568 0.180 0.113 0.227 0.289 0.350 0.176 0.449 0.597
## 2021 0.173 0.858 0.727 0.807 0.595 0.802 0.955 0.714 1.462 0.883
## 2022 0.413 1.015 1.245 0.833 0.950 1.264 1.049 1.099 1.066 0.849
## 2023 0.120 0.513 0.563 0.325 0.703 0.515 0.355 0.896 0.906 0.692
## 2024 0.552 0.513 0.035 0.364 0.785 0.509 0.459 0.738 0.699 0.924
## 2025 0.785
## Nov Dec
## 2015 0.587 0.896
## 2016 0.495 0.734
## 2017 0.347 0.828
## 2018 0.706 0.752
## 2019 0.597 0.708
## 2020 0.414 1.011
## 2021 0.845 1.471
## 2022 1.307 1.033
## 2023 1.253 1.010
## 2024 1.118 1.346
## 2025
comenzamos aver a diferencia con los datos originales ahi un cambio
notorio pero no podemos afirmar con solo mirar el grafico
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct
## 2015 -0.157 0.457 -0.185 -0.392 0.406 -0.168 0.429 -0.623
## 2016 -0.552 0.122 0.230 -0.093 -0.069 0.260 -0.271 0.122 -0.467 0.206
## 2017 -0.645 0.549 -0.248 0.058 0.118 -0.457 0.245 0.356 -0.074 -0.172
## 2018 -0.663 0.130 0.417 -0.231 0.297 -0.126 -0.758 0.983 -0.241 0.060
## 2019 -0.377 0.120 -0.293 0.090 0.155 0.128 0.082 -0.146 0.068 -0.006
## 2020 -0.297 0.157 -0.388 -0.067 0.114 0.062 0.061 -0.174 0.273 0.148
## 2021 -0.838 0.685 -0.131 0.080 -0.212 0.207 0.153 -0.241 0.748 -0.579
## 2022 -1.058 0.602 0.230 -0.412 0.117 0.314 -0.215 0.050 -0.033 -0.217
## 2023 -0.913 0.393 0.050 -0.238 0.378 -0.188 -0.160 0.541 0.010 -0.214
## 2024 -0.458 -0.039 -0.478 0.329 0.421 -0.276 -0.050 0.279 -0.039 0.225
## 2025 -0.561
## Nov Dec
## 2015 0.358 0.309
## 2016 0.111 0.239
## 2017 -0.117 0.481
## 2018 0.010 0.046
## 2019 0.024 0.111
## 2020 -0.183 0.597
## 2021 -0.038 0.626
## 2022 0.458 -0.274
## 2023 0.561 -0.243
## 2024 0.194 0.228
## 2025
Ahora este grafico comparandolo con el primero con los datos originales
podemos ver un gran cambio
##
## Augmented Dickey-Fuller Test
##
## data: seriediff2
## Dickey-Fuller = -6.6152, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary
dado que nos da menos de 0.05 con la prueba dickey fuller podemos afirmar que ahora la serie si es estacionaria
aqui podemos observar como el resago entra en el 1 entonces seria
“0”
resumen <- data.frame(
Modelo = c("ARIMA(1,0,0)", "ARIMA(2,2,0)"),
RMSE = c(rmse1, rmse2)
)
resumen[order(resumen$RMSE), ]viendo que tenemos menor RMSE con el modelo 2 trabajaremos con ese modelo para comparar los pronosticos
de igual manera verificamos los resultados anteriores con el summary
##
## Call:
## arima(x = datos1.ts, order = c(1, 0, 0), method = "ML")
##
## Coefficients:
## ar1 intercept
## 0.9998 73.9874
## s.e. 0.0002 36.8469
##
## sigma^2 estimated as 0.4811: log likelihood = -131.41, aic = 268.81
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.608219 0.6936365 0.6215138 0.8894043 0.9237217 0.9999015
## ACF1
## Training set 0.3126962
##
## Call:
## arima(x = datos1.ts, order = c(2, 2, 0))
##
## Coefficients:
## ar1 ar2
## -0.7405 -0.4405
## s.e. 0.0827 0.0828
##
## sigma^2 estimated as 0.07696: log likelihood = -16.64, aic = 39.27
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.01047725 0.2751548 0.2121115 0.01340932 0.3209767 0.3412485
## ACF1
## Training set 1.274951e-05