# Research 02: reproduction package
Ukraine / PISA 2025. Analysis snapshot: 12 September 2026.
This archive contains aggregate estimates and code, not student microdata.

1. Download the official OECD Student archive:
https://webfs.oecd.org/pisa2022/2025/CY09_MS_STU_PUF.zip
Database: https://www.oecd.org/en/data/datasets/pisa-2025-database.html
2. Extract CY09_MS_STU_PUF.sav with a Deflate64-compatible tool.
Put it in research-2/ukraine-education/pisa/ inside this unpacked package.
SAV size: 2,168,666,883 bytes.
SHA-256: 6f6fa1e1ecce23d39183d44ec82ba05b245fe88a2416c8d8dc1b016d556fc379
3. Use Python 3.12+ with numpy==2.5.3 pandas==3.0.5 pyreadstat==1.3.6.
A virtual environment is recommended. Allow several GB of disk space and memory.
4. From this package directory run:
python research-2/policy-research/pilot/run_pilot.py
python research-2/policy-research/pilot/run_sensitivity.py
python research-2/policy-research/verify_and_cost.py

Scripts overwrite their own derived reports. Original microdata are read only.
Country code: CNTRYID == '804'; expected 7,105 distinct student IDs.
run_pilot.py and run_sensitivity.py also accept --data /path/to/file.sav.
The independent verifier uses the relative directory stated above.
See research-2/policy-research/proposal.md and its pilot/README.md for
estimands, variance and limitations.

The website's 1,000-person example rescales weighted estimates. It is not a
real program. Outcomes are offers of places, not attendance or learning gains.
Diagnostic accuracy and screening costs are hypothetical scenarios.
