Methodological Details of the Error Correction Model with MARS

José Mauricio Gómez Julián

octubre 2025

Econometric Framework for Cointegration and Error Correction Analysis

This document details the methodology implemented to evaluate long-run equilibrium relationships and short-run adjustment dynamics between production and circulation variables through a hybrid approach that combines classical econometric cointegration techniques with modern non-parametric statistical learning methods. This methodology integrates the rigor of cointegration analysis with the flexibility of Multivariate Adaptive Regression Splines (MARS) to capture non-linearities in the error correction mechanism.

Determination of Integration Order I(1)

Theoretical Foundation

Cointegration analysis requires that the involved time series be integrated of order one, denoted as \(I(1)\). An \(I(1)\) series is non-stationary in levels but becomes stationary after first differencing. This property is fundamental because only \(I(1)\) processes can maintain long-run equilibrium relationships without diverging indefinitely.

Verification Protocol

Let \(z_t \in \{Y_t, X_t\}\) be a time series. We determine that \(z_t \sim I(1)\) through the following two-stage protocol:

Stage 1: Non-stationarity in levels

We apply the Augmented Dickey-Fuller (ADF) test with deterministic components:

\[\Delta z_t = \mu + \beta t + \rho z_{t-1} + \sum_{i=1}^{p} \psi_i \Delta z_{t-i} + \varepsilon_t\]

where we test \(H_0: \rho = 0\) (unit root). We require failure to reject \(H_0\) at 10% significance for both drift and trend specifications, indicating robust non-stationarity across deterministic specifications.

Stage 2: Stationarity in first differences

We test the first difference without deterministic components:

\[\Delta^2 z_t = \rho' \Delta z_{t-1} + \sum_{i=1}^{p} \psi'_i \Delta^2 z_{t-i} + \eta_t\]

