Causal Inference Example: Measuring the Impact of a Tax Cut on Consumer Spending Using Difference-in-Differences (DiD)
Scenario
A government introduces a tax cut in Region A but not in Region B. You want to measure the impact of this tax cut on consumer spending. Data is available for both regions before and after the tax cut.
Solution
Step 1: Understand the DiD Methodology
Difference-in-Differences (DiD) is used to estimate causal effects by comparing the changes in outcomes over time between treated and untreated groups.
The model:
\[ Y_{it} = \beta_0 + \beta_1 \text{Post}_t + \beta_2 \text{Treated}_i + \beta_3 (\text{Treated}_i \times \text{Post}_t) + u_{it} \]Where:
- \(Y_{it}\): Outcome variable (e.g., consumer spending for region \(i\) at time \(t\)).
- \(\text{Post}_t\): Indicator for the post-treatment period (\(1\) if after tax cut, \(0\) otherwise).
- \(\text{Treated}_i\): Indicator for the treated group (\(1\) for Region A, \(0\) for Region B).
- \(\text{Treated}_i \times \text{Post}_t\): Interaction term representing the treatment effect.
- \(\beta_3\): The DiD estimator of the treatment effect.
Step 2: Data Setup
| Region | Time | Consumer Spending (\(Y\)) | Treated (\(Treated\)) | Post (\(Post\)) | Interaction (\(Treated \times Post\)) |
|---|---|---|---|---|---|
| A | Before | 100 | 1 | 0 | 0 |
| A | After | 120 | 1 | 1 | 1 |
| B | Before | 90 | 0 | 0 | 0 |
| B | After | 95 | 0 | 1 | 0 |
Step 3: DiD Estimation
Compute the average change in spending for each region:
1. Region A (Treated):
\[ \Delta Y_A = Y_{After, A} - Y_{Before, A} = 120 - 100 = 20 \]2. Region B (Control):
\[ \Delta Y_B = Y_{After, B} - Y_{Before, B} = 95 - 90 = 5 \]3. DiD Estimator:
\[ \text{Treatment Effect} = \Delta Y_A - \Delta Y_B = 20 - 5 = 15 \]The tax cut increased consumer spending by 15 units in Region A relative to Region B.
Step 4: Statistical Implementation
import statsmodels.api as sm
import pandas as pd
# Data
data = pd.DataFrame({
'Region': ['A', 'A', 'B', 'B'],
'Time': ['Before', 'After', 'Before', 'After'],
'Spending': [100, 120, 90, 95],
'Treated': [1, 1, 0, 0],
'Post': [0, 1, 0, 1]
})
data['Interaction'] = data['Treated'] * data['Post']
# Model
X = sm.add_constant(data[['Treated', 'Post', 'Interaction']])
y = data['Spending']
model = sm.OLS(y, X).fit()
print(model.summary())
The coefficient for Interaction (\(\beta_3\)) is the estimated treatment effect (15 in this example).
Step 5: Interpretation
- Key Result: The tax cut caused a significant increase in consumer spending in Region A compared to Region B by 15 units.
- Assumptions:
- Parallel trends: In the absence of the tax cut, spending in both regions would have followed the same trend.
- No other shocks affected only one region during the study period.

No comments:
Post a Comment