Algoritmos de Alisamiento Exponencial
Los métodos de previsión se basan en la idea de que las observaciones pasadas contienen información sobre el patrón de comportamiento de la serie de tiempo.
El algoritmo de alisamiento exponencial intenta tratar este problema.
Los algoritmos no tienen un desarrollo probabilístico que pruebe su eficiencia, pero en la práctica son muy útiles por su simplicidad y eficiencia computacional.
Suavizado exponencial:
Técnica para suavizar datos de series de tiempo utilizando una función de ventana exponencial.
Difiere del promedio móvil simple, con el tiempo las funciones exponenciales asignan pesos exponencialmente decrecientes.
- Los pesos mayores se asignan a los valores u observaciones recientes, mientras que los pesos menores se asignan a los valores u observaciones más antiguos.
Entre muchas funciones de ventana, en el procesamiento de señales, la función de suavizado exponencial generalmente se aplica para suavizar datos donde actúa como un filtro de paso bajo para eliminar el ruido de alta frecuencia.
Suaviamiento exponencial simple - SES (simple exponencial smoothing)
Este procedimiento es adecuado cuando los datos no tienen tendencia o patrón estacional. Los pesos de cada observación son determinados por un parámetro de suavizamiento \(\alpha\).
Para un conjunto de datos con \(T\) observaciones , calculamos el valor predicho \(\hat{y}_{t+1}\), el cual estará basado en \(y_1\) a través de \(y_t\) de la siguiente forma:
\[\hat{y}_{t+1}=\alpha y_t+\alpha(1-\alpha)y_{t−1}+...+\alpha(1−\alpha)^{t−1}y_1\]
Donde:
\(0< \alpha < 1\).
\(\alpha\) puede ser visto como una tasa de aprendizaje.
Valores cercanos a cero son considerados como aprendizaje lento ya que se da más peso a información histórica
Valores cercanos a 1 son considerados como aprendizaje rápido porque el algoritmo da más peso a las observaciones recientes.
library(tseries)
#library(FitAR)
library(urca)
library(highcharter)
library(readxl)
library(ggplot2)
library(TSstudio)
library(forecast)
library(car)
library(rio)library(readxl)
IPC=rio::import("https://github.com/Wilsonsr/Series-de-Tiempo/raw/main/bases/IPC_ACTUALIZADO.xlsx")
head(IPC)## Año(aaaa)-Mes(mm) Índice Inflación anual % Inflación mensual %
## 1 200001 40.30 8.25 1.29
## 2 200002 41.23 8.89 2.30
## 3 200003 41.93 9.73 1.71
## 4 200004 42.35 9.96 1.00
## 5 200005 42.57 10.00 0.52
## 6 200006 42.56 9.68 -0.02
## Inflación año corrido %
## 1 1.29
## 2 3.62
## 3 5.39
## 4 6.44
## 5 7.00
## 6 6.98
inicio <- as.Date("2000-01-01")
fin <- as.Date("2023-07-01")
fecha <- seq.Date(from=inicio, to=fin, by="month")
print(fecha)## [1] "2000-01-01" "2000-02-01" "2000-03-01" "2000-04-01" "2000-05-01"
## [6] "2000-06-01" "2000-07-01" "2000-08-01" "2000-09-01" "2000-10-01"
## [11] "2000-11-01" "2000-12-01" "2001-01-01" "2001-02-01" "2001-03-01"
## [16] "2001-04-01" "2001-05-01" "2001-06-01" "2001-07-01" "2001-08-01"
## [21] "2001-09-01" "2001-10-01" "2001-11-01" "2001-12-01" "2002-01-01"
## [26] "2002-02-01" "2002-03-01" "2002-04-01" "2002-05-01" "2002-06-01"
## [31] "2002-07-01" "2002-08-01" "2002-09-01" "2002-10-01" "2002-11-01"
## [36] "2002-12-01" "2003-01-01" "2003-02-01" "2003-03-01" "2003-04-01"
## [41] "2003-05-01" "2003-06-01" "2003-07-01" "2003-08-01" "2003-09-01"
## [46] "2003-10-01" "2003-11-01" "2003-12-01" "2004-01-01" "2004-02-01"
## [51] "2004-03-01" "2004-04-01" "2004-05-01" "2004-06-01" "2004-07-01"
## [56] "2004-08-01" "2004-09-01" "2004-10-01" "2004-11-01" "2004-12-01"
## [61] "2005-01-01" "2005-02-01" "2005-03-01" "2005-04-01" "2005-05-01"
## [66] "2005-06-01" "2005-07-01" "2005-08-01" "2005-09-01" "2005-10-01"
## [71] "2005-11-01" "2005-12-01" "2006-01-01" "2006-02-01" "2006-03-01"
## [76] "2006-04-01" "2006-05-01" "2006-06-01" "2006-07-01" "2006-08-01"
## [81] "2006-09-01" "2006-10-01" "2006-11-01" "2006-12-01" "2007-01-01"
## [86] "2007-02-01" "2007-03-01" "2007-04-01" "2007-05-01" "2007-06-01"
## [91] "2007-07-01" "2007-08-01" "2007-09-01" "2007-10-01" "2007-11-01"
## [96] "2007-12-01" "2008-01-01" "2008-02-01" "2008-03-01" "2008-04-01"
## [101] "2008-05-01" "2008-06-01" "2008-07-01" "2008-08-01" "2008-09-01"
## [106] "2008-10-01" "2008-11-01" "2008-12-01" "2009-01-01" "2009-02-01"
## [111] "2009-03-01" "2009-04-01" "2009-05-01" "2009-06-01" "2009-07-01"
## [116] "2009-08-01" "2009-09-01" "2009-10-01" "2009-11-01" "2009-12-01"
## [121] "2010-01-01" "2010-02-01" "2010-03-01" "2010-04-01" "2010-05-01"
## [126] "2010-06-01" "2010-07-01" "2010-08-01" "2010-09-01" "2010-10-01"
## [131] "2010-11-01" "2010-12-01" "2011-01-01" "2011-02-01" "2011-03-01"
## [136] "2011-04-01" "2011-05-01" "2011-06-01" "2011-07-01" "2011-08-01"
## [141] "2011-09-01" "2011-10-01" "2011-11-01" "2011-12-01" "2012-01-01"
## [146] "2012-02-01" "2012-03-01" "2012-04-01" "2012-05-01" "2012-06-01"
## [151] "2012-07-01" "2012-08-01" "2012-09-01" "2012-10-01" "2012-11-01"
## [156] "2012-12-01" "2013-01-01" "2013-02-01" "2013-03-01" "2013-04-01"
## [161] "2013-05-01" "2013-06-01" "2013-07-01" "2013-08-01" "2013-09-01"
## [166] "2013-10-01" "2013-11-01" "2013-12-01" "2014-01-01" "2014-02-01"
## [171] "2014-03-01" "2014-04-01" "2014-05-01" "2014-06-01" "2014-07-01"
## [176] "2014-08-01" "2014-09-01" "2014-10-01" "2014-11-01" "2014-12-01"
## [181] "2015-01-01" "2015-02-01" "2015-03-01" "2015-04-01" "2015-05-01"
## [186] "2015-06-01" "2015-07-01" "2015-08-01" "2015-09-01" "2015-10-01"
## [191] "2015-11-01" "2015-12-01" "2016-01-01" "2016-02-01" "2016-03-01"
## [196] "2016-04-01" "2016-05-01" "2016-06-01" "2016-07-01" "2016-08-01"
## [201] "2016-09-01" "2016-10-01" "2016-11-01" "2016-12-01" "2017-01-01"
## [206] "2017-02-01" "2017-03-01" "2017-04-01" "2017-05-01" "2017-06-01"
## [211] "2017-07-01" "2017-08-01" "2017-09-01" "2017-10-01" "2017-11-01"
## [216] "2017-12-01" "2018-01-01" "2018-02-01" "2018-03-01" "2018-04-01"
## [221] "2018-05-01" "2018-06-01" "2018-07-01" "2018-08-01" "2018-09-01"
## [226] "2018-10-01" "2018-11-01" "2018-12-01" "2019-01-01" "2019-02-01"
## [231] "2019-03-01" "2019-04-01" "2019-05-01" "2019-06-01" "2019-07-01"
## [236] "2019-08-01" "2019-09-01" "2019-10-01" "2019-11-01" "2019-12-01"
## [241] "2020-01-01" "2020-02-01" "2020-03-01" "2020-04-01" "2020-05-01"
## [246] "2020-06-01" "2020-07-01" "2020-08-01" "2020-09-01" "2020-10-01"
## [251] "2020-11-01" "2020-12-01" "2021-01-01" "2021-02-01" "2021-03-01"
## [256] "2021-04-01" "2021-05-01" "2021-06-01" "2021-07-01" "2021-08-01"
## [261] "2021-09-01" "2021-10-01" "2021-11-01" "2021-12-01" "2022-01-01"
## [266] "2022-02-01" "2022-03-01" "2022-04-01" "2022-05-01" "2022-06-01"
## [271] "2022-07-01" "2022-08-01" "2022-09-01" "2022-10-01" "2022-11-01"
## [276] "2022-12-01" "2023-01-01" "2023-02-01" "2023-03-01" "2023-04-01"
## [281] "2023-05-01" "2023-06-01" "2023-07-01"
## Año(aaaa)-Mes(mm) Índice Inflación anual % Inflación mensual %
## 1 200001 40.30 8.25 1.29
## 2 200002 41.23 8.89 2.30
## 3 200003 41.93 9.73 1.71
## 4 200004 42.35 9.96 1.00
## 5 200005 42.57 10.00 0.52
## 6 200006 42.56 9.68 -0.02
## Inflación año corrido % Fecha
## 1 1.29 2000-01-01
## 2 3.62 2000-02-01
## 3 5.39 2000-03-01
## 4 6.44 2000-04-01
## 5 7.00 2000-05-01
## 6 6.98 2000-06-01
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2000 1.29 2.30 1.71 1.00 0.52 -0.02 -0.04 0.32 0.43 0.15 0.33 0.46
## 2001 1.05 1.89 1.48 1.15 0.42 0.04 0.11 0.26 0.37 0.19 0.12 0.34
## 2002 0.80 1.26 0.71 0.92 0.60 0.43 0.02 0.09 0.36 0.56 0.78 0.27
## 2003 1.17 1.11 1.05 1.15 0.49 -0.05 -0.14 0.31 0.22 0.06 0.35 0.61
## 2004 0.89 1.20 0.98 0.46 0.38 0.60 -0.03 0.03 0.30 -0.01 0.28 0.30
## 2005 0.82 1.02 0.77 0.44 0.41 0.40 0.05 0.00 0.43 0.23 0.11 0.07
## 2006 0.54 0.66 0.70 0.45 0.33 0.30 0.41 0.39 0.29 -0.14 0.24 0.23
## 2007 0.77 1.17 1.21 0.90 0.30 0.12 0.17 -0.13 0.08 0.01 0.47 0.49
## 2008 1.06 1.51 0.81 0.71 0.93 0.86 0.48 0.19 -0.19 0.35 0.28 0.44
## 2009 0.59 0.84 0.50 0.32 0.01 -0.06 -0.04 0.04 -0.11 -0.13 -0.07 0.08
## 2010 0.69 0.83 0.25 0.46 0.10 0.11 -0.04 0.11 -0.14 -0.09 0.19 0.65
## 2011 0.91 0.60 0.27 0.12 0.28 0.32 0.14 -0.03 0.31 0.19 0.14 0.42
## 2012 0.73 0.61 0.12 0.14 0.30 0.08 -0.02 0.04 0.29 0.16 -0.14 0.09
## 2013 0.30 0.44 0.21 0.25 0.28 0.23 0.04 0.08 0.29 -0.26 -0.22 0.26
## 2014 0.49 0.63 0.39 0.46 0.48 0.09 0.15 0.20 0.14 0.16 0.13 0.27
## 2015 0.64 1.15 0.59 0.54 0.26 0.10 0.19 0.48 0.72 0.68 0.60 0.62
## 2016 1.29 1.28 0.94 0.50 0.51 0.48 0.52 -0.32 -0.05 -0.06 0.11 0.42
## 2017 1.02 1.01 0.47 0.47 0.23 0.11 -0.05 0.14 0.04 0.02 0.18 0.38
## 2018 0.63 0.71 0.24 0.46 0.25 0.15 -0.13 0.12 0.16 0.12 0.12 0.30
## 2019 0.60 0.57 0.43 0.50 0.31 0.27 0.22 0.09 0.23 0.16 0.10 0.26
## 2020 0.42 0.67 0.57 0.16 -0.32 -0.38 0.00 -0.01 0.32 -0.06 -0.15 0.38
## 2021 0.41 0.64 0.51 0.59 1.00 -0.05 0.32 0.45 0.38 0.01 0.50 0.73
## 2022 1.67 1.63 1.00 1.25 0.84 0.51 0.81 1.02 0.93 0.72 0.77 1.26
## 2023 1.78 1.66 1.05 0.78 0.43 0.30 0.50
## [1] 276
Realizamos la gráfica de los datos
SES(Suavizado Exponencial Simple)
- Datos que no tienen tendencia o patrón estacional.
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.2 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ lubridate 1.9.2 ✔ tibble 3.2.1
## ✔ purrr 1.0.1 ✔ tidyr 1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::recode() masks car::recode()
## ✖ purrr::some() masks car::some()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
El pronóstico del período \(t\) \((F_{t})\) será igual al pronóstico del período anterior, es decir, del período \(t-1\) \((F_{t-1})\) más alfa \((\alpha)\) por el error del período anterior \((A_{t-1}-F_{t-1})\)
##
## Forecast method: Simple exponential smoothing
##
## Model Information:
## Simple exponential smoothing
##
## Call:
## ses(y = z1, h = 12, alpha = 0.2)
##
## Smoothing parameters:
## alpha = 0.2
##
## Initial states:
## l = 1.0987
##
## sigma: 0.384
##
## AIC AICc BIC
## 1024.960 1025.004 1032.200
##
## Error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -0.003186061 0.3826495 0.293295 -Inf Inf 1.14779 0.5972244
##
## Forecasts:
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Jan 2023 0.9228607 0.4306892 1.415032 0.17014930 1.675572
## Feb 2023 0.9228607 0.4209422 1.424779 0.15524267 1.690479
## Mar 2023 0.9228607 0.4113810 1.434340 0.14062007 1.705101
## Apr 2023 0.9228607 0.4019953 1.443726 0.12626583 1.719455
## May 2023 0.9228607 0.3927757 1.452946 0.11216571 1.733556
## Jun 2023 0.9228607 0.3837138 1.462008 0.09830667 1.747415
## Jul 2023 0.9228607 0.3748017 1.470920 0.08467676 1.761045
## Aug 2023 0.9228607 0.3660322 1.479689 0.07126497 1.774456
## Sep 2023 0.9228607 0.3573987 1.488323 0.05806114 1.787660
## Oct 2023 0.9228607 0.3488950 1.496826 0.04505591 1.800665
## Nov 2023 0.9228607 0.3405155 1.505206 0.03224056 1.813481
## Dec 2023 0.9228607 0.3322549 1.513466 0.01960702 1.826114
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Jan 2023 0.9228607 0.4306892 1.415032 0.17014930 1.675572
## Feb 2023 0.9228607 0.4209422 1.424779 0.15524267 1.690479
## Mar 2023 0.9228607 0.4113810 1.434340 0.14062007 1.705101
## Apr 2023 0.9228607 0.4019953 1.443726 0.12626583 1.719455
## May 2023 0.9228607 0.3927757 1.452946 0.11216571 1.733556
## Jun 2023 0.9228607 0.3837138 1.462008 0.09830667 1.747415
## Jul 2023 0.9228607 0.3748017 1.470920 0.08467676 1.761045
## Aug 2023 0.9228607 0.3660322 1.479689 0.07126497 1.774456
## Sep 2023 0.9228607 0.3573987 1.488323 0.05806114 1.787660
## Oct 2023 0.9228607 0.3488950 1.496826 0.04505591 1.800665
## Nov 2023 0.9228607 0.3405155 1.505206 0.03224056 1.813481
## Dec 2023 0.9228607 0.3322549 1.513466 0.01960702 1.826114
## [1] 283
## [1] 276
ETS (Error tendencia y estacionalidad)
El algoritmo ETS es especialmente útil para conjuntos de datos con estacionalidad y otras suposiciones previas sobre los datos.
ETS calcula un promedio ponderado sobre todas las observaciones en el conjunto de datos de las series temporales de entrada como su predicción.
Las ponderaciones disminuyen exponencialmente con el tiempo, en lugar de las ponderaciones constantes en los métodos de promedio móvil simple.
Las ponderaciones dependen de un parámetro constante, conocido como parámetro de suavizamiento.
##
## Ljung-Box test
##
## data: Residuals from ETS(A,N,A)
## Q* = 57.418, df = 24, p-value = 0.0001465
##
## Model df: 0. Total lags used: 24
- Veamos el ajuste entre los datos de la serie y el pronóstico del
modelo en la siguiente representación gráfica, usando la función
fitted()que obtiene un ajuste con la data historica.
##
## Forecast method: ETS(A,N,A)
##
## Model Information:
## ETS(A,N,A)
##
## Call:
## ets(y = z1)
##
## Smoothing parameters:
## alpha = 0.4283
## gamma = 1e-04
##
## Initial states:
## l = 0.6784
## s = -0.0295 -0.1793 -0.3052 -0.1516 -0.2475 -0.2867
## -0.2167 -0.0315 0.1534 0.3001 0.6022 0.3922
##
## sigma: 0.2436
##
## AIC AICc BIC
## 787.3352 789.1814 841.6413
##
## Error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 0.003826058 0.2373507 0.1835628 NaN Inf 0.7183603 0.2348024
##
## Forecasts:
## Point Forecast Lo 95 Hi 95
## Jan 2023 1.5230061 1.0455400 2.000472
## Feb 2023 1.7329328 1.2135139 2.252352
## Mar 2023 1.4307746 0.8725470 1.989002
## Apr 2023 1.2841427 0.6896344 1.878651
## May 2023 1.0992502 0.4705514 1.727949
## Jun 2023 0.9140417 0.2529182 1.575165
## Jul 2023 0.8440168 0.1519862 1.536047
Y podemos representar solo los resultados a través de un dataframe, asignando la ejecución del mismo a la variable pronóstico.
## Point Forecast Lo 95 Hi 95
## Jan 2023 1.5230061 1.0455400 2.000472
## Feb 2023 1.7329328 1.2135139 2.252352
## Mar 2023 1.4307746 0.8725470 1.989002
## Apr 2023 1.2841427 0.6896344 1.878651
## May 2023 1.0992502 0.4705514 1.727949
## Jun 2023 0.9140417 0.2529182 1.575165
## Jul 2023 0.8440168 0.1519862 1.536047
SUAVIZADO EXPONENCIAL(HOLT-WINTERS)
El método se basa en un algoritmo iterativo que a cada tiempo realiza un pronóstico sobre el comportamiento de la serie en base a promedios debidamente ponderados de los datos obtenidos anteriormente.
A este particular hay que reseñar los 2 diferentes tipos de estacionalidad que se pueden dar en las gráficas, que son estacionalidad aditiva o estacionalidad multiplicativa.
El modelo multiplicativo se usa cuando la magnitud del patron estacional en los datos depende de la magnitud de los datos. En otras palabras, la magnitud del patron estacional aumenta a medida que los valores de los datos se incrementan y disminuye a medida que los valores de los datos decrecen.
El modelo aditivo se usa cuando la magnitud del patron estacional en los datos no dependa de la magnitud de los datos. En otras palabras, la magnitud del patron estacional no cambia cuando la serie sube o baja.
El método de Holt-Winters es una técnica de suavizado que utiliza un conjunto de estimaciones recursivas a partir de la serie histórica. Estas estimaciones utilizan
Una constante de nivel \(\alpha\)
Una constante de tendencia \(\beta\)
Una constante estacional multiplicativa \(\gamma\)
Las estimaciones recursivas se basan en las siguientes ecuaciones:
\[\hat Y_t=\alpha(\hat Y_{t-1}-T_{t-1})+(1-\alpha)\frac{Y_t}{F_{t-s}}\ \ \ 0< \alpha <1\]
\[T_t=\beta T_{t-1}+(1-\beta)(\hat Y_{t}-\hat Y_{t-1})\ \ \ 0< \beta <1\]
\[F_t=\gamma F_{t-s}+(1-\gamma)\frac{Y_t}{\hat Y_{t}}\ \ \ 0< \gamma <1\]
donde \(s=4\) en el caso de datos trimestrales y \(s=12\) en el caso de datos mensuales.
\(\hat{Y}_t\) sería el nivel suavizado de la serie,
\(T_t\) la tendencia suavizada de la serie y
\(F_t\) el ajuste estacional suavizado de la serie.
HoltWinters(x, alpha = NULL, beta = NULL, gamma = NULL, seasonal = c(“additive”,multiplicative“), start.periods = 2, l.start = NULL, b.start = NULL, s.start = NULL, optim.start = c(alpha = 0.3, beta = 0.1, gamma = 0.1), optim.control = list())
Graficando nuevamente nuestros datos
`
- Ahora realizaremos una gráfica donde se vea la serie del modelo (linea negra) y el ajuste con la predicción(linea roja), así mismo aparecerá la descomposición de la gráfica para evaluar los datos.
## Holt-Winters exponential smoothing with trend and additive seasonal component.
##
## Call:
## HoltWinters(x = z1, seasonal = "additive")
##
## Smoothing parameters:
## alpha: 0.298296
## beta : 0
## gamma: 0.493723
##
## Coefficients:
## [,1]
## a 0.961306071
## b -0.003293998
## s1 0.609663142
## s2 0.631576834
## s3 0.240894809
## s4 0.289949188
## s5 0.084339934
## s6 -0.320581396
## s7 -0.067869299
## s8 0.008977429
## s9 -0.006904004
## s10 -0.244521044
## s11 -0.111848790
## s12 0.236754462
##
## Ljung-Box test
##
## data: Residuals from HoltWinters
## Q* = 37.508, df = 24, p-value = 0.03891
##
## Model df: 0. Total lags used: 24
- A posterori realizaremos las predicciones a 12 meses vista y las graficaremos:
## fit upr lwr
## Jan 2023 1.5676752 2.054181 1.08116953
## Feb 2023 1.5862949 2.093984 1.07860566
## Mar 2023 1.1923189 1.720343 0.66429524
## Apr 2023 1.2380793 1.785683 0.69047580
## May 2023 1.0291760 1.595683 0.46266904
## Jun 2023 0.6209607 1.205760 0.03616094
## Jul 2023 0.8703788 1.472916 0.26784137
REDES NEURONALES DE RETROALIMENTACION (nntear)
Son redes con una sola capa oculta y entradas retrasadas para pronosticar series de tiempo univariadas.
Vamos a elaborar entonces el modelo de red neuronal con nuestros datos:
## [1] "nnetar"
- Una vez hecho esto vamos a comprobar los residuos que presenta nuestro modelo.
##
## Ljung-Box test
##
## data: Residuals from NNAR(4,1,3)[12]
## Q* = 34.826, df = 24, p-value = 0.07102
##
## Model df: 0. Total lags used: 24
Una vez hecho esto realizamos la predicción a 12 meses de los datos, con una significancia del 95% de los mismos.
## Jan Feb Mar Apr May Jun Jul
## 2023 1.2289202 1.0240862 0.9220282 0.9648346 0.8947183 0.7717747 0.7616832
- Luego realizamos un gráfico de nuestro pronostico.
- Ahora vamos a ver representado el ajuste entre lo datos de la serie
y el pronóstico del modelo en la siguiente representación gráfica, para
ello utilizamos la función
fitted()que obtiene un ajuste con la data histórica.
## Warning: Removed 12 rows containing missing values (`geom_line()`).
Ahora vamos a determinar los resultados de este modelo creando un dataframe
## Jan Feb Mar Apr May Jun Jul
## 2023 1.2289202 1.0240862 0.9220282 0.9648346 0.8947183 0.7717747 0.7616832
REDES NEURONALES RECURRENTES (Modelos Elman y Jordan).
Una red neuronal recurrente no tiene una estructura de capas definida, sino que permiten conexiones arbitrarias entre las neuronas, incluso pudiendo crear ciclos, con esto se consigue crear la temporalidad, permitiendo que la red tenga memoria.
Los RNN se denominan recurrentes porque realizan la misma tarea para cada elemento de una secuencia, y la salida depende de los cálculos anteriores.
Modelo Elman.
En las redes de Elman, las entradas de estas neuronas, se toman desde las salidas de las neuronas de una de las capas ocultas, y sus salidas se conectan de nuevo en las entradas de esta misma capa, lo que proporciona una especie de memoria sobre el estado anterior de dicha capa.
Para desarrollar este modelo junto con el de Jordan, se cargan las librerías
## Warning: package 'RSNNS' was built under R version 4.3.1
Vamos pronosticar 12 meses de nuestros datos con esta red.
- En primer lugar para actuar en dicho proceso con redes neuronales tenemos que normalizar nuestros datos para que tomen valores entre 0 y 1. Para ello hemos asociado a nuestro dataset de base una variable “Z” y a partir de esta hemos realizar la normalización a través de la variable “S”.
A continuación comprobamos el numero de filas totales que contiene nuestro dataset y dividiremos los conjuntos de entrenamiento en un 75% y prueba en un 25% respectivamente.
## [1] 276
## [1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
## [19] 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
## [37] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
## [55] 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
## [73] 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
## [91] 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
## [109] 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
## [127] 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
## [145] 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
## [163] 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
## [181] 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
## [199] 198 199 200 201 202 203 204 205 206
## [1] 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225
## [20] 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244
## [39] 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263
## [58] 264 265 266 267 268 269 270 271 272 273 274 275 276
- Ahora crearemos un dataframe con \(n\) columnas, cada una de las cuales adelantara un valor de la serie en el futuro, a través de una variable tipo zoo, equivalente al periodo de retardo de la serie.
y <- as.zoo(S)
x1 <- Lag(y, k = 1)
x2 <- Lag(y, k = 2)
x3 <- Lag(y, k = 3)
x4 <- Lag(y, k = 4)
x5 <- Lag(y, k = 5)
x6 <- Lag(y, k = 6)
x7 <- Lag(y, k = 7)
x8 <- Lag(y, k = 8)
x9 <- Lag(y, k = 9)
x10 <- Lag(y, k = 10)
x11 <- Lag(y, k = 11)
x12 <- Lag(y, k = 12)
slogN <- cbind(y,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12)- A continuacion eliminaremos los valores NA producidos al desplazar la serie:
- Luego definimos los valores de entrada y salida de la red neuronal:
- Ahora crearemos la red de Elman, probando diferentes tipos de combinaciones de neuronas en las capas ocultas e iteraciones máximas, ademas del ritmo de aprendizaje aunque este último apenas lo hemos tocado, para ajustar lo mejor posible la curva de predicción a la del modelo de la serie. De esta forma hemos llegado a estos valores a la hora de crear nuestra red. Asi mismo ponemos una semilla para que el resultado sea reproducible.
set.seed(42)
fit<-elman(inputs[train],outputs[train],size=c(10,3),learnFuncParams=c(0.1),
maxit=64000)- En la gráfica siguiente vemos como evoluciona el error de la red con el numero de iteraciones para los parámetros expuestos.
Observamos que el error converge a 0 muy rapidamente.
Ahora realizamos la predicción con el resto de los términos de la serie que son los datos seleccionados para
test, pasamos pues una vez entrenada a probarla y a representarla graficamente para ver el ajuste del modelo.
y <- as.vector(outputs[-test])
plot(y,type="l")
pred <- predict(fit, inputs[-test])
lines(pred,col = "red")El ajuste que predice bastante bien con los parametros elegidos, pues la curva del modelo de la serie y la de la prediccion parecen bastante ajustadas.
Esta representacion grafica se puede utilizar para ir ajustando la prediccion y el modelo a medida que vamos probando diferentes parametros de la red de Elman, de forma que la curva del modelo y de la prediccion queden lo mas ajustados posibles.
Ahora gracias al efecto memoria vamos a adelantarle a la serie al menos en un valor con una precision muy buena. Para ello volveremos a introducir los datos de entrenamiento.
## [,1]
## mar. 2018 0.20155160
## abr. 2018 0.26878041
## may. 2018 0.24045695
## jun. 2018 0.17272875
## jul. 2018 0.18273371
## ago. 2018 0.24018662
## sept. 2018 0.26043680
## oct. 2018 0.14401960
## nov. 2018 0.06738933
## dic. 2018 -0.00350827
## ene. 2019 0.29848185
## feb. 2019 0.44689900
## mar. 2019 0.21386547
## abr. 2019 0.27052948
## may. 2019 0.24281317
## jun. 2019 0.20457482
## jul. 2019 0.22603002
## ago. 2019 0.27260423
## sept. 2019 0.18370105
## oct. 2019 0.21100679
## nov. 2019 0.11725422
## dic. 2019 0.13014795
## ene. 2020 0.27740842
## feb. 2020 0.51852149
## mar. 2020 0.30465892
## abr. 2020 0.15880583
## may. 2020 0.22456965
## jun. 2020 0.21157464
## jul. 2020 0.25139078
## ago. 2020 0.11221258
## sept. 2020 0.04543498
## oct. 2020 -0.07154493
## nov. 2020 0.01882648
## dic. 2020 0.41777167
## ene. 2021 0.25505498
## feb. 2021 0.58207905
## mar. 2021 0.48128504
## abr. 2021 0.13794538
## may. 2021 0.17353083
## jun. 2021 0.15123299
## jul. 2021 0.17263919
## ago. 2021 0.35848954
## sept. 2021 0.19154371
## oct. 2021 0.13107669
## nov. 2021 0.11026130
## dic. 2021 0.21891356
## ene. 2022 1.07840061
## feb. 2022 1.25381970
## mar. 2022 2.11794496
## abr. 2022 0.36162722
## may. 2022 0.54533941
## jun. 2022 0.25274438
## jul. 2022 0.08399927
## ago. 2022 -0.36474147
## sept. 2022 -0.36983466
## oct. 2022 -0.62704027
## nov. 2022 -0.27795017
## dic. 2022 0.86469340
- posteriori desnormalizaremos los datos:
## [,1]
## mar. 2018 0.160158291
## abr. 2018 0.340331500
## may. 2018 0.264424636
## jun. 2018 0.082913042
## jul. 2018 0.109726355
## ago. 2018 0.263700133
## sept. 2018 0.317970632
## oct. 2018 0.005972538
## nov. 2018 -0.199396591
## dic. 2018 -0.389402163
## ene. 2019 0.419931363
## feb. 2019 0.817689312
## mar. 2019 0.193159470
## abr. 2019 0.345019003
## may. 2019 0.270739295
## jun. 2019 0.168260527
## jul. 2019 0.225760459
## ago. 2019 0.350579329
## sept. 2019 0.112318823
## oct. 2019 0.185498198
## nov. 2019 -0.065758691
## dic. 2019 -0.031203497
## ene. 2020 0.363454568
## feb. 2020 1.009637587
## mar. 2020 0.436485904
## abr. 2020 0.045599630
## may. 2020 0.221846658
## jun. 2020 0.187020046
## jul. 2020 0.293727304
## ago. 2020 -0.079270276
## sept. 2020 -0.258234249
## oct. 2020 -0.571740413
## nov. 2020 -0.329545021
## dic. 2020 0.739628068
## ene. 2021 0.303547348
## feb. 2021 1.179971862
## mar. 2021 0.909843895
## abr. 2021 -0.010306371
## may. 2021 0.085062630
## jun. 2021 0.025304407
## jul. 2021 0.082673032
## ago. 2021 0.580751976
## sept. 2021 0.133337151
## oct. 2021 -0.028714461
## nov. 2021 -0.084499719
## dic. 2021 0.206688328
## ene. 2022 2.510113640
## feb. 2022 2.980236807
## mar. 2022 5.296092482
## abr. 2022 0.589160953
## may. 2022 1.081509607
## jun. 2022 0.297354929
## jul. 2022 -0.154881960
## ago. 2022 -1.357507151
## sept. 2022 -1.371156893
## oct. 2022 -2.060467916
## nov. 2022 -1.124906449
## dic. 2022 1.937378321
- Ahora veamos la representación de los valores predecidos para el siguiente periodo.
x <- 1:(tamano_total+7)
y <- c(as.vector(Z),mod5)
plot(x[1:tamano_total], y[1:tamano_total],col = "blue", type="l")
lines( x[(tamano_total):length(x)-1], y[(tamano_total):length(x)-1], col="red")## [1] 334
- Aquí vemos la gráfica con los valores predecidos con la linea roja.
-Los valores que adelantamos en el tiempo corresponden a
mod5, de los cuales adelantaremos 12 meses a futuro para
nuestro estudio.
Modelo Jordan
En las redes Jordan, la diferencia esta en que la entrada de las neuronas de la capa de contexto se toma desde la salida de la red.
Realizamos las mismas operaciones que con la red Elman, sustituyendo el modelo, obtenemos el resultado para la red Jordan.
set.seed(42)
fit <-jordan(inputs[train],outputs[train],size=6,learnFuncParams=c(0.1),
maxit=78000)
plotIterativeError(fit, main = "Iterative Error for 6 Neuron")y <- as.vector(outputs[-test])
plot(y,type="l")
pred <- predict(fit, inputs[-test])
lines(pred,col = "red")## [,1]
## mar. 2018 0.48357859
## abr. 2018 0.24947453
## may. 2018 0.55703292
## jun. 2018 0.25775671
## jul. 2018 0.00837783
## ago. 2018 0.09540738
## sept. 2018 0.13791284
## oct. 2018 0.25336896
## nov. 2018 0.05883493
## dic. 2018 0.41206063
## ene. 2019 0.52424850
## feb. 2019 0.68606238
## mar. 2019 0.36462283
## abr. 2019 0.41907611
## may. 2019 0.44248008
## jun. 2019 0.16078036
## jul. 2019 0.17737687
## ago. 2019 0.21479967
## sept. 2019 -0.03033898
## oct. 2019 0.22085982
## nov. 2019 0.14870862
## dic. 2019 0.17645341
## ene. 2020 0.40888244
## feb. 2020 0.49826169
## mar. 2020 0.68229746
## abr. 2020 0.50538452
## may. 2020 0.15317360
## jun. 2020 -0.28370893
## jul. 2020 0.06456965
## ago. 2020 0.17615103
## sept. 2020 0.26256442
## oct. 2020 0.49260808
## nov. 2020 0.26564058
## dic. 2020 0.11493226
## ene. 2021 0.52815823
## feb. 2021 0.59548492
## mar. 2021 0.40788957
## abr. 2021 0.28765729
## may. 2021 0.68348369
## jun. 2021 0.27659814
## jul. 2021 -0.12996523
## ago. 2021 0.55520636
## sept. 2021 0.99480776
## oct. 2021 -0.07525219
## nov. 2021 0.15117932
## dic. 2021 0.32759483
## ene. 2022 0.65105343
## feb. 2022 3.52926952
## mar. 2022 0.97831776
## abr. 2022 1.71909875
## may. 2022 0.84692796
## jun. 2022 0.18835384
## jul. 2022 -0.15431418
## ago. 2022 0.36182769
## sept. 2022 0.33009765
## oct. 2022 0.25402933
## nov. 2022 0.17107907
## dic. 2022 0.89698096
x <- 1:(tamano_total+7)
y <- c(as.vector(Z),mod6)
plot(x[1:tamano_total], y[1:tamano_total],col = "blue", type="l")
lines( x[(tamano_total):length(x)], y[(tamano_total):length(x)], col="red")La anterior grafica con los valores predecidos con la linea roja.
Los valores que adelantamos en el tiempo corresponden a mod6, de los cuales adelantaremos 7 meses a futuro para nuestro estudio
Estimación del error Comparativo de los modelos con los valores actuales observados.
data=IPC[277:283,4]
data_real <- ts(data, start = c(2023,1), end=c(2023,7), frequency = 12)
data_real## Jan Feb Mar Apr May Jun Jul
## 2023 1.78 1.66 1.05 0.78 0.43 0.30 0.50
Ahora haremos la comparacion de nuestros modelos con la data_real(valor de test en RMSE).
- ETS:
## Warning: package 'MLmetrics' was built under R version 4.3.1
##
## Attaching package: 'MLmetrics'
## The following object is masked from 'package:base':
##
## Recall
## Warning: package 'Metrics' was built under R version 4.3.1
##
## Attaching package: 'Metrics'
## The following object is masked from 'package:forecast':
##
## accuracy
## [1] 0.4494131
## [1] 0.7840755
## [1] 2.216997
## Jan Feb Mar Apr May Jun Jul
## 2023 1.5230061 1.7329328 1.4307746 1.2841427 1.0992502 0.9140417 0.8440168
- HOLT-WINTERS:
## fit upr lwr
## Jan 2023 1.5676752 2.054181 1.08116953
## Feb 2023 1.5862949 2.093984 1.07860566
## Mar 2023 1.1923189 1.720343 0.66429524
## Apr 2023 1.2380793 1.785683 0.69047580
## May 2023 1.0291760 1.595683 0.46266904
## Jun 2023 0.6209607 1.205760 0.03616094
## Jul 2023 0.8703788 1.472916 0.26784137
## Jan Feb Mar Apr May Jun Jul
## 2023 1.5676752 1.5862949 1.1923189 1.2380793 1.0291760 0.6209607 0.8703788
## [1] 0.3545246
## [1] 0.5843666
## [1] 1.408379
NNTEAR:
## Jan Feb Mar Apr May Jun Jul
## 2023 1.2289202 1.0240862 0.9220282 0.9648346 0.8947183 0.7717747 0.7616832
## Jan Feb Mar Apr May Jun Jul
## 2023 1.2289202 1.0240862 0.9220282 0.9648346 0.8947183 0.7717747 0.7616832
## [1] 0.4252106
## [1] 0.60403
## [1] 4.182965
## [,1]
## mar. 2018 0.160158291
## abr. 2018 0.340331500
## may. 2018 0.264424636
## jun. 2018 0.082913042
## jul. 2018 0.109726355
## ago. 2018 0.263700133
## sept. 2018 0.317970632
## oct. 2018 0.005972538
## nov. 2018 -0.199396591
## dic. 2018 -0.389402163
## ene. 2019 0.419931363
## feb. 2019 0.817689312
## mar. 2019 0.193159470
## abr. 2019 0.345019003
## may. 2019 0.270739295
## jun. 2019 0.168260527
## jul. 2019 0.225760459
## ago. 2019 0.350579329
## sept. 2019 0.112318823
## oct. 2019 0.185498198
## nov. 2019 -0.065758691
## dic. 2019 -0.031203497
## ene. 2020 0.363454568
## feb. 2020 1.009637587
## mar. 2020 0.436485904
## abr. 2020 0.045599630
## may. 2020 0.221846658
## jun. 2020 0.187020046
## jul. 2020 0.293727304
## ago. 2020 -0.079270276
## sept. 2020 -0.258234249
## oct. 2020 -0.571740413
## nov. 2020 -0.329545021
## dic. 2020 0.739628068
## ene. 2021 0.303547348
## feb. 2021 1.179971862
## mar. 2021 0.909843895
## abr. 2021 -0.010306371
## may. 2021 0.085062630
## jun. 2021 0.025304407
## jul. 2021 0.082673032
## ago. 2021 0.580751976
## sept. 2021 0.133337151
## oct. 2021 -0.028714461
## nov. 2021 -0.084499719
## dic. 2021 0.206688328
## ene. 2022 2.510113640
## feb. 2022 2.980236807
## mar. 2022 5.296092482
## abr. 2022 0.589160953
## may. 2022 1.081509607
## jun. 2022 0.297354929
## jul. 2022 -0.154881960
## ago. 2022 -1.357507151
## sept. 2022 -1.371156893
## oct. 2022 -2.060467916
## nov. 2022 -1.124906449
## dic. 2022 1.937378321
ELMAN
## [1] 0.707297
## [1] 0.635221
## [1] 2.004772
- JORDAN(RNN):
## [1] 0.6121775
## [1] 0.6044154
## [1] 1.574264
## Warning: package 'xgboost' was built under R version 4.3.1
##
## Attaching package: 'xgboost'
## The following object is masked from 'package:dplyr':
##
## slice
## Warning: package 'tidymodels' was built under R version 4.3.1
## ── Attaching packages ────────────────────────────────────── tidymodels 1.1.0 ──
## ✔ broom 1.0.4 ✔ rsample 1.1.1
## ✔ dials 1.2.0 ✔ tune 1.1.1
## ✔ infer 1.0.4 ✔ workflows 1.1.3
## ✔ modeldata 1.1.0 ✔ workflowsets 1.0.1
## ✔ parsnip 1.1.0 ✔ yardstick 1.2.0
## ✔ recipes 1.0.6
## Warning: package 'dials' was built under R version 4.3.1
## Warning: package 'infer' was built under R version 4.3.1
## Warning: package 'parsnip' was built under R version 4.3.1
## Warning: package 'recipes' was built under R version 4.3.1
## Warning: package 'rsample' was built under R version 4.3.1
## Warning: package 'tune' was built under R version 4.3.1
## Warning: package 'workflows' was built under R version 4.3.1
## Warning: package 'workflowsets' was built under R version 4.3.1
## Warning: package 'yardstick' was built under R version 4.3.1
## ── Conflicts ───────────────────────────────────────── tidymodels_conflicts() ──
## ✖ yardstick::accuracy() masks Metrics::accuracy(), forecast::accuracy()
## ✖ scales::discard() masks purrr::discard()
## ✖ dplyr::filter() masks stats::filter()
## ✖ xts::first() masks dplyr::first()
## ✖ recipes::fixed() masks stringr::fixed()
## ✖ dplyr::lag() masks stats::lag()
## ✖ xts::last() masks dplyr::last()
## ✖ yardstick::mae() masks Metrics::mae()
## ✖ yardstick::mape() masks Metrics::mape()
## ✖ yardstick::mase() masks Metrics::mase()
## ✖ parsnip::mlp() masks RSNNS::mlp()
## ✖ dials::momentum() masks TTR::momentum()
## ✖ rsample::populate() masks Rcpp::populate()
## ✖ yardstick::precision() masks Metrics::precision()
## ✖ yardstick::recall() masks Metrics::recall()
## ✖ dplyr::recode() masks car::recode()
## ✖ yardstick::rmse() masks Metrics::rmse()
## ✖ xgboost::slice() masks dplyr::slice()
## ✖ yardstick::smape() masks Metrics::smape()
## ✖ purrr::some() masks car::some()
## ✖ yardstick::spec() masks readr::spec()
## ✖ recipes::step() masks stats::step()
## • Learn how to get started at https://www.tidymodels.org/start/
## Warning: package 'modeltime' was built under R version 4.3.1
##
## Attaching package: 'modeltime'
## The following object is masked from 'package:TTR':
##
## growth
## Warning: package 'timetk' was built under R version 4.3.1
- Dividir los datos en conjuntos de entrenamiento y prueba.
## Año(aaaa)-Mes(mm) Índice Inflación anual % Inflación mensual %
## 1 200001 40.30 8.25 1.29
## 2 200002 41.23 8.89 2.30
## 3 200003 41.93 9.73 1.71
## 4 200004 42.35 9.96 1.00
## 5 200005 42.57 10.00 0.52
## 6 200006 42.56 9.68 -0.02
## 7 200007 42.55 9.29 -0.04
## 8 200008 42.68 9.10 0.32
## 9 200009 42.86 9.20 0.43
## 10 200010 42.93 8.99 0.15
## 11 200011 43.07 8.82 0.33
## 12 200012 43.27 8.75 0.46
## 13 200101 43.72 8.49 1.05
## 14 200102 44.55 8.06 1.89
## 15 200103 45.21 7.81 1.48
## 16 200104 45.73 7.98 1.15
## 17 200105 45.92 7.87 0.42
## 18 200106 45.94 7.93 0.04
## 19 200107 45.99 8.09 0.11
## 20 200108 46.11 8.03 0.26
## 21 200109 46.28 7.97 0.37
## 22 200110 46.37 8.01 0.19
## 23 200111 46.42 7.78 0.12
## 24 200112 46.58 7.65 0.34
## 25 200201 46.95 7.37 0.80
## 26 200202 47.54 6.70 1.26
## 27 200203 47.87 5.89 0.71
## 28 200204 48.31 5.65 0.92
## 29 200205 48.60 5.84 0.60
## 30 200206 48.81 6.25 0.43
## 31 200207 48.82 6.16 0.02
## 32 200208 48.87 5.98 0.09
## 33 200209 49.04 5.97 0.36
## 34 200210 49.32 6.37 0.56
## 35 200211 49.70 7.07 0.78
## 36 200212 49.83 6.99 0.27
## 37 200301 50.42 7.39 1.17
## 38 200302 50.98 7.24 1.11
## 39 200303 51.51 7.60 1.05
## 40 200304 52.10 7.85 1.15
## 41 200305 52.36 7.73 0.49
## 42 200306 52.33 7.21 -0.05
## 43 200307 52.26 7.04 -0.14
## 44 200308 52.42 7.26 0.31
## 45 200309 52.53 7.11 0.22
## 46 200310 52.56 6.58 0.06
## 47 200311 52.75 6.13 0.35
## 48 200312 53.07 6.49 0.61
## 49 200401 53.54 6.19 0.89
## 50 200402 54.18 6.28 1.20
## 51 200403 54.71 6.21 0.98
## 52 200404 54.96 5.49 0.46
## 53 200405 55.17 5.37 0.38
## 54 200406 55.51 6.07 0.60
## 55 200407 55.49 6.19 -0.03
## 56 200408 55.51 5.89 0.03
## 57 200409 55.67 5.97 0.30
## 58 200410 55.66 5.90 -0.01
## 59 200411 55.82 5.82 0.28
## 60 200412 55.99 5.50 0.30
## 61 200501 56.45 5.43 0.82
## 62 200502 57.02 5.25 1.02
## 63 200503 57.46 5.03 0.77
## 64 200504 57.72 5.01 0.44
## 65 200505 57.95 5.04 0.41
## 66 200506 58.18 4.83 0.40
## 67 200507 58.21 4.91 0.05
## 68 200508 58.21 4.88 0.00
## 69 200509 58.46 5.02 0.43
## 70 200510 58.60 5.27 0.23
## 71 200511 58.66 5.10 0.11
## 72 200512 58.70 4.85 0.07
## 73 200601 59.02 4.56 0.54
## 74 200602 59.41 4.19 0.66
## 75 200603 59.83 4.11 0.70
## 76 200604 60.09 4.12 0.45
## 77 200605 60.29 4.04 0.33
## 78 200606 60.48 3.94 0.30
## 79 200607 60.73 4.32 0.41
## 80 200608 60.96 4.72 0.39
## 81 200609 61.14 4.58 0.29
## 82 200610 61.05 4.19 -0.14
## 83 200611 61.19 4.31 0.24
## 84 200612 61.33 4.48 0.23
## 85 200701 61.80 4.71 0.77
## 86 200702 62.53 5.25 1.17
## 87 200703 63.29 5.78 1.21
## 88 200704 63.85 6.26 0.90
## 89 200705 64.05 6.23 0.30
## 90 200706 64.12 6.03 0.12
## 91 200707 64.23 5.77 0.17
## 92 200708 64.14 5.22 -0.13
## 93 200709 64.20 5.01 0.08
## 94 200710 64.20 5.16 0.01
## 95 200711 64.51 5.41 0.47
## 96 200712 64.82 5.69 0.49
## 97 200801 65.51 6.00 1.06
## 98 200802 66.50 6.35 1.51
## 99 200803 67.04 5.93 0.81
## 100 200804 67.51 5.73 0.71
## 101 200805 68.14 6.39 0.93
## 102 200806 68.73 7.18 0.86
## 103 200807 69.06 7.52 0.48
## 104 200808 69.19 7.87 0.19
## 105 200809 69.06 7.57 -0.19
## 106 200810 69.30 7.94 0.35
## 107 200811 69.49 7.73 0.28
## 108 200812 69.80 7.67 0.44
## 109 200901 70.21 7.18 0.59
## 110 200902 70.80 6.47 0.84
## 111 200903 71.15 6.14 0.50
## 112 200904 71.38 5.73 0.32
## 113 200905 71.39 4.77 0.01
## 114 200906 71.35 3.81 -0.06
## 115 200907 71.32 3.28 -0.04
## 116 200908 71.35 3.13 0.04
## 117 200909 71.28 3.21 -0.11
## 118 200910 71.19 2.72 -0.13
## 119 200911 71.14 2.37 -0.07
## 120 200912 71.20 2.00 0.08
## 121 201001 71.69 2.10 0.69
## 122 201002 72.28 2.09 0.83
## 123 201003 72.46 1.84 0.25
## 124 201004 72.79 1.98 0.46
## 125 201005 72.87 2.07 0.10
## 126 201006 72.95 2.25 0.11
## 127 201007 72.92 2.24 -0.04
## 128 201008 73.00 2.31 0.11
## 129 201009 72.90 2.28 -0.14
## 130 201010 72.84 2.33 -0.09
## 131 201011 72.98 2.59 0.19
## 132 201012 73.45 3.17 0.65
## 133 201101 74.12 3.40 0.91
## 134 201102 74.57 3.17 0.60
## 135 201103 74.77 3.19 0.27
## 136 201104 74.86 2.84 0.12
## 137 201105 75.07 3.02 0.28
## 138 201106 75.31 3.23 0.32
## 139 201107 75.42 3.42 0.14
## 140 201108 75.39 3.27 -0.03
## 141 201109 75.62 3.73 0.31
## 142 201110 75.77 4.02 0.19
## 143 201111 75.87 3.96 0.14
## 144 201112 76.19 3.73 0.42
## 145 201201 76.75 3.54 0.73
## 146 201202 77.22 3.55 0.61
## 147 201203 77.31 3.40 0.12
## 148 201204 77.42 3.43 0.14
## 149 201205 77.66 3.44 0.30
## 150 201206 77.72 3.20 0.08
## 151 201207 77.70 3.03 -0.02
## 152 201208 77.73 3.11 0.04
## 153 201209 77.96 3.08 0.29
## 154 201210 78.08 3.06 0.16
## 155 201211 77.98 2.77 -0.14
## 156 201212 78.05 2.44 0.09
## 157 201301 78.28 2.00 0.30
## 158 201302 78.63 1.83 0.44
## 159 201303 78.79 1.91 0.21
## 160 201304 78.99 2.02 0.25
## 161 201305 79.21 2.00 0.28
## 162 201306 79.39 2.16 0.23
## 163 201307 79.43 2.22 0.04
## 164 201308 79.50 2.27 0.08
## 165 201309 79.73 2.27 0.29
## 166 201310 79.52 1.84 -0.26
## 167 201311 79.35 1.76 -0.22
## 168 201312 79.56 1.94 0.26
## 169 201401 79.95 2.13 0.49
## 170 201402 80.45 2.32 0.63
## 171 201403 80.77 2.51 0.39
## 172 201404 81.14 2.72 0.46
## 173 201405 81.53 2.93 0.48
## 174 201406 81.61 2.79 0.09
## 175 201407 81.73 2.89 0.15
## 176 201408 81.90 3.02 0.20
## 177 201409 82.01 2.86 0.14
## 178 201410 82.14 3.29 0.16
## 179 201411 82.25 3.65 0.13
## 180 201412 82.47 3.66 0.27
## 181 201501 83.00 3.82 0.64
## 182 201502 83.96 4.36 1.15
## 183 201503 84.45 4.56 0.59
## 184 201504 84.90 4.64 0.54
## 185 201505 85.12 4.41 0.26
## 186 201506 85.21 4.42 0.10
## 187 201507 85.37 4.46 0.19
## 188 201508 85.78 4.74 0.48
## 189 201509 86.39 5.35 0.72
## 190 201510 86.98 5.89 0.68
## 191 201511 87.51 6.39 0.60
## 192 201512 88.05 6.77 0.62
## 193 201601 89.19 7.45 1.29
## 194 201602 90.33 7.59 1.28
## 195 201603 91.18 7.98 0.94
## 196 201604 91.63 7.93 0.50
## 197 201605 92.10 8.20 0.51
## 198 201606 92.54 8.60 0.48
## 199 201607 93.02 8.97 0.52
## 200 201608 92.73 8.10 -0.32
## 201 201609 92.68 7.27 -0.05
## 202 201610 92.62 6.48 -0.06
## 203 201611 92.73 5.96 0.11
## 204 201612 93.11 5.75 0.42
## 205 201701 94.07 5.47 1.02
## 206 201702 95.01 5.18 1.01
## 207 201703 95.46 4.69 0.47
## 208 201704 95.91 4.66 0.47
## 209 201705 96.12 4.37 0.23
## 210 201706 96.23 3.99 0.11
## 211 201707 96.18 3.40 -0.05
## 212 201708 96.32 3.87 0.14
## 213 201709 96.36 3.97 0.04
## 214 201710 96.37 4.05 0.02
## 215 201711 96.55 4.12 0.18
## 216 201712 96.92 4.09 0.38
## 217 201801 97.53 3.68 0.63
## 218 201802 98.22 3.37 0.71
## 219 201803 98.45 3.14 0.24
## 220 201804 98.91 3.13 0.46
## 221 201805 99.16 3.16 0.25
## 222 201806 99.31 3.20 0.15
## 223 201807 99.18 3.12 -0.13
## 224 201808 99.30 3.10 0.12
## 225 201809 99.47 3.23 0.16
## 226 201810 99.59 3.33 0.12
## 227 201811 99.70 3.27 0.12
## 228 201812 100.00 3.18 0.30
## 229 201901 100.60 3.15 0.60
## 230 201902 101.18 3.01 0.57
## 231 201903 101.62 3.21 0.43
## 232 201904 102.12 3.25 0.50
## 233 201905 102.44 3.31 0.31
## 234 201906 102.71 3.43 0.27
## 235 201907 102.94 3.79 0.22
## 236 201908 103.03 3.75 0.09
## 237 201909 103.26 3.82 0.23
## 238 201910 103.43 3.86 0.16
## 239 201911 103.54 3.84 0.10
## 240 201912 103.80 3.80 0.26
## 241 202001 104.24 3.62 0.42
## 242 202002 104.94 3.72 0.67
## 243 202003 105.53 3.86 0.57
## 244 202004 105.70 3.51 0.16
## 245 202005 105.36 2.85 -0.32
## 246 202006 104.97 2.19 -0.38
## 247 202007 104.97 1.97 0.00
## 248 202008 104.96 1.88 -0.01
## 249 202009 105.29 1.97 0.32
## 250 202010 105.23 1.75 -0.06
## 251 202011 105.08 1.49 -0.15
## 252 202012 105.48 1.61 0.38
## 253 202101 105.91 1.60 0.41
## 254 202102 106.58 1.56 0.64
## 255 202103 107.12 1.51 0.51
## 256 202104 107.76 1.95 0.59
## 257 202105 108.84 3.30 1.00
## 258 202106 108.78 3.63 -0.05
## 259 202107 109.14 3.97 0.32
## 260 202108 109.62 4.44 0.45
## 261 202109 110.04 4.51 0.38
## 262 202110 110.06 4.58 0.01
## 263 202111 110.60 5.26 0.50
## 264 202112 111.41 5.62 0.73
## 265 202201 113.26 6.94 1.67
## 266 202202 115.11 8.01 1.63
## 267 202203 116.26 8.53 1.00
## 268 202204 117.71 9.23 1.25
## 269 202205 118.70 9.07 0.84
## 270 202206 119.31 9.67 0.51
## 271 202207 120.27 10.21 0.81
## 272 202208 121.50 10.84 1.02
## 273 202209 122.63 11.44 0.93
## 274 202210 123.51 12.22 0.72
## 275 202211 124.46 12.53 0.77
## 276 202212 126.03 13.12 1.26
## 277 202301 128.27 13.25 1.78
## 278 202302 130.40 13.28 1.66
## 279 202303 131.77 13.34 1.05
## 280 202304 132.80 12.82 0.78
## 281 202305 133.38 12.36 0.43
## 282 202306 133.78 12.13 0.30
## 283 202307 134.45 11.78 0.50
## Inflación año corrido % Fecha
## 1 1.29 2000-01-01
## 2 3.62 2000-02-01
## 3 5.39 2000-03-01
## 4 6.44 2000-04-01
## 5 7.00 2000-05-01
## 6 6.98 2000-06-01
## 7 6.94 2000-07-01
## 8 7.27 2000-08-01
## 9 7.73 2000-09-01
## 10 7.90 2000-10-01
## 11 8.25 2000-11-01
## 12 8.75 2000-12-01
## 13 1.05 2001-01-01
## 14 2.96 2001-02-01
## 15 4.49 2001-03-01
## 16 5.69 2001-04-01
## 17 6.13 2001-05-01
## 18 6.17 2001-06-01
## 19 6.29 2001-07-01
## 20 6.57 2001-08-01
## 21 6.96 2001-09-01
## 22 7.16 2001-10-01
## 23 7.28 2001-11-01
## 24 7.65 2001-12-01
## 25 0.80 2002-01-01
## 26 2.06 2002-02-01
## 27 2.79 2002-03-01
## 28 3.73 2002-04-01
## 29 4.35 2002-05-01
## 30 4.79 2002-06-01
## 31 4.82 2002-07-01
## 32 4.92 2002-08-01
## 33 5.30 2002-09-01
## 34 5.88 2002-10-01
## 35 6.71 2002-11-01
## 36 6.99 2002-12-01
## 37 1.17 2003-01-01
## 38 2.30 2003-02-01
## 39 3.37 2003-03-01
## 40 4.56 2003-04-01
## 41 5.07 2003-05-01
## 42 5.01 2003-06-01
## 43 4.86 2003-07-01
## 44 5.18 2003-08-01
## 45 5.42 2003-09-01
## 46 5.48 2003-10-01
## 47 5.85 2003-11-01
## 48 6.49 2003-12-01
## 49 0.89 2004-01-01
## 50 2.10 2004-02-01
## 51 3.10 2004-03-01
## 52 3.57 2004-04-01
## 53 3.97 2004-05-01
## 54 4.59 2004-06-01
## 55 4.56 2004-07-01
## 56 4.59 2004-08-01
## 57 4.90 2004-09-01
## 58 4.89 2004-10-01
## 59 5.18 2004-11-01
## 60 5.50 2004-12-01
## 61 0.82 2005-01-01
## 62 1.85 2005-02-01
## 63 2.64 2005-03-01
## 64 3.09 2005-04-01
## 65 3.51 2005-05-01
## 66 3.93 2005-06-01
## 67 3.98 2005-07-01
## 68 3.98 2005-08-01
## 69 4.42 2005-09-01
## 70 4.66 2005-10-01
## 71 4.78 2005-11-01
## 72 4.85 2005-12-01
## 73 0.54 2006-01-01
## 74 1.20 2006-02-01
## 75 1.91 2006-03-01
## 76 2.37 2006-04-01
## 77 2.71 2006-05-01
## 78 3.02 2006-06-01
## 79 3.44 2006-07-01
## 80 3.85 2006-08-01
## 81 4.15 2006-09-01
## 82 4.00 2006-10-01
## 83 4.24 2006-11-01
## 84 4.48 2006-12-01
## 85 0.77 2007-01-01
## 86 1.95 2007-02-01
## 87 3.18 2007-03-01
## 88 4.11 2007-04-01
## 89 4.42 2007-05-01
## 90 4.55 2007-06-01
## 91 4.72 2007-07-01
## 92 4.58 2007-08-01
## 93 4.67 2007-09-01
## 94 4.68 2007-10-01
## 95 5.17 2007-11-01
## 96 5.69 2007-12-01
## 97 1.06 2008-01-01
## 98 2.58 2008-02-01
## 99 3.41 2008-03-01
## 100 4.15 2008-04-01
## 101 5.12 2008-05-01
## 102 6.02 2008-06-01
## 103 6.53 2008-07-01
## 104 6.74 2008-08-01
## 105 6.53 2008-09-01
## 106 6.90 2008-10-01
## 107 7.20 2008-11-01
## 108 7.67 2008-12-01
## 109 0.59 2009-01-01
## 110 1.43 2009-02-01
## 111 1.94 2009-03-01
## 112 2.26 2009-04-01
## 113 2.28 2009-05-01
## 114 2.22 2009-06-01
## 115 2.18 2009-07-01
## 116 2.23 2009-08-01
## 117 2.12 2009-09-01
## 118 1.98 2009-10-01
## 119 1.92 2009-11-01
## 120 2.00 2009-12-01
## 121 0.69 2010-01-01
## 122 1.52 2010-02-01
## 123 1.78 2010-03-01
## 124 2.24 2010-04-01
## 125 2.35 2010-05-01
## 126 2.47 2010-06-01
## 127 2.42 2010-07-01
## 128 2.54 2010-08-01
## 129 2.40 2010-09-01
## 130 2.31 2010-10-01
## 131 2.51 2010-11-01
## 132 3.17 2010-12-01
## 133 0.91 2011-01-01
## 134 1.52 2011-02-01
## 135 1.79 2011-03-01
## 136 1.91 2011-04-01
## 137 2.20 2011-05-01
## 138 2.53 2011-06-01
## 139 2.67 2011-07-01
## 140 2.64 2011-08-01
## 141 2.95 2011-09-01
## 142 3.15 2011-10-01
## 143 3.29 2011-11-01
## 144 3.73 2011-12-01
## 145 0.73 2012-01-01
## 146 1.35 2012-02-01
## 147 1.47 2012-03-01
## 148 1.62 2012-04-01
## 149 1.92 2012-05-01
## 150 2.01 2012-06-01
## 151 1.98 2012-07-01
## 152 2.03 2012-08-01
## 153 2.32 2012-09-01
## 154 2.48 2012-10-01
## 155 2.34 2012-11-01
## 156 2.44 2012-12-01
## 157 0.30 2013-01-01
## 158 0.74 2013-02-01
## 159 0.95 2013-03-01
## 160 1.21 2013-04-01
## 161 1.49 2013-05-01
## 162 1.73 2013-06-01
## 163 1.77 2013-07-01
## 164 1.86 2013-08-01
## 165 2.16 2013-09-01
## 166 1.89 2013-10-01
## 167 1.67 2013-11-01
## 168 1.94 2013-12-01
## 169 0.49 2014-01-01
## 170 1.12 2014-02-01
## 171 1.52 2014-03-01
## 172 1.98 2014-04-01
## 173 2.48 2014-05-01
## 174 2.57 2014-06-01
## 175 2.73 2014-07-01
## 176 2.94 2014-08-01
## 177 3.08 2014-09-01
## 178 3.25 2014-10-01
## 179 3.38 2014-11-01
## 180 3.66 2014-12-01
## 181 0.64 2015-01-01
## 182 1.80 2015-02-01
## 183 2.40 2015-03-01
## 184 2.95 2015-04-01
## 185 3.22 2015-05-01
## 186 3.33 2015-06-01
## 187 3.52 2015-07-01
## 188 4.02 2015-08-01
## 189 4.76 2015-09-01
## 190 5.47 2015-10-01
## 191 6.11 2015-11-01
## 192 6.77 2015-12-01
## 193 1.29 2016-01-01
## 194 2.59 2016-02-01
## 195 3.55 2016-03-01
## 196 4.07 2016-04-01
## 197 4.60 2016-05-01
## 198 5.10 2016-06-01
## 199 5.65 2016-07-01
## 200 5.31 2016-08-01
## 201 5.25 2016-09-01
## 202 5.19 2016-10-01
## 203 5.31 2016-11-01
## 204 5.75 2016-12-01
## 205 1.02 2017-01-01
## 206 2.04 2017-02-01
## 207 2.52 2017-03-01
## 208 3.00 2017-04-01
## 209 3.23 2017-05-01
## 210 3.35 2017-06-01
## 211 3.30 2017-07-01
## 212 3.44 2017-08-01
## 213 3.49 2017-09-01
## 214 3.50 2017-10-01
## 215 3.69 2017-11-01
## 216 4.09 2017-12-01
## 217 0.63 2018-01-01
## 218 1.34 2018-02-01
## 219 1.58 2018-03-01
## 220 2.05 2018-04-01
## 221 2.31 2018-05-01
## 222 2.47 2018-06-01
## 223 2.34 2018-07-01
## 224 2.46 2018-08-01
## 225 2.63 2018-09-01
## 226 2.75 2018-10-01
## 227 2.87 2018-11-01
## 228 3.18 2018-12-01
## 229 0.60 2019-01-01
## 230 1.18 2019-02-01
## 231 1.62 2019-03-01
## 232 2.12 2019-04-01
## 233 2.44 2019-05-01
## 234 2.71 2019-06-01
## 235 2.94 2019-07-01
## 236 3.03 2019-08-01
## 237 3.26 2019-09-01
## 238 3.43 2019-10-01
## 239 3.54 2019-11-01
## 240 3.80 2019-12-01
## 241 0.42 2020-01-01
## 242 1.09 2020-02-01
## 243 1.67 2020-03-01
## 244 1.83 2020-04-01
## 245 1.50 2020-05-01
## 246 1.12 2020-06-01
## 247 1.12 2020-07-01
## 248 1.12 2020-08-01
## 249 1.44 2020-09-01
## 250 1.38 2020-10-01
## 251 1.23 2020-11-01
## 252 1.61 2020-12-01
## 253 0.41 2021-01-01
## 254 1.05 2021-02-01
## 255 1.56 2021-03-01
## 256 2.16 2021-04-01
## 257 3.18 2021-05-01
## 258 3.13 2021-06-01
## 259 3.47 2021-07-01
## 260 3.93 2021-08-01
## 261 4.33 2021-09-01
## 262 4.34 2021-10-01
## 263 4.86 2021-11-01
## 264 5.62 2021-12-01
## 265 1.67 2022-01-01
## 266 3.33 2022-02-01
## 267 4.36 2022-03-01
## 268 5.66 2022-04-01
## 269 6.55 2022-05-01
## 270 7.09 2022-06-01
## 271 7.96 2022-07-01
## 272 9.06 2022-08-01
## 273 10.08 2022-09-01
## 274 10.86 2022-10-01
## 275 11.72 2022-11-01
## 276 13.12 2022-12-01
## 277 1.78 2023-01-01
## 278 3.47 2023-02-01
## 279 4.56 2023-03-01
## 280 5.38 2023-04-01
## 281 5.83 2023-05-01
## 282 6.15 2023-06-01
## 283 6.68 2023-07-01
Dividir los datos en conjuntos de entrenamiento y prueba usando
initial_time_split()
## <Training/Testing/Total>
## <254/29/283>
- crear y ajustar varios modelos
Podemos crear fácilmente varios modelos de pronóstico combinando modeltimey parsnip
- ARIMA
- Suavizado exponencial
- Regresión lineal
- MARS (Splines de regresión adaptativa multivariada)
Modelo 1: Auto ARIMA (Tiempo de modelo) Primero, creamos un modelo ARIMA univariado básico usando “Auto Arima” usandoarima_reg()
model_fit_arima_no_boost <- arima_reg() %>%
set_engine(engine = "auto_arima") %>%
fit(valor ~ Fecha, data = training(splits))## frequency = 12 observations per 1 year
- Modelo 2: Auto ARIMA potenciado (Modeltime) A
continuación, creamos un ARIMA mejorado usando
arima_boost(). Boosting utiliza XGBoost para modelar los errores de ARIMA.
Tenga en cuenta que la fórmula del modelo contiene una característica de fecha y derivados de fecha - ARIMA usa la fecha - XGBoost usa los derivados de fecha como regresores
model_fit_arima_boosted <- arima_boost(
min_n = 2,
learn_rate = 0.015
) %>%
set_engine(engine = "auto_arima_xgboost") %>%
fit(valor ~ Fecha + as.numeric(Fecha) + factor(month(Fecha, label = TRUE), ordered = F),
data = training(splits))## frequency = 12 observations per 1 year
- Modelo 3: Suavizado exponencial (tiempo modelo) A continuación, cree un modelo de temporada de tendencias de errores (ETS) utilizando un modelo de espacio de estados de suavizado exponencial. Esto se logra con exp_smoothing().
model_fit_ets <- exp_smoothing() %>%
set_engine(engine = "ets") %>%
fit(valor ~ Fecha, data = training(splits))## frequency = 12 observations per 1 year
- Modelo 4: ProPhet (Modeltime) Crearemos un modelo prophet usando
prophet_reg().
model_fit_prophet <- prophet_reg() %>%
set_engine(engine = "prophet") %>%
fit(valor ~ Fecha, data = training(splits))## Disabling weekly seasonality. Run prophet with weekly.seasonality=TRUE to override this.
## Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.
- Paso 3: agregue modelos ajustados a una tabla de modelos.
El siguiente paso es agregar cada uno de los modelos a una tabla Modeltime usando modeltime_table(). Este paso realiza algunas comprobaciones básicas para garantizar que cada uno de los modelos esté ajustado y que se organice en una estructura escalable llamada “Tabla de tiempos del modelo” que se utiliza como parte de nuestro flujo de trabajo de pronóstico.
Disponemos de 4 modelos para añadir. Un par de notas antes de continuar:
Tenga en cuenta que algunos de los modelos tienen parámetros ajustables .
Se espera que el ajuste y la selección de parámetros se realicen antes de incorporarlos a una tabla de tiempo modelo. Si intenta agregar un modelo no adaptado, se modeltime_table()quejará (arrojará un error informativo) diciendo que necesita fit()el modelo.
models_tbl <- modeltime_table(
model_fit_arima_no_boost,
model_fit_arima_boosted,
model_fit_ets,
model_fit_prophet
)## # Modeltime Table
## # A tibble: 4 × 3
## .model_id .model .model_desc
## <int> <list> <chr>
## 1 1 <fit[+]> ARIMA(2,0,1)(1,1,1)[12] WITH DRIFT
## 2 2 <fit[+]> ARIMA(1,0,0)(0,1,2)[12] WITH DRIFT W/ XGBOOST ERRORS
## 3 3 <fit[+]> ETS(A,A,A)
## 4 4 <fit[+]> PROPHET
Paso 4: calibre el modelo en un conjunto de prueba. La calibración agrega una nueva columna, .calibration_datacon las predicciones de prueba y los residuos dentro. Algunas notas sobre la calibración:
La calibración es la forma en que se determinan los intervalos de confianza y las métricas de precisión. Los datos de calibración son simplemente predicciones de pronóstico y residuos que se calculan a partir de datos fuera de la muestra. Después de la calibración, los datos de calibración siguen a los datos a través del flujo de trabajo de pronóstico.
calibration_tbl <- models_tbl %>% modeltime_calibrate(new_data = testing(splits), quiet = FALSE)
calibration_tbl## # Modeltime Table
## # A tibble: 4 × 5
## .model_id .model .model_desc .type .calibration_data
## <int> <list> <chr> <chr> <list>
## 1 1 <fit[+]> ARIMA(2,0,1)(1,1,1)[12] WITH DRIFT Test <tibble [29 × 4]>
## 2 2 <fit[+]> ARIMA(1,0,0)(0,1,2)[12] WITH DRIFT… Test <tibble [29 × 4]>
## 3 3 <fit[+]> ETS(A,A,A) Test <tibble [29 × 4]>
## 4 4 <fit[+]> PROPHET Test <tibble [29 × 4]>
Paso 5: Pronóstico del conjunto de pruebas y evaluación de la precisión Hay dos partes críticas en una evaluación.
- Visualización del conjunto de datos de pronóstico frente a prueba
- Evaluación de la precisión de la prueba (fuera de la muestra)
5A - Visualización de la prueba de pronóstico Visualizar el error de prueba es fácil de hacer usando la visualización gráfica interactiva (simplemente cambie la visibilidad de los modelos usando la Leyenda).
calibration_tbl %>%
modeltime_forecast(
new_data = testing(splits),
actual_data = IPC
) %>%
plot_modeltime_forecast(
.legend_max_width = 25,
.interactive = FALSE
)## Warning in max(ids, na.rm = TRUE): ningun argumento finito para max; retornando
## -Inf
5B - Métricas de precisión Podemos utilizarlo modeltime_accuracy()para recopilar métricas de precisión comunes. El valor predeterminado informa las siguientes métricas mediante yardstickfunciones:
MAE - Error absoluto medio,mae() MAPE : error porcentual absoluto medio, mape() MASE : error escalado absoluto medio, mase() SMAPE : error porcentual absoluto medio simétrico, smape() RMSE : error cuadrático medio, rmse() RSQ - R cuadrado,rsq() Por supuesto, estos se pueden personalizar siguiendo las reglas para crear nuevas métricas, pero los valores predeterminados son muy útiles. Consulte default_forecast_accuracy_metrics()para obtener más información.
Para facilitar un poco la creación de tablas, he incluido la salida de resultados en tablas table_modeltime_accuracy()interactivas ( reactable) o estáticas ( ).gt
- Paso 6: reajustar el conjunto de datos completo y pronosticar hacia adelante
El último paso es reajustar los modelos al conjunto de datos completo modeltime_refit()y pronosticarlos.
## frequency = 12 observations per 1 year
## frequency = 12 observations per 1 year
## frequency = 12 observations per 1 year
## Disabling weekly seasonality. Run prophet with weekly.seasonality=TRUE to override this.
## Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.