| Type: | Package | 
| Title: | Causal Analysis for Macroeconomic Time Series (ECM-MARS, BSTS, Bayesian GLM-AR(1)) | 
| Version: | 1.0.2 | 
| Description: | Implements three complementary pipelines for causal analysis on macroeconomic time series: (1) Error-Correction Models with Multivariate Adaptive Regression Splines (ECM-MARS), (2) Bayesian Structural Time Series (BSTS), and (3) Bayesian GLM with AR(1) errors validated with Leave-Future-Out (LFO). Heavy backends (Stan) are optional and never used in examples or tests. | 
| VignetteBuilder: | knitr | 
| License: | MIT + file LICENSE | 
| Encoding: | UTF-8 | 
| Depends: | R (≥ 4.1) | 
| Imports: | brms, readxl, dplyr, tidyr, tibble, purrr, bsts, BoomSpikeSlab, tseries, urca, vars, progressr, future.apply, rlang, magrittr, parallel, stats, utils | 
| Suggests: | knitr, cmdstanr, rstan, future, RhpcBLASctl, rmarkdown, testthat (≥ 3.0.0) | 
| URL: | https://github.com/IsadoreNabi/EconCausal | 
| BugReports: | https://github.com/IsadoreNabi/EconCausal/issues | 
| Additional_repositories: | https://stan-dev.r-universe.dev | 
| RoxygenNote: | 7.3.3 | 
| Config/testthat/edition: | 3 | 
| Language: | en-US | 
| NeedsCompilation: | no | 
| Packaged: | 2025-10-01 21:20:48 UTC; ROG | 
| Author: | José Mauricio Gómez Julián [aut, cre] | 
| Maintainer: | José Mauricio Gómez Julián <isadore.nabi@pm.me> | 
| Repository: | CRAN | 
| Date/Publication: | 2025-10-08 08:40:24 UTC | 
Bayesian Generalized Linear Model with AR(1) Errors
Description
Implements a Bayesian GLM with autoregressive errors of order 1 for causal inference between economic variables, with emphasis on temporal stability through Leave-Future-Out cross-validation.
Usage
bglmar1(
  data_path,
  circ_vars,
  prod_vars,
  max_lag = 3,
  initial_frac = 0.7,
  initial_min = 90,
  test_h = 12,
  step_h = 12,
  lfo_window = "sliding",
  chains = 4,
  parallel_chains = 4,
  iter = 1500,
  warmup = 750,
  adapt_delta = 0.95,
  trees = 12,
  seed = 2025,
  support_min = 0.6,
  folds_min = 5,
  sup_hi = 0.7,
  sup_lo = 0.6,
  backend = c("auto", "rstan", "cmdstanr")
)
Arguments
data_path | 
 Path to Excel file containing the data  | 
circ_vars | 
 Character vector of circulation variable names  | 
prod_vars | 
 Character vector of production variable names  | 
max_lag | 
 Maximum number of lags for independent variables (default: 3)  | 
initial_frac | 
 Initial fraction of data for training (default: 0.7)  | 
initial_min | 
 Minimum number of observations for initial training (default: 90)  | 
test_h | 
 Test horizon in months (default: 12)  | 
step_h | 
 Step size between folds in months (default: 12)  | 
lfo_window | 
 Type of window for LFO ("sliding" or "expanding", default: "sliding")  | 
chains | 
 Number of MCMC chains (default: 4)  | 
parallel_chains | 
 Number of parallel chains (default: 4)  | 
iter | 
 Total iterations per chain (default: 1500)  | 
warmup | 
 Warmup iterations per chain (default: 750)  | 
adapt_delta | 
 Adapt delta parameter for NUTS (default: 0.95)  | 
trees | 
 Maximum tree depth for NUTS (default: 12)  | 
seed | 
 Random seed (default: 2025)  | 
support_min | 
 Minimum support threshold for stable relationships (default: 0.6)  | 
folds_min | 
 Minimum number of folds required (default: 5)  | 
sup_hi | 
 High support threshold (default: 0.7)  | 
sup_lo | 
 Low support threshold (default: 0.6)  | 
backend | 
 Backend for Stan compilation: "auto" (default), "rstan", or "cmdstanr". If "auto", the function uses 'rstan' when available, otherwise tries 'cmdstanr'.  | 
