from _api_doc_utils import *SyntheticDID
Synthetic difference-in-differences for balanced panels
1 Where it fits
Group: Causal inference
SyntheticDID combines donor-unit weights and pre-period time weights. It estimates counterfactual treated outcomes by reweighting both units and periods, then reports ATT and event-time summaries under the common fit(Y, W) panel contract.
2 Python API
Constructor: cm.SyntheticDID
Use SyntheticDID(zeta_omega=None, zeta_lambda=None, max_iterations=1000). fit(y, w) infers cohorts and donors. predict(), treatment_effect(), summary(), vcov(), and se() expose fitted counterfactuals and uncertainty helpers.
print(inspect.signature(cm.SyntheticDID))(zeta_omega=None, zeta_lambda=None, max_iterations=1000)
cls = cm.SyntheticDID
display(HTML(html_table(["Public method"], public_methods(cls))))| Public method |
|---|
fit(self, /, y, w) |
predict(self, /) |
se(self, /, method='bootstrap', replications=200, seed=None) |
summary(self, /) |
treatment_effect(self, /) |
vcov(self, /, method='bootstrap', replications=200, seed=None) |
3 Minimal example
rng=np.random.default_rng(17)
y=rng.normal(size=(9,13)); w=np.zeros_like(y); w[6:,8:]=1; y[6:,8:]+=0.7
model=cm.SyntheticDID(max_iterations=500); model.fit(y,w)
print(model.summary()["att"])
print(model.treatment_effect().shape)1.341684541503742
(9, 13)
4 summary() contract
The table below is generated by fitting the live class in this repository and then inspecting summary(). Shapes are shown because most values are plain NumPy arrays or scalars.
rng=np.random.default_rng(117); y=rng.normal(size=(8,12)); w=np.zeros_like(y); w[6:,8:]=1; y[6:,8:]+=.7
model=cm.SyntheticDID(max_iterations=300); model.fit(y,w)
summary = model.summary()
display(HTML(html_table(["summary() key", "shape"], summary_shape_rows(summary))))| summary() key | shape |
|---|---|
att |
() |
unit_weights |
(1, 8) |
time_weights |
(1, 12) |
counterfactual |
(8, 12) |
synthetic_outcome |
(8, 12) |
treatment_effect |
(8, 12) |
event_study |
() |
group_means |
() |
pre_rmse |
() |
unit_intercept |
(1,) |
time_intercept |
(1,) |
zeta_omega |
(1,) |
zeta_lambda |
(1,) |
control_units |
(6,) |
treated_units |
(2,) |
cohorts |
(1,) |