@@ -310,6 +310,14 @@ def poverty_impact(baseline: dict, reform: dict) -> dict:
310310 )
311311
312312
313+ def compute_income_change (baseline_values , reform_values ):
314+ """Percentage income change with a floor of 1 on the baseline
315+ to avoid division by zero for zero/negative incomes."""
316+ absolute_change = reform_values - baseline_values
317+ capped_baseline = np .maximum (baseline_values , 1 )
318+ return absolute_change / capped_baseline
319+
320+
313321def intra_decile_impact (baseline : dict , reform : dict ) -> dict :
314322 baseline_income = MicroSeries (
315323 baseline ["household_net_income" ], weights = baseline ["household_weight" ]
@@ -321,9 +329,9 @@ def intra_decile_impact(baseline: dict, reform: dict) -> dict:
321329 baseline ["household_count_people" ], weights = baseline_income .weights
322330 )
323331 decile = MicroSeries (baseline ["household_income_decile" ]).values
324- absolute_change = ( reform_income - baseline_income ). values
325- capped_baseline_income = np . maximum ( baseline_income .values , 1 )
326- income_change = absolute_change / capped_baseline_income
332+ income_change = compute_income_change (
333+ baseline_income .values , reform_income . values
334+ )
327335
328336 # Within each decile, calculate the percentage of people who:
329337 # 1. Gained more than 5% of their income
@@ -378,9 +386,9 @@ def intra_wealth_decile_impact(baseline: dict, reform: dict) -> dict:
378386 baseline ["household_count_people" ], weights = baseline_income .weights
379387 )
380388 decile = MicroSeries (baseline ["household_wealth_decile" ]).values
381- absolute_change = ( reform_income - baseline_income ). values
382- capped_baseline_income = np . maximum ( baseline_income .values , 1 )
383- income_change = absolute_change / capped_baseline_income
389+ income_change = compute_income_change (
390+ baseline_income .values , reform_income . values
391+ )
384392
385393 # Within each decile, calculate the percentage of people who:
386394 # 1. Gained more than 5% of their income
0 commit comments