2023-04-18
Evaluar los modelos de pronóstico ARIMA, Holt-Winters y redes neuronales artificiales con los precios de futuros de aceite de soya para que los compradores y vendedores de este producto tengan una herramienta para la toma de decisiones.
Evaluar los tres métodos estadístico-computacionales de pronóstico de series de tiempo en los datos históricos de los precios del aceite de soya.
Analizar y seleccionar cuál de los modelos pronostica mejor los precios mediante un análisis comparativo de indicadores.
Crear una herramienta de monitoreo y pronóstico para facilitar la comunicación e interpretación de los resultados.
\(Y_t =\) valor de una serie en el periodo \(t\)
\(\hat{Y_t} =\) valor pronosticado de la serie en el periodo \(t\)
\(\varepsilon_t=Y_t - \hat{Y_t}\) error de pronostico
\[r_k=\dfrac{\sum_{t=k+1}^{n}(Y_t-\overline{Y})(Y_{t-k}-\overline{Y})}{\sum_{t=1}^{n}(Y_t-\overline{Y})^2}\]
\[MAE=\dfrac{1}{n}\sum_{t=1}^{n}|Y_t - \hat{Y_t}|\]
\[MSE=\dfrac{1}{n}\sum_{t=1}^{n}(Y_t - \hat{Y_t})^2\]
\[RMSE=\sqrt{\dfrac{1}{n}\sum_{t=1}^{n}(Y_t - \hat{Y_t})^2}\]
\[MAPE=\dfrac{1}{n}\sum_{t=1}^{n}\dfrac{|Y_t - \hat{Y_t}|}{|Y_t|}\]
\[MPE=\dfrac{1}{n}\sum_{t=1}^{n}\dfrac{(Y_t - \hat{Y_t})}{Y_t}\]
Modelos AR(\(p\)):
\[Y_t=\phi_0 + \phi_1 Y_{t-1} + \phi_2 Y_{t-2} +...+ \phi_p Y_{t-p} + \varepsilon_t\]
Modelos MA(\(q\)):
\[Y_t=\mu + \varepsilon_t - \omega_1\varepsilon_{t-1} - \omega_2\varepsilon_{t-2}- ... - \omega_q\varepsilon_{t-q}\]
Modelos ARMA(\(p\),\(q\))
Modelos ARIMA(\(p\),\(d\),\(q\))
Modelos SARIMA(\(p\),\(d\),\(q\))(\(P\),\(D\),\(Q\))[\(m\)]
Criterio de información Akeike (AIC)
\[AIC=\ln\hat{\sigma}^2+\dfrac{2}{n}r\]
donde
\(\hat{\sigma}^2=\) Error cuadrático medio.
\(n=\) Número de observaciones.
\(r=\) Número total de parámetros en el modelo ARIMA.
\[\hat{Y}_{t+h}=(l_t + h b_t)s_{t+h}\]
\(l_t=\alpha( \dfrac{Y_t}{s_{t-m}}) + (1-\alpha)(l_{t-1}+b_{t-1})\)
\(b_t=\beta(l_t-l_{t-1}) + (1-\beta)b_{t-1}\)
\(s_t=\gamma( \dfrac{Y_t}{l_t}) + (1-\gamma)s_{t-m}\)
ndiffs(train)
## [1] 1
nsdiffs(train)
## [1] 0
adf.test(diff(train))
## ## Augmented Dickey-Fuller Test ## ## data: diff(train) ## Dickey-Fuller = -6.7249, Lag order = 7, p-value = 0.01 ## alternative hypothesis: stationary
kpss.test(diff(train))
## ## KPSS Test for Level Stationarity ## ## data: diff(train) ## KPSS Level = 0.12196, Truncation lag parameter = 5, p-value = 0.1
a1=Arima(train,order=c(0,1,3),seasonal=c(1,0,0)) a2=Arima(train,order=c(0,1,3),seasonal=c(0,0,1)) a3=Arima(train,order=c(0,1,3),seasonal=c(1,0,1)) a4=Arima(train,order=c(3,1,0),seasonal=c(0,0,1)) a5=Arima(train,order=c(3,1,0),seasonal=c(1,0,0)) a6=Arima(train,order=c(3,1,0),seasonal=c(1,0,1)) a7=Arima(train,order=c(3,1,3),seasonal=c(1,0,0)) a8=Arima(train,order=c(3,1,3),seasonal=c(0,0,1)) a9=Arima(train,order=c(3,1,3),seasonal=c(1,0,1))
AIC(a1,a2,a3,a4,a5,a6,a7,a8,a9)
## df AIC ## a1 5 1534.074 ## a2 5 1531.809 ## a3 6 1533.677 ## a4 5 1532.050 ## a5 5 1534.221 ## a6 6 1533.892 ## a7 8 1527.494 ## a8 8 1524.778 ## a9 9 1526.720
a8
## Series: train ## ARIMA(3,1,3)(0,0,1)[52] ## ## Coefficients: ## ar1 ar2 ar3 ma1 ma2 ma3 sma1 ## 0.5997 -0.2645 -0.5609 -0.6977 0.4627 0.3886 0.3407 ## s.e. 0.1625 0.1813 0.1504 0.1753 0.1909 0.1700 0.0653 ## ## sigma^2 = 3.742: log likelihood = -754.39 ## AIC=1524.78 AICc=1525.18 BIC=1555.93
a10=auto.arima(train,
approximation=FALSE,
stepwise=FALSE,
allowdrift = FALSE,
max.P = 1,
max.Q = 1)
a10
## Series: train ## ARIMA(4,1,0)(0,0,1)[52] ## ## Coefficients: ## ar1 ar2 ar3 ar4 sma1 ## -0.0651 0.1413 -0.1026 -0.0872 0.3193 ## s.e. 0.0525 0.0522 0.0530 0.0534 0.0669 ## ## sigma^2 = 3.842: log likelihood = -759.7 ## AIC=1531.39 AICc=1531.63 BIC=1554.76
## ## Ljung-Box test ## ## data: Residuals from ARIMA(3,1,3)(0,0,1)[52] ## Q* = 89.505, df = 66, p-value = 0.02871 ## ## Model df: 7. Total lags used: 73
## Pron Lo.80 Hi.80 Lo.95 Hi.95 ## 2022-12-23 66.15 63.67 68.63 62.36 69.94 ## 2022-12-30 66.89 63.55 70.23 61.78 72.00 ## 2023-01-06 65.99 61.77 70.21 59.54 72.44 ## 2023-01-13 66.92 62.05 71.78 59.47 74.36 ## 2023-01-20 67.08 61.66 72.50 58.79 75.36 ## 2023-01-27 68.06 62.21 73.90 59.12 77.00 ## 2023-02-03 68.24 62.00 74.49 58.70 77.79 ## 2023-02-10 69.19 62.55 75.83 59.04 79.34 ## 2023-02-17 70.17 63.11 77.23 59.38 80.97 ## 2023-02-24 71.53 64.05 79.01 60.09 82.97 ## 2023-03-03 71.31 63.43 79.18 59.27 83.34 ## 2023-03-10 69.52 61.31 77.73 56.97 82.07 ## 2023-03-17 69.79 61.29 78.29 56.79 82.79 ## 2023-03-24 69.20 60.42 77.99 55.77 82.63 ## 2023-03-31 70.36 61.29 79.44 56.48 84.24
## MLP fit with 5 hidden nodes and 20 repetitions. ## Series modelled in differences: D1. ## Univariate lags: (3,7,9,16,18,19,20,25,27,28,29,35,37,38,41,44,46,48,49,51,52) ## Forecast combined using the median operator. ## MSE: 0.469.
## Pron ## 2022-12-23 62.94 ## 2022-12-30 63.28 ## 2023-01-06 68.56 ## 2023-01-13 67.39 ## 2023-01-20 57.30 ## 2023-01-27 67.13 ## 2023-02-03 60.06 ## 2023-02-10 61.78 ## 2023-02-17 68.23 ## 2023-02-24 66.84 ## 2023-03-03 68.97 ## 2023-03-10 62.14 ## 2023-03-17 63.76 ## 2023-03-24 66.65 ## 2023-03-31 63.43
## Pron ## 2022-12-23 62.53 ## 2022-12-30 58.66 ## 2023-01-06 58.22 ## 2023-01-13 59.83 ## 2023-01-20 55.53 ## 2023-01-27 56.91 ## 2023-02-03 51.21 ## 2023-02-10 51.16 ## 2023-02-17 50.33 ## 2023-02-24 56.78 ## 2023-03-03 57.33 ## 2023-03-10 55.13 ## 2023-03-17 55.15 ## 2023-03-24 55.83 ## 2023-03-31 50.01
## Holt-Winters exponential smoothing with trend and multiplicative seasonal component. ## ## Call: ## HoltWinters(x = train, seasonal = "multiplicative") ## ## Smoothing parameters: ## alpha: 0.8801211 ## beta : 0 ## gamma: 1 ## ## Coefficients: ## [,1] ## a 61.45092644 ## b 0.01120482 ## s1 1.06735077 ## s2 1.07802075 ## s3 1.06323514 ## s4 1.06058322 ## s5 1.04630881 ## s6 1.04550431 ## s7 1.01531628 ## s8 0.99464726 ## s9 1.01102819 ## s10 1.00280407 ## s11 0.97684593 ## s12 0.96061237 ## s13 0.96720968 ## s14 0.93681863 ## s15 0.94439235 ## s16 0.95147301 ## s17 0.95461477 ## s18 0.97332767 ## s19 0.95524024 ## s20 0.97267208 ## s21 0.94985071 ## s22 0.95077113 ## s23 0.95458479 ## s24 0.97080545 ## s25 0.92818217 ## s26 0.95091092 ## s27 0.94759788 ## s28 0.92939668 ## s29 0.94297587 ## s30 0.92010033 ## s31 0.93257123 ## s32 0.94064894 ## s33 0.99621633 ## s34 0.98211853 ## s35 0.99423043 ## s36 0.98374386 ## s37 0.96855290 ## s38 0.99596880 ## s39 0.99621487 ## s40 0.99953933 ## s41 1.01064342 ## s42 1.03002130 ## s43 1.05961434 ## s44 1.05887225 ## s45 1.06694372 ## s46 1.04207667 ## s47 1.06573578 ## s48 1.11193263 ## s49 1.09927081 ## s50 1.10604910 ## s51 1.09075354 ## s52 1.07077317
## Pron Lo.80 Hi.80 Lo.95 Hi.95 ## 2022-12-23 65.60 62.56 68.64 60.95 70.25 ## 2022-12-30 66.27 62.20 70.34 60.05 72.49 ## 2023-01-06 65.37 60.54 70.20 57.99 72.76 ## 2023-01-13 65.22 59.71 70.73 56.79 73.65 ## 2023-01-20 64.36 58.29 70.42 55.08 73.63 ## 2023-01-27 64.32 57.69 70.94 54.18 74.45 ## 2023-02-03 62.47 55.49 69.45 51.80 73.14 ## 2023-02-10 61.21 53.86 68.56 49.98 72.45 ## 2023-02-17 62.23 54.30 70.16 50.10 74.36 ## 2023-02-24 61.74 53.43 70.04 49.03 74.44 ## 2023-03-03 60.15 51.62 68.68 47.10 73.20 ## 2023-03-10 59.16 50.35 67.97 45.69 72.63 ## 2023-03-17 59.58 50.31 68.84 45.41 73.74 ## 2023-03-24 57.72 48.34 67.09 43.38 72.05 ## 2023-03-31 58.19 48.38 68.01 43.18 73.21
## ## Ljung-Box test ## ## data: Residuals from HoltWinters ## Q* = 136.47, df = 73, p-value = 9.748e-06 ## ## Model df: 0. Total lags used: 73
## ARIMA RN HW REAL ## 2022-12-23 66.15 62.53 65.60 66.40 ## 2022-12-30 66.89 58.66 66.27 62.94 ## 2023-01-06 65.99 58.22 65.37 63.25 ## 2023-01-13 66.92 59.83 65.22 63.15 ## 2023-01-20 67.08 55.53 64.36 60.79 ## 2023-01-27 68.06 56.91 64.32 60.94 ## 2023-02-03 68.24 51.21 62.47 59.04 ## 2023-02-10 69.19 51.16 61.21 61.90 ## 2023-02-17 70.17 50.33 62.23 62.04 ## 2023-02-24 71.53 56.78 61.74 61.39 ## 2023-03-03 71.31 57.33 60.15 56.57 ## 2023-03-10 69.52 55.13 59.16 57.73 ## 2023-03-17 69.79 55.15 59.58 52.17 ## 2023-03-24 69.20 55.83 57.72 54.37 ## 2023-03-31 70.36 50.01 58.19 55.49
## ARIMA RN HW ## ME -8.815694 4.237089 -2.360649 ## RMSE 10.140009 5.756702 3.111805 ## MAE 8.848979 4.931488 2.558942 ## MPE -15.303344 6.848777 -4.114901 ## MAPE 15.353473 8.149510 4.423591
## Holt-Winters exponential smoothing with trend and multiplicative seasonal component. ## ## Call: ## HoltWinters(x = soja.ts, seasonal = "multiplicative") ## ## Smoothing parameters: ## alpha: 0.8798101 ## beta : 0 ## gamma: 1 ## ## Coefficients: ## [,1] ## a 58.62124574 ## b 0.01120482 ## s1 0.95149066 ## s2 0.95463718 ## s3 0.97335404 ## s4 0.95522100 ## s5 0.97267481 ## s6 0.94983029 ## s7 0.95080498 ## s8 0.95460066 ## s9 0.97078440 ## s10 0.92811895 ## s11 0.95084081 ## s12 0.94765555 ## s13 0.92937752 ## s14 0.94296181 ## s15 0.92014383 ## s16 0.93262177 ## s17 0.94061876 ## s18 0.99614750 ## s19 0.98204932 ## s20 0.99426640 ## s21 0.98374737 ## s22 0.96856155 ## s23 0.99592566 ## s24 0.99620256 ## s25 0.99953153 ## s26 1.01066802 ## s27 1.02997132 ## s28 1.05958640 ## s29 1.05885860 ## s30 1.06696665 ## s31 1.04213142 ## s32 1.06566633 ## s33 1.11185553 ## s34 1.09918127 ## s35 1.10600577 ## s36 1.09082589 ## s37 1.07086286 ## s38 1.06893825 ## s39 1.06978479 ## s40 1.06460563 ## s41 1.06088246 ## s42 1.04323514 ## s43 1.04553765 ## s44 1.01503266 ## s45 1.00255904 ## s46 1.01027901 ## s47 1.00244937 ## s48 0.97015750 ## s49 0.96398837 ## s50 0.95454299 ## s51 0.94340934 ## s52 0.94658517
## Pron Lo.80 Hi.80 Lo.95 Hi.95 ## 2022-12-23 65.60 62.56 68.64 60.95 70.25 ## 2022-12-30 66.27 62.20 70.34 60.05 72.49 ## 2023-01-06 65.37 60.54 70.20 57.99 72.76 ## 2023-01-13 65.22 59.71 70.73 56.79 73.65 ## 2023-01-20 64.36 58.29 70.42 55.08 73.63 ## 2023-01-27 64.32 57.69 70.94 54.18 74.45 ## 2023-02-03 62.47 55.49 69.45 51.80 73.14 ## 2023-02-10 61.21 53.86 68.56 49.98 72.45 ## 2023-02-17 62.23 54.30 70.16 50.10 74.36 ## 2023-02-24 61.74 53.43 70.04 49.03 74.44 ## 2023-03-03 60.15 51.62 68.68 47.10 73.20 ## 2023-03-10 59.16 50.35 67.97 45.69 72.63 ## 2023-03-17 59.58 50.31 68.84 45.41 73.74 ## 2023-03-24 57.72 48.34 67.09 43.38 72.05 ## 2023-03-31 58.19 48.38 68.01 43.18 73.21
Los modelos de Holt-Winters y de Redes Neuronales tuvieron prońosticos muy acertados. Sin embargo, se elije el primero de ellos debido a su sencilles y velocidad de ejecución.
Se construýo un dashboard de monitoreo y prońostico para facilitar la comunicación e interpretación de los resultados.
Para próximas investigaciones se propone el desarrollo de redes neuronales recurrentes del tipo LSTM (Long Short Term Memory), las cuales podrían mejorar la precisión de los pronósticos, aunque se requiere de un amplio manejo del tema para programarlas correctamente.