Skip to content

Commit

Permalink
Fix EITC returns are incorrectly calibrated #97
Browse files Browse the repository at this point in the history
  • Loading branch information
nikhilwoodruff committed Oct 8, 2024
1 parent 1d8e6f3 commit a5f2796
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 5 deletions.
5 changes: 2 additions & 3 deletions changelog_entry.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
- bump: minor
changes:
added:
- EITC calibration by child counts.
- 10% dropout during weight calibration.
fixed:
- EITC calibration.
26 changes: 26 additions & 0 deletions policyengine_us_data/datasets/cps/cps.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ def generate(self):
raw_data.close()
self.save_dataset(cps)

add_takeup(self)


def add_rent(self, cps: h5py.File, person: DataFrame, household: DataFrame):
cps["tenure_type"] = household.H_TENURE.map(
Expand Down Expand Up @@ -114,6 +116,30 @@ def add_rent(self, cps: h5py.File, person: DataFrame, household: DataFrame):
cps["real_estate_taxes"][mask] = imputed_values["real_estate_taxes"]


def add_takeup(self):
data = self.load_dataset()

from policyengine_us import system, Microsimulation

baseline = Microsimulation(dataset=self)
parameters = baseline.tax_benefit_system.parameters(self.time_period)
generator = np.random.default_rng(seed=100)

snap_takeup_rate = parameters.gov.usda.snap.takeup_rate
data["takes_up_snap_if_eligible"] = (
generator.random(len(data["spm_unit_id"])) < snap_takeup_rate
)

eitc_takeup_rates = parameters.gov.irs.credits.eitc.takeup
eitc_child_count = baseline.calculate("eitc_child_count").values
eitc_takeup_rate = eitc_takeup_rates.calc(eitc_child_count)
data["takes_up_eitc"] = (
generator.random(len(data["tax_unit_id"])) < eitc_takeup_rate
)

self.save_dataset(data)


def uprate_cps_data(data, from_period, to_period):
uprating = create_policyengine_uprating_factors_table()
for variable in uprating.index.unique():
Expand Down
12 changes: 10 additions & 2 deletions policyengine_us_data/utils/loss.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,8 +208,16 @@ def build_loss_matrix(dataset: type, time_period):
)
eitc_eligible_children = sim.calculate("eitc_child_count").values
eitc = sim.calculate("eitc").values
if row["count_children"] < 2:
meets_child_criteria = (
eitc_eligible_children == row["count_children"]
)
else:
meets_child_criteria = (
eitc_eligible_children >= row["count_children"]
)
loss_matrix[returns_label] = sim.map_result(
(eitc > 0) * (eitc_eligible_children == row["count_children"]),
(eitc > 0) * meets_child_criteria,
"tax_unit",
"household",
)
Expand All @@ -219,7 +227,7 @@ def build_loss_matrix(dataset: type, time_period):
f"irs/eitc/spending/count_children_{row['count_children']}"
)
loss_matrix[spending_label] = sim.map_result(
eitc * (eitc_eligible_children == row["count_children"]),
eitc * meets_child_criteria,
"tax_unit",
"household",
)
Expand Down

0 comments on commit a5f2796

Please sign in to comment.