budget.households is the sum of squared household weights
维护者通常 1 天内回复
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 20/100
调研方向
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.
由索引模型根据 Issue 内容生成。
描述
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.
- 主要语言
- Python
- 星标
- 1
- 派生
- 1
- 平均合并
- 1 天 7 小时
- 30 天内合并 PR
- 40
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
PolicyEngine/policyengine-sim-api 的其他 Issue
-
Integration tests fail due to missing UV virtual environment setup可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭
难度 2/5 1-3 小时 新手友好度 65/100
PolicyEngine/policyengine-sim-api#314 ·
维护者通常 1 天内回复
-
Update policyengine to 6.4.3可能已有人在做 @policyengine 今天认领。 未关闭
难度 1/5 1-3 小时 新手友好度 35/100
PolicyEngine/policyengine-sim-api#812 ·
维护者通常 1 天内回复
-
Update policyengine to 6.4.2可能已有人在做 @policyengine 今天认领。 未关闭
难度 1/5 1 小时以内 新手友好度 40/100
PolicyEngine/policyengine-sim-api#810 ·
维护者通常 1 天内回复
-
Register weighted-microdata rules: weights aren't values可能已有人在做 @anth-volk 今天认领。 未关闭
难度 4/5 3-5 天 新手友好度 30/100
PolicyEngine/policyengine-sim-api#806 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 25/100
PolicyEngine/policyengine-sim-api#805 ·
维护者通常 1 天内回复
查看 PolicyEngine/policyengine-sim-api 的全部 Issue
相似的 Issue
-
`burr` fails to start when the Python path has a space in it可能已有人在做 @enekoreto 今天认领。 未关闭status/needs-triage
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 5 天内回复
-
难度 1/5 1 小时以内 新手友好度 72/100
-
难度 2/5 半天 新手友好度 72/100
debpalash/VoiceStudio#2903 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
dagster-io/community-integrations#367 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 74/100
aws-samples/sample-per-model-bedrock#243 ·
维护者通常 1 天内回复