OpenRepro

← Back to the paper page

Replication record · arXiv:1905.03222

Conformalized Quantile Regression

Reproduced

Ran the authors' reproducible_experiments/run_experiment.py (commit 2b9b5c7, the last before arXiv v1) unchanged except for a one-line sklearn Imputer compatibility patch, on three bundled datasets with a rebuilt 2019-era Python 3.8 stack. All six registered per-dataset claims taken from Figures 4-5 landed within tolerance: CQR quantile-forest interval length 1.507 vs 1.55 (community) and 0.558 vs 0.56 (concrete), CQR quantile-net 1.856 vs 1.76 (community) and 0.570 vs 0.57 (bike), split-conformal RF 1.858 vs 1.94 (community, longer than CQR as reported), and every CQR cell averaged at least 89.26% coverage against the 90% nominal level. Splits were reduced from 20 to 5 (2 for bike), and the paper's headline Table 1 averages over all 11 datasets were not tested because MEPS and the larger UCI datasets were outside this attempt's data and CPU budget. Seven claims from an unrelated paper were registered by operator error and withdrawn as non-headline placeholders before any result (see note at event 43).

Plan. Registered before results were recorded; not sealed (legacy).

Qualifiers. Some claims were registered after command output had already been observed. The plan was never sealed (legacy attempt): claims were frozen only by their first result. At least one result was matched by the legacy rule rather than bound to an excerpt. At least one scored value was read from an excerpt the agent chose after seeing the output, not by a rule fixed before it.

Scored (headline)
5 of 5 consistent
Other checks
1 of 1 consistent
Deviations
4 (0 material)
Integrity flags
0
Logged compute
2.78 h over 24 commands and 3 jobs
Primary code (declared before the first recorded result)
github.com/yromano/cqr at 2b9b5c7d62de7f63af49e86fc570db5c2c77d637 (2019-05-03), the last commit on or before the arXiv v1 date 2019-05-08 (v1 is the only arXiv version). Experiments run through the authors' reproducible_experiments/run_experiment.py with its hard-coded settings.
Work tree when the attempt ended
yromano/cqr@2b9b5c7d62de in /work/cqr, 1 file(s) modified locally (see code-diff.patch)

Protocol

Declared before the first recorded result: primary code is github.com/yromano/cqr at 2b9b5c7d62de7f63af49e86fc570db5c2c77d637 (2019-05-03), the last commit on or before the arXiv v1 date 2019-05-08 (v1 is the only arXiv version). Experiments run through the authors' reproducible_experiments/run_experiment.py with its hard-coded settings.; earlier versions of the authors' code are not used. arXiv 1905.03222 has only v1 (8 May 2019); 2b9b5c7 is the last commit before it and already contains reproducible_experiments/ with the paper's hyper-parameters. Later commits (2019-06 bug fixes, 2022 MEPS cleaning fix, 2026 numpy fix) postdate the paper and are not used.

Claims

Conformal methods, including both CQR variants, attain the nominal 90% coverage; observed value is the LOWEST split-averaged test coverage among all CQR (method, dataset) cells run in this attempt.headline

Consistent
Paper 90 %Observed 89.26 %Accepted if at least 88
all methods based on conformal prediction successfully construct prediction bands at the nominal coverage rate of 90%

Section 6.2, p. 10 · quote verified on p. 10 · bound check · observed/published 0.9918 · registered at event 25, before the first recorded result (after command output had been observed)

Method, tolerance rationale and evidence

Metric. minimum over tested CQR (method, dataset) cells of mean test coverage (%) over random splits

Why this tolerance. Coverage >= 1-alpha is a finite-sample guarantee of the method, so the right test is one-sided (at_least). Split-averaged empirical coverage still fluctuates: on concrete (206 test points, ~412 calibration points) the per-split coverage SD is ~2.6 points, so a 10-20 split mean has SD ~0.6-0.8 points, and taking the minimum over up to 5 cells pushes it lower. A floor of 88% (2 points below nominal) is ~2.5-3 SD and would still catch a real failure of the guarantee such as the 88.51% undercoverage the paper reports for non-conformalized quantile nets.

Event 92. Observed 89.26, delta -0.74, consistent. Evidence events [86] (value matched by the legacy rule; not bound to an excerpt). Minimum over the five CQR (method, dataset) cells run (CQR RF community 90.53, CQR RF concrete 90.19, CQR Net community 89.87, CQR Net bike 89.26) of the split-averaged test coverage in percent. Split-conformal RF on community: 89.97; RF-local 90.13. Lowest single split for any CQR cell: 86.89 (CQR RF, concrete, split 4).

