vccs
Vue 3용 차트 컴포넌트 모음, Recharts에서 포팅
PolicyEngine·Populace 추정치를 외부 분석과 비교한 점수표, 예: Urban Institute 안전망 현황
Scorecard comparing PolicyEngine/Populace estimates against external analyses — instance 1: Urban Institute's State of the Safety Net
데이터Python · HTMLGitHub @PolicyEngine온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A template for comparing PolicyEngine/Populace estimates against every
external score or analysis the model can plausibly run — as a filterable,
honest scorecard. Every external number appears alongside its PolicyEngine
counterpart with the delta and any concept-mismatch annotation; the misses
stay on the page.
Instance 1: Urban Institute's State of the Safety
Net — nine programs
(SNAP, SSI, TANF, WIC, CCDF, housing, LIHEAP, EITC, refundable CTC) ×
eligibility/participation metrics × US + 50 states + DC + demographic
subgroups, plus the SPM poverty full-participation counterfactual.README 전문 보기 ↗A template for comparing PolicyEngine/Populace estimates against every external score or analysis the model can plausibly run — as a filterable, honest scorecard. Every external number appears alongside its PolicyEngine counterpart with the delta and any concept-mismatch annotation; the misses stay on the page.
Instance 1: Urban Institute's State of the Safety Net — nine programs (SNAP, SSI, TANF, WIC, CCDF, housing, LIHEAP, EITC, refundable CTC) × eligibility/participation metrics × US + 50 states + DC + demographic subgroups, plus the SPM poverty full-participation counterfactual.
sources/<source-id>/
source.json registry entry: what the source is, method, period
raw/ the source's own published data, as fetched
adapter.py raw → tidy external rows (one schema for all sources)
annotations.json concept-mismatch annotations; every one traces to
docs/, engine metadata, or a measured diagnostic
pipeline/
compute_counterparts.py PE metrics on the certified Populace artifact
(policyengine.py managed_microsimulation, Build P)
build_comparison.py join + derive rates/deltas → data/comparison.json
app/ the scorecard UI (bun + vite + react + ui-kit)
docs/ replication assessment + engine mechanics audit
Tidy row schema: {source, program, metric, subgroup, variant, geography, unit_concept, period, value}. The PE side emits weighted counts only;
every rate and delta is derived in one place (build_comparison.py).
Status taxonomy — honesty made structural:
| status | meaning |
|---|---|
comparable | PE measures the same concept |
constructed | PE approximates the concept via a documented construction |
concept_mismatch | PE value exists but measures a different concept |
pe_gap | the model/artifact cannot produce this today |
not_computed | producible but not yet in the pipeline |
suppressed | the source suppressed the cell |
The scorecard's second claim class, baseline_moment: current-law
statistics published by external modelers, captured with the same
honesty machinery as reform scores. First population: average US
tariff rates —
weighted_etr): effective
statutory rates × fixed 2024 import weights, vintage pinned at the
2026-06-09 publication (commit 39d394d).concept_mismatch
counterpart by design, with the fixed-base-vs-contemporaneous gap
annotated; same-construct replications (our rates under each
tracker's own definition) are the staged next counterparts, and
by-authority decomposition arrives with the full-schedule rate
generator (P5 charter).Pipeline (additive; does not touch the Instance-1 build):
python sources/yale-tariff-tracker/adapter.py
python sources/tpc-tariffs/adapter.py
python pipeline/compute_tariff_counterparts.py # parquet if present, else the committed extract
python pipeline/build_moments.py # -> app/public/data/moments.json
Python side (requires the policyengine.py-managed environment; heavy — respect the machine-wide sim lock):
python sources/urban-sotsn/adapter.py
simlock -- .venv-pe/bin/python pipeline/compute_counterparts.py
python pipeline/build_comparison.py
UK side (#40; adapters are stdlib-only except ukmod-stats, which needs pypdf; the compute stage needs the managed policyengine-uk environment and the certified populace-uk bundle):
python sources/dwp-takeup/adapter.py # + hbai-poverty, hmrc-personal-tax,
python sources/obr-welfare/adapter.py # ukmod-stats
simlock -- .venv-pe/bin/python pipeline/compute_uk_counterparts.py 2025
The single positional argument is the policy year (default 2025); both the baseline and fullpart runs always execute, and the script aborts rather than writing output if any take-up-validated benefit fails to move under the fullpart overrides — the movement check is per benefit, so one benefit responding never blesses another's unchanged caseload.
App:
cd app && bun install && bun dev
The application is connected to the policyengine-scorecard Vercel project
through Vercel's native GitHub integration. Vercel builds from app/ while
including the repository-level data used by the application's prebuild
script. Pull request branches receive preview deployments, and commits on
main create production deployments. The deployed application is served at
/scorecard/.
See docs/ARCHITECTURE.md — the registry/adapter contract and the divergence-diagnosis stage that classifies each material delta as PE gap, external-model issue, concept mismatch, or data vintage, and drafts the fix.