Skip to content
Research2 min read

Comparison of Augmented Synthetic Control Method (ASCM)

This notebook presents the ascm comparison research workflow and key analysis steps.

Comparison of Augmented Synthetic Control Method (ASCM)

This notebook compares the implementation of Augmented Synthetic Control in causalis and pysyncon.

This notebook presents the ascm comparison research workflow and key analysis steps.

Data Generation

We use the generate_scm_gamma_26 function to generate synthetic panel data.

Result

Ground-truth ATTE is 1.919269

unit_idcalendar_timetreated_timeyy_cftau_realized_truemu_cfmu_treatedtau_mean_true
0donor_12000-0109.9716119.9716110.010.05908110.0590810.0
1donor_12000-02010.34437910.3443790.010.09746710.0974670.0
2donor_12000-03010.99849810.9984980.011.35409811.3540980.0
3donor_12000-04011.50871711.5087170.011.27771611.2777160.0
4donor_12000-05011.12528111.1252810.010.09879110.0987910.0

CKit (causalis) ASCM

We use the AugmentedSyntheticControl model with lambda_aug=50.

Result

Causalis ATTE: 3.945634

value
field
estimandaverage_post_effect
modelAugmentedSyntheticControl
inferenceaverage_att_ttest
value3.9456 (ci_abs: 0.3664, 7.5249)
value_relative16.0707 (ci_rel: 1.4922, 30.6491)
alpha0.0500
p_value0.0417
is_significantTrue
post_outcome_d_mean28.3185
pointwise_post_period_average3.7668
effect_by_time[{'period': 2003-02, 'estimate': 3.32949405792...
cumulative_effect22.6007
n_significant_periods0
n_donors40
n_pre_periods37
n_post_periods6
time2026-03-14

PySyncon ASCM

We prepare the Dataprep object and fit the AugSynth model.

Result

PySyncon ATTE: 3.766599

Results Comparison

Result

Method ATTE Error 0 Ground Truth 1.919269 0.000000 1 Causalis 3.945634 2.026365 2 PySyncon 3.766599 1.847330

Explanation of Discrepancies

The estimates differ because:

  1. Time Period Alignment: causalis automatically correctly identifies the pre-treatment period for the treated unit. In pysyncon, manually specifying pre_periods requires filtering by the treated unit to avoid including periods where donors are "pre-treatment" but the treated unit is already treated.
  2. De-meaning (Intercept): pysyncon performs row-wise (cross-sectional) de-meaning by the donor average at each time point before applying Ridge. This effectively includes a time-specific intercept αt\alpha_t. This also alters the direction of the Ridge penalty.
  3. Constraint Specification: causalis explicitly enforces the sum-to-one constraint on augmented weights via a Lagrange multiplier in the original space, while pysyncon relies on cross-sectional de-meaning to satisfy the constraint (which is mathematically equivalent to solving with an intercept).