Decide a disclosure policy for UK subnational breakdowns, and measure how far they can be split by nation and English region
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
Rechercherichtung
Start by reading docs/engineering/skills/microdata-weights.md, the implementation of compute_uk_geography_disclosure, and src/modal/segmented_national.py; then measure run time and peak memory for the proposed splits on Modal, including the local-area file download. Document a disclosure policy and a recommendation based on those measurements, and open follow-up implementation issues if needed.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Context
#881 adds UK local-area breakdowns (breakdown=local_areas). A breakdown runs on the Microcosm local-area dataset and applies the disclosure control from #860 (.py's compute_uk_geography_disclosure). That control withholds areas with too few survey households, and areas whose values could be worked out from published totals.
In his review of #881 (https://github.com/PolicyEngine/policyengine-sim-api/pull/881#pullrequestreview-5628345214), Pavel pointed out that a region=uk breakdown and a region=country/* breakdown each make their own withholding decisions over the same households. An area withheld in one release can appear in the other, and a user can request both, for example by opening a UK-wide report and a Scotland report for the same reform and year.
This isn't blocking #881, but it should be settled before nation breakdowns are widely used. That happens once the Public API PR PolicyEngine/policyengine-api#4024 is merged.
1. Decide a disclosure policy for subnational results
Questions to answer:
- Repeated releases. Is it acceptable for the same areas to be published from more than one release (UK-wide, per nation, per English region), each with its own withholding decisions? If not, what's the rule? For example: every published area comes from one UK-wide release.
- Differencing. Which combinations can a user request, and could combining them recover withheld values? Cases include:
- UK-wide against nation releases;
- releases for different years;
- single-area reports (
constituency/*,local_authority/*) against breakdowns; - published national or nation totals.
- External guidance. What does statistical disclosure guidance (for example, ONS guidance, and any terms attached to the survey data behind Microcosm) say about repeated or overlapping releases?
- The current settings. Are #860's settings (200 bootstrap replicates, at most 25 resolution rounds, the published fields and their rounding) still right under that policy?
Known option (Pavel's suggestion): run every breakdown UK-wide and filter it to the requested nation's areas.
- Accuracy: each household's result doesn't depend on which other households are in the run, and filtering by nation keeps the same weights, so an area's averages are the same either way. Only the withholding decisions and the bootstrap ranges differ.
- Cost: a Wales, Scotland or Northern Ireland breakdown runs the whole UK local-area file.
- Possible bonus: the Public API could then send every breakdown as
region=ukand filter the result itself, so a UK-wide report and all four nation reports share one cached run.
Done when: a written decision on the policy, added to docs/engineering/skills/microdata-weights.md or a new disclosure document, with follow-up implementation issues opened.
2. Measure how far breakdowns can be split by nation and English region
A UK-wide breakdown currently builds one baseline and reform pair over every household in the local-area file. That took about 70–90 s and 12 GiB peak memory when measured locally on #881, and the Modal figures aren't measured yet. Work out how much faster or lighter it could be if it were split into parallel pieces, for example by nation, or by English region (the nine E12… regions in region_code_oa) plus Wales, Scotland and Northern Ireland.
Questions to answer:
- Measurements. What are the run time and peak memory per nation and per English region on Modal, compared with one UK-wide run? Include the cold-start download of the local-area file.
- Splitting the computation, not the disclosure. Can the simulations run in parallel by region, with disclosure control applied once over the combined household-level outputs, so the release stays a single one? Which parts of
compute_uk_geography_disclosureneed the whole UK at once? For example: the resolution rounds, and areas whose values could be worked out from regional or national totals. - Reuse. Can the US segmented-national path (
src/modal/segmented_national.py) be reused or generalised for the UK? - Data and limits. Are there constraints from the data (areas that cross region boundaries, households with unassigned codes) or from Modal (concurrency and memory limits)?
Done when: measured numbers for the main split options, and a recommendation on whether to implement one, opened as its own issue if so.
Related
- #881: UK local-area breakdowns
- #860 and #859: disclosure-controlled UK geography outputs
- PolicyEngine/policyengine-api#4024: the Public API side
- PolicyEngine/policyengine-app-v2#1398: the app's Compute button
- Vorherrschende Sprache
- Python
- Sterne
- 1
- Forks
- 1
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 77
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
-
Accept the withheld-area code lists on UK local-area breakdown results before any executor sends themEvtl. vergeben @anth-volk hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
PolicyEngine/policyengine-sim-api#977 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Update policyengine to 6.11.1Evtl. vergeben @policyengine hat das vor 2 Tagen übernommen. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 68/100
PolicyEngine/policyengine-sim-api#916 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Update policyengine to 6.7.3Evtl. wieder frei Ein Pull Request dazu wurde ohne Merge geschlossen. Offen
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 70/100
PolicyEngine/policyengine-sim-api#823 ·
Maintainer antworten meist innerhalb von 1 Tag
-
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
-
Move the changelog to Towncrier fragments and build CHANGELOG.md at each deployEvtl. vergeben @anth-volk hat das heute übernommen. Offen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
PolicyEngine/policyengine-sim-api#978 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in PolicyEngine/policyengine-sim-api
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
Maintainer antworten meist innerhalb von 1 Tag
-
[oblt-aw][autodoc] Document obs-aw-automerge contract and fix automerge doc inconsistenciesEvtl. vergeben @github-actions hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
admission-deferred priority: medium status: ready work-class: scoped
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
melodic-software/claude-code-plugins#10887 · 4 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
backend bug good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
PoCInnovation/Distribox#255 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
google/langextract#598 ·
Maintainer antworten meist innerhalb von 1 Tag