The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

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)

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.