Details
This function implements a Bayesian GLM with AR(1) errors for assessing causal relationships between economic variables. It uses Leave-Future-Out cross-validation with sliding windows to evaluate temporal stability of relationships. The function no longer requires 'cmdstanr' at install time; if 'backend = "cmdstanr"' is requested but 'cmdstanr' (and a working CmdStan) are not available, it gracefully falls back to 'rstan'. In any case, heavy computations are not run in package examples or tests.
Value
A list containing:
bench_bayes | 
 Full results for all pairs  | 
winners_070 | 
 Pairs with support >= 0.70  | 
winners_060 | 
 Pairs with support >= 0.60  | 
rank_out | 
 Output from ranking function  | 
Examples
## Not run: 
# Example usage
result <- bglmar1(
  data_path = file.path(tempdir(), "data.xlsx"),
  circ_vars = c("TC_SPOT_CAN_US", "TC_SPOT_US_CAN", "TC_SPOT_US_REMB",
                "IPC", "TdI_LdelT", "TasaDescuento"),
  prod_vars = c("ValorExportaciones", "Real_Net_Profit", 
                "RealSocialConsumptionPerWorker2017", "RealWage_PPP2017",
                "CapitalStock_PPP2017", "LaborProductivity_PPP2017", 
                "InvestmentPerWorker_PPP2017"),
  backend = "auto"
)
## End(Not run)
Bayesian Structural Time Series Model
Description
Implements Bayesian Structural Time Series models with Leave-Future-Out validation for assessing causal relationships between economic variables with temporal stability.
Usage
bsts_model(
  data_path,
  circ_vars,
  prod_vars,
  max_lag = 6,
  lfo_init_frac = 0.8,
  lfo_h = 6,
  lfo_step = 6,
  niter = 2000,
  burn = 500,
  seed = 123,
  seasonality = NULL,
  support_min = 0.6,
  folds_min = 5,
  sup_hi = 0.7,
  sup_lo = 0.6,
  out_dir = NULL
)
Arguments
data_path | 
 Path to Excel file containing the data  | 
circ_vars | 
 Character vector of circulation variable names  | 
prod_vars | 
 Character vector of production variable names  | 
max_lag | 
 Maximum number of lags for independent variables (default: 6)  | 
lfo_init_frac | 
 Initial fraction for LFO (default: 0.8)  | 
lfo_h | 
 Horizon for LFO (default: 6)  | 
lfo_step | 
 Step size for LFO (default: 6)  | 
niter | 
 Number of MCMC iterations (default: 2000)  | 
burn | 
 Number of burn-in iterations (default: 500)  | 
seed | 
 Random seed (default: 123)  | 
seasonality | 
 Seasonality parameter (NULL for none, 12 for monthly)  | 
support_min | 
 Minimum support threshold (default: 0.6)  | 
folds_min | 
 Minimum number of folds required (default: 5)  | 
sup_hi | 
 High support threshold (default: 0.7)  | 
sup_lo | 
 Low support threshold (default: 0.6)  | 
out_dir | 
 Output directory for results (default: "output_bsts")  | 
Details
This function implements Bayesian Structural Time Series models for assessing causal relationships between economic variables. It uses Leave-Future-Out cross-validation with tuning between Local Level and Local Linear Trend specifications. The methodology is described in detail in the methodological document "DETALLES METODOLOGICOS SPACESTATE MODEL.docx".
Value
A list containing:
rank_ss_all | 
 Full results for all pairs  | 
winners_ss_070 | 
 Pairs with support >= 0.70  | 
winners_ss_060 | 
 Pairs with support >= 0.60  | 
summaries_ss | 
 Summary statistics  | 
