El presente documento detalla la metodología implementada para evaluar relaciones de equilibrio de largo plazo y dinámicas de ajuste de corto plazo entre variables de producción y circulación mediante un enfoque híbrido que combina técnicas econométricas clásicas de cointegración con métodos modernos de aprendizaje estadístico no paramétrico. Esta metodología integra el rigor del análisis de cointegración con la flexibilidad de los Multivariate Adaptive Regression Splines (MARS) para capturar no-linealidades en el mecanismo de corrección de errores.
El análisis de cointegración requiere que las series temporales involucradas sean integradas de orden uno, denotadas como \(I(1)\). Una serie \(I(1)\) es no estacionaria en niveles pero se vuelve estacionaria tras una diferenciación. Esta propiedad es fundamental porque solo procesos \(I(1)\) pueden mantener relaciones de equilibrio de largo plazo sin divergir indefinidamente.
Sea \(z_t \in \{Y_t, X_t\}\) una serie temporal. Determinamos que \(z_t \sim I(1)\) mediante el siguiente protocolo de dos etapas:
Etapa 1: No estacionariedad en niveles
Aplicamos el test Augmented Dickey-Fuller (ADF) con componentes determinísticos:
\[\Delta z_t = \mu + \beta t + \rho z_{t-1} + \sum_{i=1}^{p} \psi_i \Delta z_{t-i} + \varepsilon_t\]
donde testeamos \(H_0: \rho = 0\) (raíz unitaria). Requerimos fallo en rechazar \(H_0\) al 10% de significancia tanto con drift como con trend, indicando no estacionariedad robusta a la especificación de determinísticos.
Etapa 2: Estacionariedad en primeras diferencias
Testeamos la primera diferencia sin componentes determinísticos:
\[\Delta^2 z_t = \rho' \Delta z_{t-1} + \sum_{i=1}^{p} \psi'_i \Delta^2 z_{t-i} + \eta_t\]
Requerimos rechazo de \(H_0: \rho' = 0\) al 10%, confirmando estacionariedad tras diferenciación.
Utilizamos 10% en las pruebas \(I(1)\) como pre-filtro conservador para reducir el False Negative Rate (FNR)[^1]. Este umbral más permisivo en la etapa inicial se compensa con filtros más estrictos en etapas posteriores (cointegración al 5%, ECM unidireccional al 5%, validación out-of-sample).
Implementamos dos metodologías complementarias de cointegración, reconociendo que cada una tiene fortalezas específicas:
Paso 1: Regresión de cointegración
Estimamos la relación de largo plazo:
\[Y_t = \alpha + \beta X_t + u_t\]
donde \(\alpha\) y \(\beta\) son los parámetros del vector de cointegración \((1, -\alpha, -\beta)'\).
Paso 2: Test de estacionariedad en residuos
Aplicamos dos pruebas sobre \(\hat{u}_t\):
Paso 3: Regla de decisión “either”
Aceptamos cointegración si cualquiera de las pruebas (ADF o PO) valida al 5%. Esta regla reduce FNR en presencia de cambios estructurales, compensándose con validación posterior más estricta.
Especificamos un VAR de orden \(K\)
(seleccionado por criterio BIC via VARselect
) y lo
transformamos a su representación VECM:
\[\Delta Z_t = \Pi Z_{t-1} + \sum_{i=1}^{K-1} \Gamma_i \Delta Z_{t-i} + \Psi D_t + \varepsilon_t\]
donde: - \(Z_t = (Y_t, X_t)'\) es el vector de variables - \(\Pi = \alpha\beta'\) es la matriz de impacto de largo plazo - \(D_t\) contiene los determinísticos (constante y/o tendencia)
Testeamos \(H_0: r = 0\) (ningún vector de cointegración) mediante el estadístico de traza. Probamos con especificaciones \(\{\text{const}, \text{trend}\}\) y aceptamos cointegración si el estadístico excede el valor crítico al 5% para alguna especificación.
La regla “either” (EG o Johansen) en lugar de “both” (EG y Johansen) se justifica por:
Dado el vector de cointegración \((\alpha, \beta)\) de Engle-Granger, construimos:
\[\text{ECM1}_t = Y_{t-1} - \alpha - \beta X_{t-1}\]
Este término captura el desvío del equilibrio de largo plazo en \(t-1\). El modelo ECM completo es:
\[\Delta Y_t = \lambda \cdot \text{ECM1}_t + \sum_{i=1}^{L} \phi_i \Delta Y_{t-i} + \sum_{i=1}^{L} \gamma_i \Delta X_{t-i} + \varepsilon_t\]
donde: - \(\lambda < 0\) es la velocidad de ajuste hacia el equilibrio - \(L\) es el número de rezagos en diferencias - \(\phi_i, \gamma_i\) capturan la dinámica de corto plazo
Implementamos un procedimiento de selección automática:
Testeamos: - \(H_0: \lambda \geq 0\) (no hay corrección o hay divergencia) - \(H_1: \lambda < 0\) (existe corrección hacia el equilibrio)
La prueba unidireccional es fundamental porque \(\lambda > 0\) implicaría divergencia del equilibrio, lo cual es económicamente incoherente y violaría la condición de estabilidad del sistema.
Empleamos errores estándar HAC (Heteroskedasticity and Autocorrelation Consistent) mediante el estimador Newey-West:
\[\hat{V}_{NW} = \hat{\Omega}_0 + \sum_{j=1}^{m} w_j (\hat{\Omega}_j + \hat{\Omega}'_j)\]
donde \(w_j = 1 - j/(m+1)\) son los pesos de Bartlett y \(m\) se selecciona automáticamente. El estadístico \(t\) robusto es:
\[t = \frac{\hat{\lambda}}{\sqrt{\hat{V}_{NW,\lambda\lambda}}}\]
con p-valor unidireccional \(p = P(T \leq t | H_0)\). Rechazamos si \(p < 0.05\) y \(\hat{\lambda} < 0\).
Las relaciones económicas frecuentemente exhiben no-linealidades: - Efectos umbral: Respuestas diferentes según el nivel de las variables - Asimetrías: Ajustes diferentes para desvíos positivos vs negativos - Cambios de régimen: Parámetros variables según el contexto económico
MARS captura estas características mediante funciones base adaptativas sin requerir especificación a priori de la forma funcional.
El modelo no-lineal se especifica como:
\[\Delta Y_t = f(\text{ECM1}_t, \Delta X_t, \Delta Y_{t-1}, \Delta X_{t-1}, \Delta Y_{t-2}) + \eta_t\]
donde \(f(\cdot)\) es aproximada por MARS como:
\[f(\mathbf{x}) = \beta_0 + \sum_{m=1}^{M} \beta_m \prod_{k=1}^{K_m} h_{km}(x_{v(k,m)})\]
con: - \(h_{km}\) son funciones
bisagra: \(\max(0, x - c)\) o \(\max(0, c - x)\) - \(M\) es el número de funciones base
(controlado por nk
) - \(K_m\) es el grado de interacción
(controlado por degree
)
La grilla de búsqueda especifica: - degree \(\in \{1, 2\}\): Controla interacciones (1 = aditivo, 2 = permite interacciones) - nk \(\in \{15, 25, 35, 50, 65\}\): Número máximo de términos antes de poda
Esta grilla balancea flexibilidad con riesgo de sobreajuste, siendo expandible con más datos históricos.
Implementamos validación cruzada temporal respetando la causalidad mediante rolling-origin con ventana deslizante (sliding window):
La ventana deslizante mantiene “memoria comparable” entre folds y es más sensible a cambios de régimen que la expansiva. Esto es crucial para series económicas con parámetros no constantes en sentido amplio. Evidencia empírica muestra que sliding:
Para selección de hiperparámetros sin contaminar la evaluación:
Esta estructura evita data snooping[^2] y proporciona estimaciones no sesgadas del error de generalización.
El MSE se descompone en componentes interpretables:
\[\text{MSE} = \underbrace{(\bar{\hat{Y}} - \bar{Y})^2}_{\text{Sesgo}^2} + \underbrace{(\sigma_{\hat{Y}} - \sigma_Y)^2}_{\text{Var. diferencial}} + \underbrace{2\sigma_{\hat{Y}}\sigma_Y(1 - \rho_{\hat{Y},Y})}_{\text{Covarianza imperfecta}}\]
Las proporciones (bias_prop, var_prop, cov_prop) diagnostican la fuente principal del error predictivo.
Definimos el soporte como:
\[\text{support} = \frac{\text{folds\_proceed}}{\text{folds}}\]
donde folds_proceed
cuenta los folds que pasan todos los
filtros econométricos y tienen desempeño predictivo aceptable.
El requisito de mínimo absoluto previene “falsos robustos” por denominador pequeño.
Estas métricas integran desempeño predictivo con consistencia temporal, privilegiando modelos “buenos y constantes” sobre “excelentes a veces”.
La arquitectura de paralelización opera en dos niveles:
blas_set_num_threads(1)
para evitar sobre-suscripción del
CPULos workers son procesos R independientes (no threads) coordinados
por future::multisession
, cada uno con memoria propia. La
semilla future.seed=TRUE
garantiza reproducibilidad en
paralelo.
El paquete progressr
proporciona retroalimentación en
tiempo real sin interferir con la paralelización, crucial para
ejecuciones largas (84 pares × múltiples folds × validación
anidada).
La complejidad total es:
\[\mathcal{O}(N_{\text{pares}} \times F_{\text{ext}} \times F_{\text{int}} \times G \times C_{\text{modelo}})\]
donde: - \(N_{\text{pares}} = 84\) (6 circulación × 7 producción × 2 direcciones) - \(F_{\text{ext}}\) = número de folds externos (típicamente 8-15) - \(F_{\text{int}}\) = folds internos por fold externo (típicamente 3-5) - \(G\) = tamaño de