budget.households is the sum of squared household weights
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 20/100
Rechercherichtung
Start in simulation_output_budget.build_budgetary_impact and inspect how _sum_output_variable handles the household MicroDataFrame and its household_weight column. The existing test test_builder_budgetary_impact_uses_materialized_columns_and_uk_state_tax_zero uses plain DataFrames; add coverage with a real MicroDataFrame and verify the household count is 3 for weights [1, 2]. An open linked pull request (#767) is already addressing this issue.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Problem
The economy comparison's budget.households is the sum of squared household weights, not the household count. It is about 10⁴ times too high on every run, national and state:
Run (/us/economy/{reform}/over/2) |
budget.households |
Actual households |
|---|---|---|
region=state/ny, 2026 |
135,597,233,840 | ~7.5 million |
region=state/ca, 2026 |
197,620,236,261 | ~13.5 million |
region=state/va, 2027 |
44,192,009,994 | ~3.3 million |
Cause
simulation_output_budget.build_budgetary_impact sets households=_sum_output_variable(baseline, "household_weight", entity="household").
_sum_output_variable returns float(data[variable].sum()). Here data is the household MicroDataFrame, which policyengine weights by household_weight. So data["household_weight"] is a weighted MicroSeries, and its .sum() is Σ w × w.
Weights [1, 2] give 5.0 instead of 3.0. The existing test (test_builder_budgetary_impact_uses_materialized_columns_and_uk_state_tax_zero) uses plain pd.DataFrames, so it never caught this.
This came in with 36d3be0 ("adapt simulation worker to PolicyEngine v4 outputs").
The other budget fields are correct. They are meant to be weighted sums.
Impact
Clients divide by this field. For example, policyengine-app-v2 computes the headline average change per household as -budget.budgetary_impact / budget.households. That number is therefore about 10⁴ times too small on every report.
Fix
Count entities with a plain sum of their weight column, and test it on a real MicroDataFrame.
- Vorherrschende Sprache
- Python
- Sterne
- 1
- Forks
- 1
- Ø Merge
- 1 T. 4 Std.
- Gemergte PRs (30 T.)
- 27
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus PolicyEngine/policyengine-sim-api
-
Integration tests fail due to missing UV virtual environment setupEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
PolicyEngine/policyengine-sim-api#314 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Update policyengine to 6.3.4Evtl. vergeben @policyengine hat das heute übernommen. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 40/100
PolicyEngine/policyengine-sim-api#796 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Segmented US national runs wait on stuck regional children until the parent times outEvtl. vergeben @anth-volk hat das heute übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
PolicyEngine/policyengine-sim-api#794 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Stage 12 coordinator can outlive its timeout while waiting and leaves workers runningEvtl. vergeben @anth-volk hat das heute übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 20/100
PolicyEngine/policyengine-sim-api#792 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Stage 12 failure records keep only the exception class nameEvtl. vergeben @anth-volk hat das heute übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 25/100
PolicyEngine/policyengine-sim-api#790 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in PolicyEngine/policyengine-sim-api
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Deltares/imod-python#1940 ·
Maintainer antworten meist innerhalb von 1 Tag
-
effort: low prio: low ready
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 82/100
digitalfabrik/integreat-cms#4621 ·
Maintainer antworten meist innerhalb von 5 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
ioos/compliance-checker#1375 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag