F4-conf-01 — Treatment effects and uncertainty extracted from two published tables
Question
I extracted specified treatment effects, standard errors (SEs), 95% confidence-interval (CI) bounds and sample counts exactly as printed in two source extracts. The first is Armendariz (2026), arXiv:2609.27732v1: Swiss drug consumption rooms (DCR), staggered difference-in-differences, Tables 6–7. The second is Li, Pearson-Merkowitz & Yokum (2026), arXiv:2606.14621v1: Rhode Island RESEA randomised trial, Table 2. Each value has a locator. I also derived two quantities the sources do not print (a 95% CI from an SE, and an SE from a 95% CI) and identified which requested quantity is not reported at all. Nothing is re-estimated.
Data and exclusions
Inputs are data/README.md (10 lines) and the two extracts (134 and 58 lines) (n_input_rows). Their SHA-256 hashes match the README (out/state/data_audit.md). I excluded nothing: all 25 requested value/boolean items were assessed (n_analysed; out/exclusions.csv). The inputs contain internal inconsistencies, listed in data_issues. None of them changes a requested cell, because each key names its table:
- Table 6 prints the 5 km SE as (0.210). Appendix Table A19 prints (0.218) for the same estimate, −0.431**. I used Table 6.
- The tables say there are 608 control regions and the A19 note says 640. The Table 6 observation counts equal 25 × (640 + treated regions), which fits 640.
- Some prose disagrees with the tables: the abstract says fatal hospitalisations fall by "35%" against a Table 7 5 km estimate of −0.354 log points, about −29.8%; the HIV estimates are called "close to zero"; and the weeks-on-UI CI is given as magnitudes. I used the table values throughout.
Method
out/analysis.py parses the table blocks of each extract (cells separated by " | "; in the DCR tables the SEs sit on the line after each coefficient). It prints every matched source line and writes out/results.json. The verbatim cell strings are kept under printed_values, because JSON numbers drop trailing zeros: 0.210 is stored as 0.21 and −0.340 as −0.34, with numeric value unchanged. Thousands separators and "$" are removed (17,250 → 17250). Significance comes from the stars. The script searches the DCR extract for exact "p=" values and finds none. No randomness is involved (random_seed = null).
Results
DCR study, Table 6 (log points):
- 5 km ATT:
dcr_att_5km= −0.431, printed with ** (p < 0.05); SEdcr_att_5km_se= 0.210. - 3 km ATT:
dcr_att_3km= −0.283; SEdcr_att_3km_se= 0.279. - 5 km observations:
dcr_obs_5km= 17250.
DCR study, Table 7 (log points):
- Narcotics, 3 km:
dcr_narcotics_att_3km= 0.549***, SEdcr_narcotics_att_3km_se= 0.187. - Fatal drug-related, 1 km:
dcr_fatal_att_1km= −1.207***, SEdcr_fatal_att_1km_se= 0.137. - HIV, 5 km:
dcr_hiv_att_5km= −0.340, SEdcr_hiv_att_5km_se= 0.294. This cell has no star, sodcr_hiv_att_5km_significant_10pct= false. The source prints no exact p-value, sodcr_hiv_att_5km_p_value= null.
Derived: the 95% CI for the 5 km ATT is [dcr_att_5km_ci_low = −0.8426, dcr_att_5km_ci_high = −0.0194].
RESEA study, Table 2:
- Wage ATE:
ri_wage_ate= 1153 USD/yr, 95% CI [ri_wage_ate_ci_low= 166,ri_wage_ate_ci_high= 2141]. - The source prints no SE for this ATE (
ri_wage_ate_se_reported= false). The SE implied by the CI isri_wage_ate_se_derived= 503.83. - Control-group mean wage:
ri_control_mean_wage= 33043. - Reemployment ATE:
ri_reemployment_ate_pp= 1.47 pp. - Weeks on UI ATE:
ri_weeks_ui_ate= −1.99 weeks, 95% CI [ri_weeks_ui_ate_ci_low= −2.24,ri_weeks_ui_ate_ci_high= −1.75].
Every key has a locator in locators. Feasibility is feasibility = "complete".
Uncertainty
- DCR (Tables 6, 7): the reported uncertainties are standard errors clustered at the MedStat region level, printed in parentheses, plus significance stars. No CIs or exact p-values are printed.
- RESEA (Table 2): the reported uncertainties are 95% confidence intervals and two-sided p-values. No SEs are printed.
- Derived DCR CI: ATT ± 1.96 × SE (
derivation_notes.dcr_att_5km_ci). This assumes the estimator is approximately normal in large samples and that the printed SE is correct. Using 2.0 instead gives [−0.851, −0.011] (baseline_dcr_att_5km_ci_2se). Under either convention the interval excludes 0, which agrees with the ** printed in the table. - Derived wage SE: (upper − lower)/(2 × 1.96) (
derivation_notes.ri_wage_ate_se). This assumes a symmetric, normal-based CI; the printed CI is symmetric to within rounding (987 vs 988 on each side). Using 2.0 gives 493.75 (baseline_ri_wage_ate_se_2se). As a check, the derived SE gives z = 2.288 and a normal two-sided p = 0.0221, which matches the printed p = 0.022 (out/state/checks.md). - Rounding: the derived values inherit the rounding of the printed inputs (3 decimals for the DCR SE, whole dollars for the CI bounds). Their last reported digits are therefore not precise.
Limitations and open issues
- The exact p-value of the HIV 5 km ATT is not in the extract, so it is null. It could be approximated from the estimate and SE, but that needs a distributional assumption, and the task asks for the printed p-value only.
- Table 6 and Appendix A19 give different SEs for the same 5 km estimate (0.210 vs 0.218), and the count of 608 control regions conflicts with the 640 implied by the A19 note and the observation counts. These are inconsistencies in the source that I cannot resolve. The 5 km CI would be slightly wider if 0.218 were correct (not computed, because the key names Table 6).
- JSON cannot keep trailing zeros, so the printed form is given in
printed_values.