From 20292bf7b2035410989ea3ac8ca7197bef217d04 Mon Sep 17 00:00:00 2001 From: "PolicyEngine[bot]" Date: Wed, 28 Dec 2022 14:26:50 +0000 Subject: [PATCH] Fix bug in intra-decile chart --- changelog_entry.yaml | 4 ++++ policyengine_api/compute_api/compare.py | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..a8e37da51 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: patch + changes: + fixed: + - Negative income handling in the intra-decile chart. diff --git a/policyengine_api/compute_api/compare.py b/policyengine_api/compute_api/compare.py index 7b2498d23..450dde9fd 100644 --- a/policyengine_api/compute_api/compare.py +++ b/policyengine_api/compute_api/compare.py @@ -136,9 +136,14 @@ def intra_decile_impact(baseline: dict, reform: dict) -> dict: baseline["household_count_people"], weights=baseline_income.weights ) decile = MicroSeries(baseline["household_income_decile"]).values - income_change = ( - np.maximum(reform_income, 1) / np.maximum(baseline_income, 1) - 1 + absolute_change = (reform_income - baseline_income).values + capped_baseline_income = np.maximum(baseline_income.values, 1) + capped_reform_income = ( + np.maximum(reform_income.values, 1) + absolute_change ) + income_change = ( + capped_reform_income - capped_baseline_income + ) / capped_baseline_income # Within each decile, calculate the percentage of people who: # 1. Gained more than 5% of their income