We require rejection of \(H_0: \rho' = 0\) at 10%, confirming stationarity after differencing.

Justification of Significance Level

We use 10% in \(I(1)\) tests as a conservative pre-filter to reduce the False Negative Rate (FNR)[^1]. This more permissive threshold at the initial stage is compensated by stricter filters in subsequent stages (cointegration at 5%, unidirectional ECM at 5%, out-of-sample validation).

Cointegration Analysis

Dual Approach: Engle-Granger and Johansen

We implement two complementary cointegration methodologies, recognizing that each has specific strengths:

Engle-Granger Procedure with Phillips-Ouliaris

Step 1: Cointegration regression

We estimate the long-run relationship:

\[Y_t = \alpha + \beta X_t + u_t\]

where \(\alpha\) and \(\beta\) are the parameters of the cointegrating vector \((1, -\alpha, -\beta)'\).

Step 2: Residual stationarity test

We apply two tests on \(\hat{u}_t\):

  • ADF without deterministics: Tests unit root in residuals at level \(p < 0.05\)
  • Phillips-Ouliaris (PO): Test robust to endogeneity and serial correlation

Step 3: “Either” decision rule

We accept cointegration if either test (ADF or PO) validates at 5%. This rule reduces FNR in the presence of structural breaks, compensated by stricter subsequent validation.

Johansen Trace Test

We specify a VAR of order \(K\) (selected by BIC criterion via VARselect) and transform it to its VECM representation:

\[\Delta Z_t = \Pi Z_{t-1} + \sum_{i=1}^{K-1} \Gamma_i \Delta Z_{t-i} + \Psi D_t + \varepsilon_t\]

where: - \(Z_t = (Y_t, X_t)'\) is the variable vector - \(\Pi = \alpha\beta'\) is the long-run impact matrix - \(D_t\) contains deterministics (constant and/or trend)

We test \(H_0: r = 0\) (no cointegrating vectors) using the trace statistic. We test with specifications \(\{\text{const}, \text{trend}\}\) and accept cointegration if the statistic exceeds the critical value at 5% for any specification.

Justification of the “Either” Rule

The “either” rule (EG or Johansen) instead of “both” (EG and Johansen) is justified by:

  1. Robustness to regime changes: Different tests may be sensitive to different types of structural breaks
  2. Compensation with subsequent filters: The ECM with \(\lambda < 0\) and out-of-sample validation filter false positives
  3. Empirical evidence: Monte Carlo tests show lower FNR without substantial FPR inflation when combined with predictive validation

Error Correction Model (ECM)

Linear ECM Specification

Given the cointegrating vector \((\alpha, \beta)\) from Engle-Granger, we construct:

\[\text{ECM1}_t = Y_{t-1} - \alpha - \beta X_{t-1}\]

This term captures the deviation from long-run equilibrium at \(t-1\). The complete ECM model is:

\[\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\]

where: - \(\lambda < 0\) is the speed of adjustment toward equilibrium - \(L\) is the number of lags in differences - \(\phi_i, \gamma_i\) capture short-run dynamics

Optimal Lag Selection

We implement an automatic selection procedure:

  1. Search over \(L \in \{1, 2, ..., L_{\max}\}\) with \(L_{\max} = 4\) by default
  2. Primary criterion: BIC for parsimony
  3. White noise constraint: If the model with lowest BIC fails Ljung-Box (\(p \leq 0.05\) with 12 lags), we select the model with lowest BIC that passes the test
  4. Optional guidance: \(L \approx \max(1, K-1)\) where \(K\) is the VAR order, though not binding

Unidirectional Test with HAC Errors

Hypothesis and Justification

We test: - \(H_0: \lambda \geq 0\) (no correction or divergence) - \(H_1: \lambda < 0\) (correction toward equilibrium exists)

The unidirectional test is fundamental because \(\lambda > 0\) would imply divergence from equilibrium, which is economically incoherent and would violate the system’s stability condition.

Robust Inference

We employ HAC (Heteroskedasticity and Autocorrelation Consistent) standard errors using the Newey-West estimator:

\[\hat{V}_{NW} = \hat{\Omega}_0 + \sum_{j=1}^{m} w_j (\hat{\Omega}_j + \hat{\Omega}'_j)\]

where \(w_j = 1 - j/(m+1)\) are Bartlett weights and \(m\) is automatically selected. The robust \(t\) statistic is:

\[t = \frac{\hat{\lambda}}{\sqrt{\hat{V}_{NW,\lambda\lambda}}}\]

with one-sided p-value \(p = P(T \leq t | H_0)\). We reject if \(p < 0.05\) and \(\hat{\lambda} < 0\).

Non-Linear Extension with MARS

Economic Motivation

Economic relationships frequently exhibit non-linearities: - Threshold effects: Different responses depending on variable levels - Asymmetries: Different adjustments for positive vs. negative deviations - Regime changes: Parameters varying with economic context

MARS captures these characteristics through adaptive basis functions without requiring a priori specification of the functional form.

MARS-ECM Model Specification

The non-linear model is specified as:

\[\Delta Y_t = f(\text{ECM1}_t, \Delta X_t, \Delta Y_{t-1}, \Delta X_{t-1}, \Delta Y_{t-2}) + \eta_t\]

where \(f(\cdot)\) is approximated by MARS as:

\[f(\mathbf{x}) = \beta_0 + \sum_{m=1}^{M} \beta_m \prod_{k=1}^{K_m} h_{km}(x_{v(k,m)})\]

with: - \(h_{km}\) are hinge functions: \(\max(0, x - c)\) or \(\max(0, c - x)\) - \(M\) is the number of basis functions (controlled by nk) - \(K_m\) is the interaction degree (controlled by degree)

Hyperparameter Configuration

The search grid specifies: - degree \(\in \{1, 2\}\): Controls interactions (1 = additive, 2 = allows interactions) - nk \(\in \{15, 25, 35, 50, 65\}\): Maximum number of terms before pruning

This grid balances flexibility with overfitting risk, expandable with more historical data.

Temporal Cross-Validation

Rolling-Origin with Sliding Window

We implement temporal cross-validation respecting causality through rolling-origin with sliding window:

Configuration Parameters

  • Initial size: \(\max(40, 0.80 \times n)\) observations
  • Test horizon: 12 months (annual forecast)
  • Step between origins: 12 months (avoids overlap)
  • Window type: Sliding (constant size) vs Expanding (cumulative)

Sliding Window Justification

The sliding window maintains “comparable memory” between folds and is more sensitive to regime changes than the expanding window. This is crucial for economic series with non-constant parameters in a broad sense. Empirical evidence shows that sliding:

  1. Preserves global stability (same number of robust models)
  2. Increases local sensitivity (detects more regime-dependent relationships)
  3. Improves adaptation to recent dynamics

Nested Cross-Validation

For hyperparameter selection without contaminating evaluation:

  1. Outer level: Rolling-origin for performance evaluation
  2. Inner level: Within each outer train, additional rolling-origin with:
    • Initial: 60% of outer train
    • Inner test: 6 months
    • Inner step: 3 months

This structure avoids data snooping[^2] and provides unbiased estimates of generalization error.

Evaluation Metrics

Scale-Dependent Metrics

  • RMSE: \(\sqrt{\frac{1}{n}\sum_{t=1}^n (Y_t - \hat{Y}_t)^2}\)
  • MAE: \(\frac{1}{n}\sum_{t=1}^n |Y_t - \hat{Y}_t|\)

Relative Metrics

  • MAPE: \(\frac{100}{n}\sum_{t=1}^n \left|\frac{Y_t - \hat{Y}_t}{Y_t}\right|\) (protected for \(|Y_t| > \epsilon\))
  • sMAPE: \(\frac{100}{n}\sum_{t=1}^n \frac{2|Y_t - \hat{Y}_t|}{|Y_t| + |\hat{Y}_t|}\)
  • Theil’s U: \(\frac{\sqrt{\overline{(Y_t - \hat{Y}_t)^2}}}{\sqrt{\overline{Y_t^2}}}\)

Explanatory Metric

  • Protected \(R^2\): \[R^2 = \begin{cases} 1 - \frac{\sum(Y_t - \hat{Y}_t)^2}{\sum(Y_t - \bar{Y})^2} & \text{if } SST > \epsilon \\ \text{NA} & \text{if } SST \leq \epsilon \end{cases}\]

Theil Decomposition

The MSE decomposes into interpretable components:

\[\text{MSE} = \underbrace{(\bar{\hat{Y}} - \bar{Y})^2}_{\text{Bias}^2} + \underbrace{(\sigma_{\hat{Y}} - \sigma_Y)^2}_{\text{Var. differential}} + \underbrace{2\sigma_{\hat{Y}}\sigma_Y(1 - \rho_{\hat{Y},Y})}_{\text{Imperfect covariance}}\]

The proportions (bias_prop, var_prop, cov_prop) diagnose the primary source of predictive error.

Temporal Stability Criteria

Support Metric

We define support as:

\[\text{support} = \frac{\text{folds\_proceed}}{\text{folds}}\]

where folds_proceed counts folds that pass all econometric filters and have acceptable predictive performance.

Validation Thresholds

  • Strict threshold: support \(\geq 0.75\) and folds_proceed \(\geq 5\)
  • Moderate threshold: support \(\geq 0.60\) and folds_proceed \(\geq 3\)

The absolute minimum requirement prevents “false robustness” from small denominators.

Stability-Adjusted Metrics

  • Stable \(R^2\): \(R^2_{\text{stab}} = R^2 \times \text{support}\)
  • Stable U: \(U_{\text{stab}} = \frac{U}{\text{support}}\) (penalizes instability)

These metrics integrate predictive performance with temporal consistency, favoring “good and constant” models over “sometimes excellent” ones.

Computational Implementation

Multi-Level Parallelization

The parallelization architecture operates at two levels:

  1. Pair level: Each combination \((X \to Y)\) is processed in an independent worker
  2. BLAS control: blas_set_num_threads(1) is set to avoid CPU over-subscription

Workers are independent R processes (not threads) coordinated by future::multisession, each with its own memory. The seed future.seed=TRUE ensures reproducibility in parallel.

Progress Management

The progressr package provides real-time feedback without interfering with parallelization, crucial for long executions (84 pairs × multiple folds × nested validation).

Computational Complexity

Total complexity is:

\[\mathcal{O}(N_{\text{pairs}} \times F_{\text{outer}} \times F_{\text{inner}} \times G \times C_{\text{model}})\]

where: - \(N_{\text{pairs}} = 84\) (6 circulation × 7 production × 2 directions) - \(F_{\text{outer}}\) = number of outer folds (typically 8-15) - \(F_{\text{inner}}\) = inner folds per outer fold (typically 3-5) - \(G\) = grid size