CQR with a quantile neural network gives average 90% interval length 0.57 on the bike sharing dataset (20 random 80/20 splits).headline

Consistent
Paper 0.57 rescaled response unitsObserved 0.5695 rescaled response unitsAccepted if within ±0.057
0.57 0.62 0.71 0.76 0.72 0.70 2.26 2.20 Avg. Length Avg. Coverage 0.5 1.0 1.5 2.0 80% 85% 90% 95% 100% CQR Neural Net CQR Random Forests Neural Net Local Neural Net Random Forests Local Random Forests Ridge Local Ridge bike

Figure 4 (bike panel), p. 15 · quote verified on p. 15 · equivalence check · observed/published 0.9991 · registered at event 26, before the first recorded result (after command output had been observed)

Method, tolerance rationale and evidence

Metric. average interval length on test set, mean over random splits, response rescaled by mean |y| of training set

Why this tolerance. The paper reports only the 20-split mean (rounded to 2 decimals) and shows split-to-split spread only as boxplots, so no numeric std is available. Tolerance is +/-10% of the paper value: it covers the standard error of a 10-20 split mean on these small datasets (split-level length std is typically 5-10% of the mean, so SE ~1-3%), unseeded/version-dependent NN and forest randomness from a 2026 rebuild of a 2019 stack, and 2-decimal rounding, while staying well below the 15-25% gaps between CQR and split conformal that the paper's comparison rests on. Figures 3-6 print 8 average lengths per dataset; the extracted text lists them in the fixed order CQR Neural Net, CQR Random Forests, Neural Net, Neural Net Local, Random Forests, Random Forests Local, Ridge, Ridge Local. This mapping was fixed BEFORE any run by averaging each position over the 11 datasets: the means (1.397, 1.407, 2.165, 1.805, 2.241, 1.823, 3.062, 2.944) reproduce Table 1 (1.40, 1.41, 2.16, 1.81, 2.24, 1.82, 3.06, 2.94); swapping any pair breaks the match.

Event 91. Observed 0.5695, delta -0.0005, consistent. Evidence events [86] (value matched by the legacy rule; not bound to an excerpt). Mean over splits 0-1 of the 'CQR Net' average test-interval length on bike from run_experiment(..., 'cqr_quantile_net', seed), averaged by summarize.py. Only 2 of 20 splits (0.580, 0.559): each bike split takes ~36-40 min on CPU.

CQR with a quantile neural network gives average 90% interval length 1.76 on the community dataset (20 random 80/20 splits).headline

Consistent
Paper 1.76 rescaled response unitsObserved 1.8561 rescaled response unitsAccepted if within ±0.176
1.76 1.55 2.06 1.98 1.94 1.83 1.90 1.85 Avg. Length Avg. Coverage 1.0 1.5 2.0 2.5 80% 85% 90% 95% 100% CQR Neural Net CQR Random Forests Neural Net Local Neural Net Random Forests Local Random Forests Ridge Local Ridge community

Figure 5 (community panel), p. 16 · quote verified on p. 16 · equivalence check · observed/published 1.055 · registered at event 27, before the first recorded result (after command output had been observed)

Method, tolerance rationale and evidence

Metric. average interval length on test set, mean over random splits, response rescaled by mean |y| of training set

Why this tolerance. The paper reports only the 20-split mean (rounded to 2 decimals) and shows split-to-split spread only as boxplots, so no numeric std is available. Tolerance is +/-10% of the paper value: it covers the standard error of a 10-20 split mean on these small datasets (split-level length std is typically 5-10% of the mean, so SE ~1-3%), unseeded/version-dependent NN and forest randomness from a 2026 rebuild of a 2019 stack, and 2-decimal rounding, while staying well below the 15-25% gaps between CQR and split conformal that the paper's comparison rests on. Figures 3-6 print 8 average lengths per dataset; the extracted text lists them in the fixed order CQR Neural Net, CQR Random Forests, Neural Net, Neural Net Local, Random Forests, Random Forests Local, Ridge, Ridge Local. This mapping was fixed BEFORE any run by averaging each position over the 11 datasets: the means (1.397, 1.407, 2.165, 1.805, 2.241, 1.823, 3.062, 2.944) reproduce Table 1 (1.40, 1.41, 2.16, 1.81, 2.24, 1.82, 3.06, 2.94); swapping any pair breaks the match.

Event 88. Observed 1.8561, delta +0.0961, consistent. Evidence events [86] (value matched by the legacy rule; not bound to an excerpt). Mean over splits 0-4 of the 'CQR Net' average test-interval length on community from the authors' run_experiment(..., 'cqr_quantile_net', seed) (splits 0-1 in job nn-s0-5, 2-4 in job nn-comm-s2-5), averaged by summarize.py. Per-split lengths 1.829, 1.629, 2.301, 1.666, 1.856 (split SD 0.27, so a 5-split mean has SE ~0.12); 5 of 20 splits.

