Causal Inference

Evaluating the Impact of Infrastructure: A Beginner's Guide to Difference-in-Differences with the Jamuna Bridge

When a major bridge connected millions of people in northwest Bangladesh to the capital in 1998, did the region's economy take off? This beginner-friendly Python tutorial uses satellite images of nighttime lights to compare the connected region with a similar one that stayed isolated, before and after the bridge opened.

Bayesian Spatial Synthetic Control in Python: California's Proposition 99 with scspill and mlsynth

Did the 1988 California tobacco law cut cigarette sales, and did it also affect neighboring states such as Nevada? This Python tutorial builds a look-alike California from other states in three steps, the last one letting nearby states be affected too, and finds that the drop in California holds up. It comes with an interactive app that runs in your web browser.

The Synthetic Control Ladder in Python: A Guided Tour of mlsynth on the Brexit Referendum

How much did the 2016 Brexit vote cost the British economy? This Python tutorial builds a look-alike United Kingdom from other wealthy economies with six related methods, finds output about 3 percent lower by the end of 2018, and shows how default settings can quietly change the answer. It comes with an interactive app that runs in your web browser.

From DiD to SDID: A Ladder of Synthetic Control Estimators, and What Brexit Cost the UK

How much did the 2016 Brexit vote cost the economy of the United Kingdom? We build a look-alike United Kingdom from other rich countries, step by step through a ladder of increasingly flexible methods, and compare what each step says. This R tutorial includes cheat sheets for Stata and Python and an interactive app that runs in your web browser.

Do Industrial Parks Work? Evaluating Place-Based Policy in Ethiopia with Difference-in-Differences

Do industrial parks bring more economic activity to nearby towns, and who benefits? This Python tutorial compares places that got a park with places that did not, before and after it opened, using simulated data modeled on Ethiopia, and also looks at household welfare and outcomes for women. It comes with an interactive app that runs in your web browser.

Bouncing Back Better? Evaluating the Economic Impact of the Aceh Tsunami

How did the 2004 tsunami affect the economy of Aceh, Indonesia, over the long run? This beginner-friendly Python tutorial uses simulated data, nighttime lights, and several causal methods to compare damaged and undamaged areas before and after the disaster.

The Augmented Synthetic Control Method: A Beginner's Tutorial with the Kansas Tax Cuts

Did the large 2012 Kansas tax cut boost the state economy, or shrink it? This beginner R tutorial builds a look-alike Kansas from other states, then corrects the remaining mismatch, and finds output per person roughly 3 to 4 percent lower, although chance cannot be fully ruled out. It comes with an interactive app that runs in your web browser.

Staggered Synthetic Difference-in-Differences (SDID) in Stata: Gender Quotas and Women in Parliament

Do gender quotas raise the share of women in national parliaments? In Stata, we compare 9 countries that adopted quotas in different years with look-alike groups built from 110 countries without quotas, and find an average gain of about 8 percentage points that varies a lot across countries. The tutorial includes an interactive app that runs in your web browser.

Synthetic Difference-in-Differences (SDID) in Stata: Re-evaluating California's Proposition 99

Did the 1988 tobacco tax in California reduce smoking? In Stata, we compare three ways of building a comparison for California from other states, including a newer method that blends their strengths, and all three agree that cigarette sales fell, though by different amounts. It comes with an interactive app that runs in your web browser.

Double LASSO in Python: Does Abortion Reduce Crime?

Python companion to the R and Stata Double LASSO tutorials — same data, same five estimators, plus a hands-on introduction to the DoubleML library (DoubleMLPLR, DoubleMLIRM, and learner-robustness across LASSO, RandomForest, XGBoost).