name: xaringan-title class: inverse, left, bottom background-image: url(pictures/picuniform.jpg) background-size: cover # **Econometría II** ---- ## **<br/> ARMAX** ### Carlos A. Yanes Guerra ### 2025 --- class: inverse, middle, center # Preguntas de las sesiones anteriores? --- layout: true # Modelos ARMAX --- -- - **ARMAX** (AutoRegressive Moving Average with eXogenous inputs) es un modelo de series de tiempo que combina tres componentes: - **AR**: Componente autorregresivo. - **MA**: Componente de medias móviles. - **X**: Entrada exógena, es decir, variables externas que influyen en el sistema. -- La .hi[ecuación general] del modelo ARMAX es: `$$y_t = \phi_1 y_{t-1} + \phi_2 y_{t-2} + ... + \phi_p y_{t-p} + \theta_1 e_{t-1} + \theta_2 e_{t-2} + ... + \theta_q e_{t-q} + \beta_1 x_{t-1} + \beta_2 x_{t-2} + ... + \beta_r x_{t-r} + e_t$$` --- -- 1. **Identificación**: Examinar los gráficos de autocorrelación (ACF) y autocorrelación parcial (PACF) para determinar los posibles órdenes \( p \) y \( q \) de los componentes AR y MA. 2. **Selección de Variables Exógenas**: Identificar las variables exógenas relevantes \( x_t \). 3. **Ajuste del Modelo**: Estimar los parámetros del modelo mediante métodos como MLE (Maximum Likelihood Estimation) o mínimos cuadrados. 4. **Diagnóstico**: Verificar los residuos del modelo para asegurarse de que no hay patrones no modelados. --- -- - **Estacionariedad**: Asegúrate de que las series de tiempo sean estacionarias antes de aplicar el modelo ARMAX. - **Relación entre Variables Exógenas**: Las variables exógenas deben tener una relación significativa con la variable dependiente. - **Modelos de Residuos**: Los residuos del modelo deben ser ruido blanco (sin autocorrelación). -- ### Aplicaciones de ARMAX -- - **Previsión Económica**: En econometría y macroeconomía, ARMAX se utiliza para predecir series de tiempo como el PIB, inflación, etc., incorporando factores externos como políticas monetarias. - **Control de Procesos**: En ingeniería y sistemas de control, ARMAX es útil para modelar sistemas dinámicos donde las entradas externas afectan el comportamiento del sistema. - **Modelos Financieros**: Análisis de activos financieros, donde las variables externas (como tasas de interés) influyen en los precios de las acciones. --- --
A pesar de haber sido desarrollados hace tiempo, siguen siendo útiles. --
Igualmente presentan limitaciones hacia acciones de largo plazo y necesitan los datos ser actualizados. --
Elaborar pronósticos con la metodología ARIMAX también es un "Arte". --
No se puede decir que el mejor modelo que se establece, es o ha sido el **mejor**. --
Las .hi-purple[variables económicas] son procesos aleatorios y por ello tienen una distribución de probabilidad generalmente desconocida a la que también se le llama el .hi[proceso generador de datos] (PGD) de la variable. --- -- <cy-blockquote>Teniendo como referencia los modelos univariados, podemos entonces involucrar de manera exogena, la participación de un componente **exogeno** que acompaña nuestro modelo</cy-blockquote> --
Nuestro modelo ahora se transfigura a: -- `$$y_t=\color{red}{c}+\color{purple}{v(\beta)x_t}+ e_t$$` -- Dicho de otra manera: -- `$$y_t=C_0+\sum \limits_{i=1}^p \phi_i y_{t-1}+\color{purple}{\sum \limits_{k=1}^r \beta_k x_{t}}+\color{blue}{\sum \limits_{j=1}^q \theta_i e_{t-1}}+ \color{red}{e_t}$$` -- *La parte de x, es exogena e incluso se vincula como variable en función de (t), es decir en el presente*. --- -- Los modelos de tipo .hi[ARMAX] son usados en agricultura, energia, por ejemplo el siguiente paper de [Rabbi, et.al (2020)](https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9350326&tag=1) nos muestra algo de ello. -- Un modelo ARMAX suele ser representado como: -- `$$Y_{t}=\alpha_{0} +\alpha_{1}Y_{t-1}+\cdots+\alpha_{\rho}Y_{t-\rho}+\beta_{1}X_{t}+\epsilon_{t}$$` -- Donde: -- `\(X_{t}\)` es la variable exogena o explicativa y el error del modelo debe tener la estimación: -- `$$\epsilon_{t}= \rho \epsilon_{t-1}+ \theta_{1}V_{t-1}+ V_{t}$$` Que vendría a ser un proceso .hi[ARMA] para el .hi-red[residuo] del modelo original. --- -- Un modelo autoregresivo (AR) y de media móvil (MA) puede contener variables exógenas, siempre y cuando el proceso `\((Y_{t})\)` sea una solución .hi-purple[estacionaria] de ecuaciones en diferencia de tal forma que: -- `$$Y_{t} - \alpha_{1} Y_{t-1}- \cdots-\alpha_{\rho} Y_{t-\rho} = Z_{t}+ \Theta_{1} Z_{t-1}+\cdots + \Theta_{q} Z_{t-q}$$` -- Donde tanto `\(\alpha\)` y `\(\Theta\)` son parámetros de las variables y `\(Z_{t}\)` es una variable exógena que se distribuye R.B `\(\sim (0, \sigma^{2})\)` --- layout: false .attn[Ejemplo:] -- <img src="Clase06_files/figure-html/usconsump-1.svg" style="display: block; margin: auto;" /> --- -- <img src="Clase06_files/figure-html/unnamed-chunk-1-1.svg" style="display: block; margin: auto;" /> --- layout: true # Ejemplo --- -- ### Condiciones de estimación --
Estacionariedad, mas que nada replicamos todo el proceso que ya se ha venido desarrollando. --
La serie (x), tambien debe ser en lo posible estacionaria. Ya que si no lo es, puede afectar a los .hi[errores] del modelo y generar algo **espurio**. --
Los residuos finalmente deben ser .hi-purple[ruido blanco] --- -- .pull-left[ ``` #> #> ####################### #> # KPSS Unit Root Test # #> ####################### #> #> Test is of type: tau with 4 lags. #> #> Value of test-statistic is: 0.0887 #> #> Critical value for a significance level of: #> 10pct 5pct 2.5pct 1pct #> critical values 0.119 0.146 0.176 0.216 ```
Serie .hi-purple[Consumo] ] -- .pull-right[ ``` #> #> ####################### #> # KPSS Unit Root Test # #> ####################### #> #> Test is of type: tau with 4 lags. #> #> Value of test-statistic is: 0.0601 #> #> Critical value for a significance level of: #> 10pct 5pct 2.5pct 1pct #> critical values 0.119 0.146 0.176 0.216 ```
Serie .hi[Ingreso] ] --- --
--- -- ``` r ax <- Arima(uschange[,1], c(1, 0, 2), xreg = uschange[,2]) summary(ax) ``` ``` #> Series: uschange[, 1] #> Regression with ARIMA(1,0,2) errors #> #> Coefficients: #> ar1 ma1 ma2 intercept xreg #> 0.6922 -0.5758 0.1984 0.5990 0.2028 #> s.e. 0.1159 0.1301 0.0756 0.0884 0.0461 #> #> sigma^2 = 0.3219: log likelihood = -156.95 #> AIC=325.91 AICc=326.37 BIC=345.29 #> #> Training set error measures: #> ME RMSE MAE MPE MAPE MASE #> Training set 0.001714366 0.5597088 0.4209056 27.4477 161.8417 0.6594731 #> ACF1 #> Training set 0.006299231 ``` -- .attn[Qué pasa si lo quiero con mas] (X's) --- -- Toca algo como: -- ```r conjunto <- ts.intersect(uschange[,2], uschange[,3], uschange[,4]) ``` -- Luego solo en la parte donde va `xreg= conjunto`. Recuerde que todas las variables deben ser estacionarias. A modo de ejemplo vamos a mirar todas las variables, pero no van a ser correctamente especificado. -- Por otro lado se comporta como un modelo de .hi-purple[regresión] y haremos uso del paquete `library(lmtest)`. --- -- ``` r axc <- Arima(uschange[,1], c(1, 0, 2), xreg = conjunto) summary(axc) ``` ``` #> Series: uschange[, 1] #> Regression with ARIMA(1,0,2) errors #> #> Coefficients: #> ar1 ma1 ma2 intercept uschange[, 2] uschange[, 3] #> -0.3591 0.2691 0.1051 0.2361 0.7313 0.0823 #> s.e. 0.3552 0.3459 0.1013 0.0348 0.0427 0.0171 #> uschange[, 4] #> -0.0460 #> s.e. 0.0028 #> #> sigma^2 = 0.1084: log likelihood = -54.04 #> AIC=124.08 AICc=124.88 BIC=149.92 #> #> Training set error measures: #> ME RMSE MAE MPE MAPE MASE #> Training set 0.0001104599 0.323003 0.2343151 14.62825 82.0396 0.3671239 #> ACF1 #> Training set -0.003148503 ``` --- -- .pull-left[ ``` r library(lmtest) coeftest(ax) ``` ``` #> #> z test of coefficients: #> #> Estimate Std. Error z value Pr(>|z|) #> ar1 0.692229 0.115905 5.9724 2.338e-09 *** #> ma1 -0.575809 0.130063 -4.4272 9.549e-06 *** #> ma2 0.198361 0.075585 2.6243 0.008682 ** #> intercept 0.599040 0.088398 6.7767 1.230e-11 *** #> xreg 0.202819 0.046075 4.4019 1.073e-05 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ``` ] -- .pull-right[ ``` r coeftest(axc) ``` ``` #> #> z test of coefficients: #> #> Estimate Std. Error z value Pr(>|z|) #> ar1 -0.3591467 0.3551614 -1.0112 0.3119 #> ma1 0.2691179 0.3459332 0.7779 0.4366 #> ma2 0.1050597 0.1012945 1.0372 0.2997 #> intercept 0.2360594 0.0348330 6.7769 1.228e-11 *** #> uschange[, 2] 0.7312921 0.0427249 17.1163 < 2.2e-16 *** #> uschange[, 3] 0.0822889 0.0170837 4.8168 1.459e-06 *** #> uschange[, 4] -0.0459726 0.0028476 -16.1441 < 2.2e-16 *** #> --- #> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ``` ] --- -- <img src="Clase06_files/figure-html/unnamed-chunk-10-1.svg" style="display: block; margin: auto;" /> ``` #> #> Ljung-Box test #> #> data: Residuals from Regression with ARIMA(1,0,2) errors #> Q* = 5.8916, df = 5, p-value = 0.3169 #> #> Model df: 3. Total lags used: 8 ``` --- -- ``` #> #> Ljung-Box test #> #> data: Residuals from Regression with ARIMA(1,0,2) errors #> Q* = 5.8916, df = 5, p-value = 0.3169 #> #> Model df: 3. Total lags used: 8 ``` --- -- .attn[Pronostico Modelo Real] -- ``` r fcast <- forecast(ax, xreg=rep(mean(uschange[,2]),8), h=8) fcast ``` ``` #> Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 #> 2016 Q4 0.7844455 0.057363562 1.511527 -0.3275304 1.896421 #> 2017 Q1 0.7860095 0.054016921 1.518002 -0.3334766 1.905496 #> 2017 Q2 0.7732613 0.013689680 1.532833 -0.3884033 1.934926 #> 2017 Q3 0.7644367 -0.008001435 1.536875 -0.4169055 1.945779 #> 2017 Q4 0.7583280 -0.020200117 1.536856 -0.4323280 1.948984 #> 2018 Q1 0.7540994 -0.027330110 1.535529 -0.4409939 1.949193 #> 2018 Q2 0.7511722 -0.031643749 1.533988 -0.4460415 1.948386 #> 2018 Q3 0.7491459 -0.034333517 1.532625 -0.4490825 1.947374 ``` --- -- <img src="Clase06_files/figure-html/unnamed-chunk-13-1.svg" style="display: block; margin: auto;" /> --- layout: false class: inverse, middle, center # Gracias por su atención --- # Bibliografía
Rabbi, F., Tareq, S.U., Islam, M.M., Chowdhury, M.A., & Abul Kashem, M. (2020). *A Multivariate Time Series Approach for Forecasting of Electricity Demand in Bangladesh Using ARIMAX Model*. 2020 2nd International Conference on Sustainable Technologies for Industry 4.0 (STI), 1-5.
Hyndman, R.J., & Athanasopoulos, G. (2021). *Forecasting: principles and practice*, 3rd edition, OTexts: Melbourne, Australia.
Shumway, R., & Stoffer, D. (2019). *Time series: a data analysis approach using R*. CRC Press. --- name: adios class: middle .pull-left[ # **¡Gracias!** <br/> ## Modelos ARMAX ### Seguimos aprendiendo ] .pull-right[ .right[ <img style="border-radius: 50%;" src="https://avatars.githubusercontent.com/u/39503983?v=4" width="150px" />
[Syllabus/ Curso](https://pomelo.uninorte.edu.co/pls/prod/bwckctlg.p_disp_course_detail?cat_term_in=202210&subj_code_in=ECO&crse_numb_in=0010)<br/>
[@keynes37](https://twitter.com/keynes37)<br/>
[ cayanes@uninorte.edu.co](mailto:cayanes@uninorte.edu.co) ] ]