# Default (North as reference - first alphabetically)result_north = leanfe( data=df, formula="y ~ treatment + x1 + i(region, ref='North') | firm_id + year", vcov="iid")# South as referenceresult_south = leanfe( data=df, formula="y ~ treatment + x1 + i(region, ref='South') | firm_id + year", vcov="iid")print("North as reference:")for var, coef in result_north['coefficients'].items():if'region'in var:print(f" {var}: {coef:.4f}")print("\nSouth as reference:")for var, coef in result_south['coefficients'].items():if'region'in var:print(f" {var}: {coef:.4f}")
North as reference:
region_East: 2.0151
region_South: 1.5076
region_West: -0.4758
South as reference:
region_East: 0.5434
region_North: -1.4636
region_West: -1.9465
Interactions: Heterogeneous Effects
# Generate data with heterogeneous treatment effectsnp.random.seed(123)treatment = np.random.binomial(1, 0.3, n_obs).astype(float)# True effects: North=2.0, South=3.0, East=1.0, West=2.5het_effects = {"North": 2.0, "South": 3.0, "East": 1.0, "West": 2.5}treatment_effect = np.array([het_effects[r] for r in region]) * treatmentdf_het = df.with_columns([ pl.Series("treatment", treatment), pl.Series("y", treatment_effect +1.5* df["x1"].to_numpy() + firm_fe + year_fe + np.random.normal(0, 1, n_obs))])result_het = leanfe( formula="y ~ treatment:i(region) + x1 | firm_id + year", data=df_het, vcov="iid")print("Heterogeneous treatment effects:")print("(True: North=2.0, South=3.0, East=1.0, West=2.5)")for var, coef in result_het['coefficients'].items():if'treatment'in var and'region'in var:print(f" {var}: {coef:.4f}")