CQR with quantile random forests gives average 90% interval length 1.55 on the community dataset (20 random 80/20 splits).headline

Consistent
Paper 1.55 rescaled response unitsObserved 1.507 rescaled response unitsAccepted if within ±0.155
1.76 1.55 2.06 1.98 1.94 1.83 1.90 1.85 Avg. Length Avg. Coverage 1.0 1.5 2.0 2.5 80% 85% 90% 95% 100% CQR Neural Net CQR Random Forests Neural Net Local Neural Net Random Forests Local Random Forests Ridge Local Ridge community

Figure 5 (community panel), p. 16 · quote verified on p. 16 · equivalence check · observed/published 0.9723 · registered at event 28, before the first recorded result (after command output had been observed)

Method, tolerance rationale and evidence

Metric. average interval length on test set, mean over random splits, response rescaled by mean |y| of training set

Why this tolerance. The paper reports only the 20-split mean (rounded to 2 decimals) and shows split-to-split spread only as boxplots, so no numeric std is available. Tolerance is +/-10% of the paper value: it covers the standard error of a 10-20 split mean on these small datasets (split-level length std is typically 5-10% of the mean, so SE ~1-3%), unseeded/version-dependent NN and forest randomness from a 2026 rebuild of a 2019 stack, and 2-decimal rounding, while staying well below the 15-25% gaps between CQR and split conformal that the paper's comparison rests on. Figures 3-6 print 8 average lengths per dataset; the extracted text lists them in the fixed order CQR Neural Net, CQR Random Forests, Neural Net, Neural Net Local, Random Forests, Random Forests Local, Ridge, Ridge Local. This mapping was fixed BEFORE any run by averaging each position over the 11 datasets: the means (1.397, 1.407, 2.165, 1.805, 2.241, 1.823, 3.062, 2.944) reproduce Table 1 (1.40, 1.41, 2.16, 1.81, 2.24, 1.82, 3.06, 2.94); swapping any pair breaks the match.

Event 87. Observed 1.507, delta -0.043, consistent. Evidence events [86] (value matched by the legacy rule; not bound to an excerpt). Mean over splits 0-4 of the 'CQR RF' average test-interval length on community, from the authors' run_experiment(dataset='community', test_method='cqr_quantile_forest', seed) rows in results.csv (job events 68), averaged by summarize.py. Per-split lengths 1.571, 1.344, 1.536, 1.517, 1.566; 5 of 20 splits.

CQR with quantile random forests gives average 90% interval length 0.56 on the concrete dataset (20 random 80/20 splits).headline

Consistent
Paper 0.56 rescaled response unitsObserved 0.5584 rescaled response unitsAccepted if within ±0.056
0.48 0.56 0.50 0.49 0.54 0.53 0.99 0.92 Avg. Length Avg. Coverage 0.4 0.6 0.8 1.0 80% 85% 90% 95% 100% CQR Neural Net CQR Random Forests Neural Net Local Neural Net Random Forests Local Random Forests Ridge Local Ridge concrete

Figure 5 (concrete panel), p. 16 · quote verified on p. 16 · equivalence check · observed/published 0.9971 · registered at event 29, before the first recorded result (after command output had been observed)

Method, tolerance rationale and evidence

Metric. average interval length on test set, mean over random splits, response rescaled by mean |y| of training set

Why this tolerance. The paper reports only the 20-split mean (rounded to 2 decimals) and shows split-to-split spread only as boxplots, so no numeric std is available. Tolerance is +/-10% of the paper value: it covers the standard error of a 10-20 split mean on these small datasets (split-level length std is typically 5-10% of the mean, so SE ~1-3%), unseeded/version-dependent NN and forest randomness from a 2026 rebuild of a 2019 stack, and 2-decimal rounding, while staying well below the 15-25% gaps between CQR and split conformal that the paper's comparison rests on. Figures 3-6 print 8 average lengths per dataset; the extracted text lists them in the fixed order CQR Neural Net, CQR Random Forests, Neural Net, Neural Net Local, Random Forests, Random Forests Local, Ridge, Ridge Local. This mapping was fixed BEFORE any run by averaging each position over the 11 datasets: the means (1.397, 1.407, 2.165, 1.805, 2.241, 1.823, 3.062, 2.944) reproduce Table 1 (1.40, 1.41, 2.16, 1.81, 2.24, 1.82, 3.06, 2.94); swapping any pair breaks the match.

