Run full-surface Populace L0 sweep - #15
Merged
Merged
Conversation
Restructure the presentation from 19 to ~28 sectioned slides, front-loaded on context per the proof-of-concept framing (open -> motivation -> data engine -> imputation mechanics -> Louizos foundation + our translation -> proof of concept -> close), targeting a 15/8 split of a ~23 min talk. - Comparison is now four methods, two families: informed L0 and L1 (convex sparse) vs random+reweight and survey-weight sampling (per l0-paper PR #10). - Add KaTeX for rigorous math; new AutoFitMath wrapper scales equations to fit their boxes so nothing overflows during a live talk; 3-term loss is multi-line. - Differentiate the two equation slides: slide 18 is the training objective, slide 22 is the shared evaluation loss with a four-method "held fixed" panel. - New PE-styled diagram components: GeographyHierarchy, FactAnatomy, FrameAnatomy, DonorFusion, RegimeQuantileViz, ScaleLadder, HardConcreteGate, TranslationTable. - ScaleLadder shows generation growth (survey spine -> 30M) then a prune step that drops below the generate-big peak. - Embed speaker headshot on the cover slide (optional headshot on SpeakerInfo). - Add TALKING_POINTS.md: detailed per-slide bullets for the first half; the results half is stubbed and deferred until the final 4-way sweep numbers land. Verified: typecheck, lint, and production build all pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Update the presentation slides to the final four-way sweep (run 4way-l1-cap1, c=1): - Replace the result placeholders with the generated plots: f1_frontier (main result, slide 23), f3_generalization_gap (slide 24), and f6_operability (added to the operability slide). Add a Figure component that renders the PNGs at full size with no surrounding box, so the plots read large instead of small-in-a-card. - Fix the calibration-objective note to the production cap c=1 (was c=10); drop the "final sweep still pending" caveat on the experiment-design slide. - Geography slide: label the national level as the United States and note the same nesting applies to any country with its own subnational divisions. - "Four methods" slide: drop the two group labels (survey-weight fits then samples, so "sample, then fit" was wrong for it) and sharpen the ordering wording. - Operability slide: replace the three heavy cards with a compact left-accent list and widen the figure column so the graph leads. Talking points (TALKING_POINTS.md) left uncommitted for author review. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…; recompile PDF Talking points (presentation/TALKING_POINTS.md): - Align numbers and framing to the final four-way sweep (run 4way-l1-cap1, c=1). - Slide 18: explain the L2 penalty acts on weight magnitude, which keeps population mass spread across records and the effective sample size high. - Restructure the second half (slides 20-28) into the first half's KEY MESSAGE / SAY / TRANSITION format. - Frame classical calibrators (GREG, IPF, raking, balanced sampling) as related work and robustness checks, not baselines. Deck (presentation/slides/l0-ima-2026.tsx): - Tension slide: drop "calibrate" (the dataset is calibrated, not too large to calibrate). - Arch slide: 4.6k -> 4,393 active US targets, matching the paper. - Main frontier: state the median/mean split (baselines overtake on the median; informed L0 keeps the lower mean throughout). Paper (paper/sections/future_work.tex, paper/main.pdf): - Reframe future work for consistency with the expanded literature review: classical calibration methods are robustness checks on the categorical-margin subsets where their assumptions hold, not a full-surface GREG/IPF benchmark. Recompile main.pdf. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
`npm run export:pdf` drives headless Chromium over each `?slide=N` view, screenshots it at 1080p (2x), and assembles one PDF page per slide at the standard 16:9 size. Screenshots (not print-to-PDF) keep the output identical to the on-screen render (KaTeX, gradients, custom layout). Slide count is read from slides/config.ts (override with SLIDE_COUNT); SKIP_BUILD=1 reuses an existing build. One-time setup: `npm i -D playwright pdf-lib && npx playwright install chromium`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
"Ledger" is the public name of the arch-data fact store, so the deck and speaker notes now say Ledger everywhere the product is named (the literal arch-data repo name is unchanged). Renames the ArchSlide component to LedgerSlide and updates the data-engine section, the Ledger slide, FactAnatomy, and the talking points. The paper already uses Ledger. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Research result
The current best presentation result is the fixed L0-penalty run, not the earlier budget-sweep conclusion. With normalized L0 penalty share 0.8, L0 selects 57,240 records from the 337,704-household support and the no-L0 refit gives the lowest completed-run Populace objective loss among the sparse alternatives.
Final 1,500-epoch comparison:
Caveat: the dense no-L0 run was still slowly declining at 1,500 epochs, so the claim is about completed-run loss under the matched run budget, not a proof that dense no-L0 cannot eventually catch up.
Artifacts
Target-level diagnostics, metrics, manifests, and weights are attached to the prerelease asset:
https://github.com/PolicyEngine/l0-paper/releases/tag/l0-full-surface-results-20260630
Asset:
l0-full-surface-target-results-20260630.tar.gzSHA256:
fce2556f05753818e4eb09a0f15f60566488553cf64516dd2e4a2c66d8483502Notes
This branch includes the presentation branch history from PR #11 because the slides were updated to match the full-surface paper findings. If #11 merges first, GitHub should automatically shrink this PR diff to the remaining full-surface paper/code/results changes.
Checks
uv run ruff format --check src/l0_paper/cli/merge_runs.py src/l0_paper/cli/__init__.py src/l0_paper/cli/figures.py src/l0_paper/cli/paper.py src/l0_paper/cli/sweep.py src/l0_paper/experiments/artifacts.py src/l0_paper/experiments/conditions.py src/l0_paper/experiments/crunch.py src/l0_paper/experiments/metrics.py src/l0_paper/experiments/tables.py tests/test_end_to_end.py tests/test_experiments.pyuv run ruff check src/l0_paper/cli/merge_runs.py src/l0_paper/cli/__init__.py src/l0_paper/cli/figures.py src/l0_paper/cli/paper.py src/l0_paper/cli/sweep.py src/l0_paper/experiments/artifacts.py src/l0_paper/experiments/conditions.py src/l0_paper/experiments/crunch.py src/l0_paper/experiments/metrics.py src/l0_paper/experiments/tables.py tests/test_end_to_end.py tests/test_experiments.pyuv run pytest tests/test_experiments.py tests/test_end_to_end.py -qquarto render paper/index.qmd --to htmlquarto render paper/index.qmd --to pdfcd presentation && npm run typecheckcd presentation && npm run lintcd presentation && npm run buildcd presentation && npm run export:pdf