How to Run Causal Inference

This guide explains how to measure lift (the actual causal effect) post-experiment using SparseSC.

Running Inference via CLI

Packaged-install example:

geosc infer --config /path/to/geolift_analysis_config.yaml --create-plots

Source-checkout example with the shipped demo config:

geosc infer --config data-config/geolift_analysis_config.yaml --create-plots

Key Flags

  • --data: (Optional) Override the CSV path specified in the YAML.
  • --create-plots / --no-create-plots: Toggle generation of visualization artifacts.

Built wheel and sdist installs do not include data-config/, so packaged users should provide their own YAML path.

Expected Outputs

  • geolift_results.json: Top-level statistical results including status, ATT, p-value, and confidence interval metadata.
  • geolift_diagnostics.json: Schema-shaped diagnostic metrics for the synthetic control fit. Raw synthetic-control frames and raw weight matrices are not persisted.
  • data_validation.json: Input contract report covering duplicate rows, raw outcome value checks, input/model panel missingness, finite-value checks, and any explicit handling policy.
  • assumption_validation.json: Parallel-trends and spillover check report, or a skipped-status artifact when checks are disabled.
  • uplift_timeseries.png: Visual comparison of the treatment unit vs. the synthetic control over time.

Check status before interpreting lift. A partial result means the estimator returned some core quantities but uncertainty fields are incomplete. A failed result causes the CLI to exit non-zero. Also check assumption_status: skipped means interpretability checks were not run; fail or error means the causal interpretation needs review even if the effect estimate exists.

Example Plot

The source-checkout demo workflow ships an uplift time-series plot that works well as documentation context:

Example uplift time series Example uplift time series