Event 90. Observed 0.5584, delta -0.0016, consistent. Evidence events [86] (value matched by the legacy rule; not bound to an excerpt). Mean over splits 0-4 of the 'CQR RF' average test-interval length on concrete from run_experiment(..., 'cqr_quantile_forest', seed), averaged by summarize.py. 5 of 20 splits.

Standard split conformal prediction with a conditional-mean random forest gives average 90% interval length 1.94 on the community dataset, longer than CQR random forests (1.55).

Consistent
Paper 1.94 rescaled response unitsObserved 1.8578 rescaled response unitsAccepted if within ±0.194
1.76 1.55 2.06 1.98 1.94 1.83 1.90 1.85 Avg. Length Avg. Coverage 1.0 1.5 2.0 2.5 80% 85% 90% 95% 100% CQR Neural Net CQR Random Forests Neural Net Local Neural Net Random Forests Local Random Forests Ridge Local Ridge community

Figure 5 (community panel), p. 16 · quote verified on p. 16 · equivalence check · observed/published 0.9576 · registered at event 31, before the first recorded result (after command output had been observed)

Method, tolerance rationale and evidence

Metric. average interval length on test set, mean over random splits, response rescaled by mean |y| of training set

Why this tolerance. The paper reports only the 20-split mean (rounded to 2 decimals) and shows split-to-split spread only as boxplots, so no numeric std is available. Tolerance is +/-10% of the paper value: it covers the standard error of a 10-20 split mean on these small datasets (split-level length std is typically 5-10% of the mean, so SE ~1-3%), unseeded/version-dependent NN and forest randomness from a 2026 rebuild of a 2019 stack, and 2-decimal rounding, while staying well below the 15-25% gaps between CQR and split conformal that the paper's comparison rests on. Figures 3-6 print 8 average lengths per dataset; the extracted text lists them in the fixed order CQR Neural Net, CQR Random Forests, Neural Net, Neural Net Local, Random Forests, Random Forests Local, Ridge, Ridge Local. This mapping was fixed BEFORE any run by averaging each position over the 11 datasets: the means (1.397, 1.407, 2.165, 1.805, 2.241, 1.823, 3.062, 2.944) reproduce Table 1 (1.40, 1.41, 2.16, 1.81, 2.24, 1.82, 3.06, 2.94); swapping any pair breaks the match.

Event 89. Observed 1.8578, delta -0.0822, consistent. Evidence events [86] (value matched by the legacy rule; not bound to an excerpt). Mean over splits 0-4 of the 'RF' (standard split conformal, conditional-mean random forest) average test-interval length on community, from run_experiment(..., 'random_forest', seed), averaged by summarize.py. Per-split 1.795, 1.859, 1.834, 1.885, 1.915; CQR RF on the same splits is 1.507, i.e. shorter, as the paper reports. RF-local (not a registered claim) gave 1.7613 vs paper 1.83.

Withdrawn registrations

Registered, then withdrawn before the claim had any result. Withdrawn before the seal: not scored, not counted and not listed above. Withdrawn after the seal: still scored and counted above, as withdrawn.

Deviations from the paper's protocol

Notes from the attempt

Assurance

What the harness enforced for this attempt, and what it predates. A legacy attempt is labelled, never rewritten.

Plan sealed
no
Sealed before scored execution
no
Evidence bound to artifact excerpts
no
Values extracted by a sealed rule
no
Execution manifest for cited jobs
no
Semantic re-derivation passed
yes
Predates
a sealed plan before scored execution, evidence bound to an exact artifact excerpt, an execution manifest per job (HEAD, status, diff hash, driver file hashes), the paper text hashed at create, jobs declared scored or unscored, a declared reason for every repeated result, an extraction rule per claim, fixed by the seal
Engine
report built by repro 0.2.1; attempt created by repro 0.1.0

Provenance

Driven by
operator:claude-opus-5-5 (Claude Code subagent, AI-driven)
Sandbox
3.5 CPUs, 6.00 GiB memory, no GPU · image repro-sandbox:0.2
Period
2026-10-19T18:42:03.732Z → 2026-10-19T20:14:58.900Z
Event log
97 events, hash-chained; head 9be22707fb1af66d77eac9d6701115985d4a21d70fbc92346c6d32d8699240a2
Verify
python3 openrepro_verify.py arxiv-1905-03222-20261019T184203Z checks the chain and every artifact with the Python standard library alone; repro verify also recomputes every quote match, evidence check and verdict and re-derives this report (engine 0.2.1) (the engine that does this is not yet public; the standalone verifier at /verify/ runs the chain and artifact checks).
Right of reply
Authors may submit a response, which is published alongside this report unedited.

← Back to the paper page