Examples
## Not run: 
# Example usage
result <- bsts_model(
  data_path = file.path(tempdir(), "data.xlsx"),
  circ_vars = c("TC_SPOT_CAN_US", "TC_SPOT_US_CAN", "TC_SPOT_US_REMB",
                "IPC", "TdI_LdelT", "TasaDescuento"),
  prod_vars = c("ValorExportaciones", "Real_Net_Profit", 
                "RealSocialConsumptionPerWorker2017", "RealWage_PPP2017",
                "CapitalStock_PPP2017", "LaborProductivity_PPP2017", 
                "InvestmentPerWorker_PPP2017")
)
## End(Not run)
Error Correction Model with Multivariate Adaptive Regression Splines
Description
Implements a robust ECM benchmark with MARS enhancement for analyzing cointegration relationships between economic variables with temporal stability validation.
Usage
ecm_mars(
  data_path,
  circ_vars,
  prod_vars,
  cointeg_rule = "either",
  eg_p_cutoff = 0.05,
  ecm_p_cutoff = 0.05,
  lag_max_ecm = 4,
  min_tr = 20,
  min_te = 8,
  rolling_cv_enable = TRUE,
  rolling_cv_window = "sliding",
  rolling_cv_initial_frac = 0.8,
  rolling_cv_initial_min = 40,
  rolling_cv_test = 12,
  rolling_cv_step = 12,
  nested_tune = TRUE,
  nested_initial_f = 0.6,
  nested_test = 6,
  nested_step = 3,
  mars_grid = expand.grid(degree = c(1, 2), nk = c(15, 25, 35, 50, 65)),
  support_min = 0.75,
  folds_min_abs = 5,
  parallel_enable = TRUE,
  parallel_workers = max(1, parallel::detectCores() - 1)
)
Arguments
data_path | 
 Path to Excel file containing the data  | 
circ_vars | 
 Character vector of circulation variable names  | 
prod_vars | 
 Character vector of production variable names  | 
cointeg_rule | 
 Cointegration rule ("either" for EG or Johansen, "both" for both)  | 
eg_p_cutoff | 
 Significance level for EG/Phillips-Ouliaris test (default: 0.05)  | 
ecm_p_cutoff | 
 Significance level for lambda<0 test in linear ECM (default: 0.05)  | 
lag_max_ecm | 
 Maximum lags in DeltaY and DeltaX for linear ECM (default: 4)  | 
min_tr | 
 Minimum training rows for MARS (default: 20)  | 
min_te | 
 Minimum test rows (default: 8)  | 
rolling_cv_enable | 
 Whether to enable rolling CV (default: TRUE)  | 
rolling_cv_window | 
 Type of window for rolling CV ("sliding" or "expanding", default: "sliding")  | 
rolling_cv_initial_frac | 
 Initial fraction for rolling CV (default: 0.8)  | 
rolling_cv_initial_min | 
 Minimum initial observations (default: 40)  | 
rolling_cv_test | 
 Test horizon for rolling CV (default: 12)  | 
rolling_cv_step | 
 Step size for rolling CV (default: 12)  | 
nested_tune | 
 Whether to enable nested tuning (default: TRUE)  | 
nested_initial_f | 
 Initial fraction for nested tuning (default: 0.6)  | 
nested_test | 
 Test horizon for nested tuning (default: 6)  | 
nested_step | 
 Step size for nested tuning (default: 3)  | 
mars_grid | 
 Data frame with MARS tuning parameters  | 
support_min | 
 Minimum proportion of valid folds (default: 0.75)  | 
folds_min_abs | 
 Minimum absolute number of valid folds (default: 5)  | 
parallel_enable | 
 Whether to enable parallel processing (default: TRUE)  | 
parallel_workers | 
 Number of parallel workers (default: detectCores() - 1)  | 
Details
This function implements an Error Correction Model enhanced with Multivariate Adaptive Regression Splines for analyzing cointegration relationships between economic variables. It includes comprehensive temporal validation through rolling-origin cross-validation and nested tuning for MARS parameters. The methodology is described in detail in the methodological document "DETALLES METODOLOGICOS DE ECM-MARS2.docx".
Value
A data frame with evaluation results for all pairs
Examples
## Not run: 
# Example usage
result <- ecm_mars(
  data_path = file.path(tempdir(), "data.xlsx"),
  circ_vars = c("ER.SPOT.CAN.US", "ER.SPOT.US.CAN", "ER.SPOT.US.REMB",
                "CPI", "TreasuryBonds10y", "FedDiscountRate"),
  prod_vars = c("Exports", "RealNetProfit", "RealSocialConsumptionPerWorker2017",
                "RealWagePPP2017", "CapitalStockPPP2017",
                "LaborProductivityPPP2017", "InvestmentPerWorkerPPP2017")
)
## End(Not run)