Summary
The paper relates daily citywide counts of NYC 311 noise reports (1 Jan 2010 – 31 Oct 2026, 6,148 days) to Central Park temperature using a quasi-Poisson distributed-lag non-linear model (DLNM, lags 0–3) with a season/trend spline (118 df), day-of-week, holiday, holiday-eve and pandemic terms, and Newey–West HAC inference. Six confirmatory hypotheses are stated as pre-registered: a P90-vs-P50 rate ratio for daily (H1) and night (H2) counts, a heat-wave-night increment (H3), and heterogeneity by complaint type (H4a), borough (H4b) and a linear trend across tract-income quintiles (H4c).
Headline results: RR 1.134 (1.066–1.205) daily and 1.158 (1.076–1.246) at night; an inverted-U curve peaking near P75 (22.2 °C) and falling below 1 at P99; a null heat-wave-night increment under the primary definition (1.012) with alternative definitions on both sides; largest RRs for street/sidewalk, AC and vehicle reports, the Bronx highest among boroughs, and an income slope of −0.070 per quintile on the log scale. The abstract states that twenty-two sensitivity analyses kept the direction of the primary estimates. The paper frames all results as associations with reporting, not with sound or conduct.
Strengths
Headline results reproduce exactly from public data
Sec 3.6 Eq. (1); Tables 1–7; checks 01–03, 10–13
An independent re-implementation of Eq. (1) on freshly downloaded Socrata counts and GHCN-D/GHCNh temperature reproduced the daily and night totals exactly (8,632,969 and 4,306,668), H1 as 1.133 (1.066–1.205) vs 1.134 (1.066–1.205), H2 as 1.157 (1.075–1.245) vs 1.158 (1.076–1.246), H3 as 1.012 (0.944–1.085) identically, and the Table 3, 4, 6 and 7 RRs to within 0.001–0.005. The temperature percentiles and heat-wave day counts (171, 107) also match. This is strong evidence that the reported numbers are genuine outputs of the stated model on the stated data.
Model specified completely enough to reimplement
Sec 3.3–3.7; check 08, check 09
Knot placement (P10/P50/P90), lag basis (ns, knot at 1, intercept), 7 df/yr time spline, the 19-level holiday factor, offset handling for DST, the HAC lag (14) and the outage rule are all stated. The stated parameter count (157) follows from these choices, and the lag 0–7 sensitivity (S7c) reproduced exactly once dlnm-default log-spaced lag knots were used.
Clear confirmatory/exploratory/sensitivity structure with coherent inference
Sec 3.7–3.8; Table 2; Tables 5–11; checks 05, 07
Six two-sided confirmatory tests with Holm adjustment are separated from nine exploratory families with BH q-values and from 22 sensitivity analyses. Recomputed p-values, Holm p and BH q-values agree with the reported CIs to rounding (e.g. H3 p 0.737 vs 0.73; HW-S2 0.054 vs 0.052), and all 62 CIs are symmetric on the log scale, as Wald intervals should be.
Careful, non-causal framing of an ecological reporting outcome
Abstract; Sec 1; Sec 5.3; Sec 6; Sec 9; check 16
The paper repeatedly states that 311 counts reflect sound plus propensity to report and that area differences do not measure residents' behaviour (Abstract, Sec 1 para 2, Sec 5.3, Sec 6, Sec 9). A text scan found no causal verbs applied to findings, and mechanisms are described only as 'compatible'. This is the right framing for the income and borough analyses.
Awkward and null results are reported in the body
Tables 4, 5, 10, 12; Sec 4.7
The H3 null, the opposite-signed alternative heat-wave definitions (HW-S1 1.141 vs HW-S2 0.927), the non-converged lawn-care fit, the negative lag-1/lag-2 terms and the 'In CI: no' entries in Table 12 are all shown; Sec 4.7 explicitly notes that S7c gives intervals including 1. Our refits confirm that these are properties of the data, not artefacts (check 11).
Data provenance documented and verifiable
Sec 3.1–3.2; refs [37]–[39]; checks 08, 15
Dataset IDs (76ig-c548, erm2-nwe9), the December 2025 split, the station ID and the ACS tables are named. Socrata metadata confirms the split; the two datasets do not overlap and contain no repeated identifiers. The D1 justification (keyless Census API requests rejected) was confirmed.
Weaknesses
Abstract and Sec 4.7 overstate the sensitivity results
major · Abstract; Sec 3.8; Sec 4.7; Table 12; checks 04, 16
The abstract says 'Twenty-two sensitivity analyses kept the direction of the primary estimates' and Sec 4.7 says 'All 22 daily and 22 night sensitivity estimates kept the direction'. Table 12 has 20 pre-specified rows per window, not 22: S14, S20 and S22 are not H1/H2 estimates, and S7 is split into a/b/c. More importantly, the pre-specified criterion in Sec 3.8 is same direction and inside the primary 95% CI. It holds for only 17/20 daily rows (fails S7a, S7c, S17) and 16/20 night rows (fails S2, S7a, S7c, S17). S7c daily (0.968–1.127), S7c night and S2 night have intervals including 1, and S20 HW-S2 (0.927) lies on the opposite side of 1 from H3 (1.012). The abstract reports only the half of the pre-registered criterion that passed.
Fix: report the pre-specified criterion as registered (e.g. '16–17 of 20 met the pre-specified criterion; lag 0–7 and dew-point adjustment did not') in the abstract and Sec 4.7.
Headline RR is specific to the lag 0–3 window; most of the same-day excess is offset later
major · Table 4; Table 12 (S7a–c); Sec 4.7; Sec 5.1; Sec 5.4; Sec 8; check 09
Table 4 shows a large lag-0 excess (1.303) followed by deficits at lags 1–2 (0.942, 0.898). Our refits show the cumulative RR at P90 shrinking with the lag horizon: L=0 1.233, L=1 1.160, L=3 1.133, L=5 1.086 (1.011–1.165), L=7 1.068 (0.990–1.153), L=14 1.062 (0.959–1.178). The S7c result in Table 12 (1.045, 0.968–1.127) reproduces. So the evidence that warm days produce more reports overall, rather than shifting reports between adjacent days, is weak beyond one week. Sec 4.7 notes this, but the abstract, Sec 5.1, Sec 5.4, Sec 8 and Sec 9 state that warm days had more reports without qualification, and Sec 6 does not list the lag window as a limitation.
Fix: justify the 0–3 window from the plan, show cumulative RR as a function of maximum lag, and qualify the headline and the operational implications in Sec 5.4.
Preregistration adherence cannot be audited
major · Title; Sec 3.1; Sec 7; check 14
The title and Sec 3.1 rest on a plan frozen at 01:16:22 UTC on 10 Nov 2026 with four deviations, 'each recorded before the model it concerned was fitted'. Sec 7 says the plan, lock file, deviation log, results.json and code are released in 'experiment/analysis', but none was supplied and no URL or DOI is given. Only an 8+8-character hash prefix/suffix is printed. The PDF was created 2 h 28 min after the stated freeze, so the whole pipeline (≈8.66 M records, hourly weather, ACS, 100+ fits, text) ran inside that window, which makes the time-stamped deviation log essential evidence. As it stands, readers must take the 'pre-registered' label on trust.
Fix: deposit the frozen plan, its full hash and timestamp, and the deviation log at a persistent public location (e.g. OSF, Zenodo) and cite it in Sec 3.1.
Post-freeze analytic choices and an unregistered variant are under-reported as deviations
minor · Sec 3.1 (D3); Sec 6; Table 3; Table 12 (S4_2df); checks 07, 14
D3 fixes the BH family definitions, the descriptor inclusion rule (≥5 calendar years), the spline basis and the HAC settings after the freeze. These are substantive: pooling E4 across type/borough/income changes several q-values (e.g. Q5 daily 0.026 vs 0.02; check 07). Table 12 also contains an 'S4_2df' variant that is not among S1–S22 and is not listed as a deviation. Sec 6 describes the deviations as concerning only 'data access and implementation details'. Table 3 cites 'rule 5.7', which exists only in the unreleased plan.
Fix: list every post-freeze choice and extra analysis as a deviation, and quote the relevant plan rules in the paper or in a supplement.
Humidity adjustment moves the estimate far outside the primary CI
minor · Sec 4.7; Sec 6; Table 12 (S17); check 09
S17 (dew point) raises the RR from 1.134 to 1.456 (1.369–1.548) daily and from 1.158 to 1.630 night. We reproduced a large upward shift with daily ADPT (1.346, 1.265–1.432; temperature–dew point r = 0.86), though not the exact value, because the hourly dew-point rule (D2) is not stated. Sec 4.7 dismisses this as 'a different question', and Sec 6 acknowledges the dependence. However, the paper never argues whether humidity is a confounder or a mediator, which determines whether 1.134 or 1.456 is the estimand of interest. Direction is unaffected, so this concerns magnitude.
Fix: state the causal role assumed for humidity, give the dew-point rule, and report both estimates side by side.
Plain-language summary makes claims the analysis does not support
minor · Sec 9; Sec 3.1; Table 6; Table 10; check 13
Sec 9 says 'The analysis plan was written down before any results were seen', which is stronger than Sec 3.1 ('before any association … was computed'; descriptives were produced during data assembly under D2). It also says 'Most of the increase came from complaints about streets and sidewalks, vehicles, air-conditioning equipment and parks', but no attribution is computed. Our approximate decomposition of the net P90-vs-P50 excess gives street/sidewalk 83%, vehicle 17%, parks 4% and AC 3%. Residential loud music/party reports contribute 43%, more than vehicle, AC and parks combined, and are offset within T1 by falling banging/pounding reports. In aggregate the sentence is defensible, but it misleads about AC and parks.
Fix: compute and report excess reports by type, or rephrase the sentence in terms of rate ratios.
H3 non-rejection presented as absence of an increment
minor · Table 5; Sec 4.4; Sec 8; Sec 9; check 11
The primary heat-wave-night RR 1.012 (0.944–1.085) rests on 171 heat-wave days, and its interval is compatible with anything from a 6% decrease to an 8.5% increase. The two alternative definitions give significant estimates of opposite sign (HW-S1 1.141, 1.058–1.232; HW-S2 0.927, 0.858–1.001); both were reproduced (check 11). The conclusion 'did not stand out' (Sec 9) and 'added no clear increment' (Sec 8) needs an equivalence margin or power statement to be read as evidence of absence.
Income gradient not separated from complaint-type mix and exposure misclassification
minor · Sec 3.5; Sec 4.5; Tables 7–9; checks 06, 12
H4c (slope −0.070, −0.099 to −0.042; reproduced from Table 8 as −0.0701) is estimated with a single Central Park exposure for all tracts. Type-specific RRs range from 0.857 to 1.585 (Table 6), and type mix very likely varies with income. No type-adjusted or type-stratified income model is reported, so the gradient may partly reflect composition. The borough-station sensitivity (S22) is not shown in Table 12. The Bronx and Q1 intervals are much wider than the others, which deserves comment.
Citation accuracy and reliance on grey literature
minor · Sec 1; Sec 2.1–2.2; Sec 5.2; References [1], [6], [11], [23], [28], [29]; check 17
[1] is cited in Sec 1 for counts that 'rise in late spring and summer' and for the 2020 jump, but its abstract reports rates 'peaking in autumn and spring', and Sec 2.1 itself says [1] covers 2010–2018. The main comparator for the curve shape in Sec 5.2 is [28], a GitHub class project (≈500K complaints, raw counts without calendar terms; repository created 2026-09-27). [6], [11] and [29] are a blog, an app and a student report. Their content is reported accurately, but none has a URL or access date, and [23] lacks a DOI.
Minor reporting gaps
minor · Sec 3.2; Table 1; Table 2; checks 01, 15
(i) The 8,659,444 downloaded records exceed our live count of 8,650,197 for Jan 2010 – Nov 2026 by 9,247 (0.11%), all outside the analysis window; in-window counts match exactly, so estimates are unaffected, but the gap is unexplained. (ii) The Table 1 column 'HAC check (rel. diff.)' shows 0.0e+00 and is undefined. (iii) The model-based quasi-Poisson interval for H1 (1.088–1.181) is narrower than the HAC interval. Reporting both would show how much the autocorrelation correction matters.
Questions for the authors
Can you provide the frozen plan, its full SHA-256 hash, the lock-file timestamp and the time-stamped deviation log? Were S4_2df, the BH family definitions and the ≥5-year descriptor rule in the plan?
Did the plan justify the lag 0–3 window a priori? What is the cumulative RR at P90 for lags 0–7 and 0–14 for the night model, and do you still interpret the result as more reports, rather than displaced reports, on warm days?
Under your assumed causal structure, is humidity a confounder or a mediator of the temperature–reporting association? Which of 1.134 and 1.456 answers the question in Sec 1?
Given that the pre-specified criterion (same direction and inside the primary CI) fails for S7a, S7c and S17 (daily) and also S2 (night), how did you arrive at the abstract sentence on 22 sensitivity analyses?
Does the income gradient (H4c) persist when the model is stratified or adjusted by complaint type, or with borough-specific stations (S22)?
What are the 9,247 records in the download that are absent from the current Socrata datasets for Jan 2010 – Nov 2026?
Verification
Only the PDF was supplied, so we rebuilt the analysis from public sources: Socrata counts for both 311 datasets, GHCN-D daily and GHCNh hourly Central Park/LaGuardia data, and an independent statsmodels re-implementation of Eq. (1) with Newey–West HAC. Of 18 checks, 14 are confirmed. Daily and night totals match exactly. H1, H2, H3, the curve shape, lag-specific RRs, type and borough RRs, dispersion, PACF, percentiles and heat-wave counts all match to the third decimal, and the reported p/q-values and contrasts are arithmetically coherent. Three checks found discrepancies. The abstract's robustness sentence fails the pre-specified criterion (04, 16), and two citation details of [1] are wrong (17). One check is not checkable: preregistration adherence, because the plan and deviation log were not supplied (14). A further lag-horizon refit (09) shows that the headline RR is specific to the 0–3 window.
H1: cumulative lags 0-3 RR at P90 (25.8 C) vs P50 (14.2 C) = 1.134 (1.066-1.205); Table 1 dispersion 71.8, PACF lag 1 0.49, lag 7 0.12; 157 parameters; Table 4 lag-specific RRsConfirmedAbstract; Sec 3.6 Eq. (1); Sec 4.2; Table 1; Table 2; Table 3; Table 4
Obtained RR 1.133 (1.066-1.205) vs claimed 1.134 (1.066-1.205) (tolerance 0.02); 157 parameters; dispersion 71.8 (claimed 71.8); PACF lag 1 0.49 and lag 7 0.12 (claimed 0.49, 0.12). Lag-specific RRs 1.303 (1.247-1.362), 0.942 (0.914-0.970), 0.898 (0.876-0.920), 1.029 (0.993-1.066), matching Table 4 to the third decimal. The HAC interval is wider than the model-based quasi-Poisson interval (1.088-1.181). The paper gives enough detail to reproduce the headline result exactly from public data.
script: 01_refit_h1.pyIndependent re-implementation of Eq. (1) from the text (work/verify/_dlnm.py) on independently downloaded Socrata counts and GHCN-D temperature; statsmodels Poisson GLM with Newey-West HAC (14 lags), quasi-Poisson dispersion from Pearson chi2
8,632,969 daily-window and 4,306,668 night-window noise reports over 6,148 days; 8,659,444 downloaded records; annual mean 553/day (2010) and 2,282/day (2025); June and September highest monthly means, above July and AugustConfirmedAbstract; Sec 3.2; Sec 4.1; Table 1
Daily-window total 8,632,969 (claimed 8,632,969, exact); night-window total 4,306,668 (claimed 4,306,668, exact); 6,148 days, none with zero reports. Annual mean 553.1 (2010; claimed 553) and 2,282.2 (2025; claimed 2,282). Monthly means: June 1,812, September 1,768, May 1,725, July 1,595, August 1,592, so June and September top the ranking as stated. Download total: 8,650,197 noise records from 1 Jan 2010 through the latest record (9 Nov 2026) vs 8,659,444 claimed; the 9,247 (0.11%) gap is unexplained but does not affect the modelled series. The 311 data provenance is fully reproducible.
script: 02_counts.pyIndependent Socrata SoQL aggregation (day x hour counts, complaint_type starting with Noise) on 76ig-c548 and erm2-nwe9, queried 10 Nov 2026; night window rebuilt from hourly counts minus exactly-midnight stamps
Central Park daily-mean percentiles P1 -6.8, P10 0.9, P50 14.2, P75 22.2, P90 25.8, P99 29.5 C; no missing values; HW-primary 171 days, HW-S1 107 days; 6,148 study daysConfirmedSec 3.4; Sec 4.1; Sec 4.2; Table 3; Table 5
6,148 days, 0 missing TMAX/TMIN. Obtained P1 -6.85, P10 0.85, P50 14.15, P75 22.20, P90 25.80, P99 29.45 C (all within 0.05 C of the reported values; tolerance 0.1 C). HW-primary 171 days (claimed 171); HW-S1 threshold 28.35 C, 107 days (claimed 107). F conversions in Table 3 consistent. Exposure provenance fully reproducible.
script: 03_exposure.pyDownloaded GHCN-D USW00094728 from NCEI, computed (TMAX+TMIN)/2 over 2010-01-01..2026-10-31, linear-interpolation percentiles, run-length heat-wave flags
Abstract: "Twenty-two sensitivity analyses kept the direction of the primary estimates"; Sec 4.7: "All 22 daily and 22 night sensitivity estimates kept the direction"; Sec 3.8 criterion = same direction AND inside primary 95% CIDiscrepancyAbstract; Sec 3.8; Sec 4.7; Table 12; Table 5 (S20); Table 9 (S14, S22)
Only 19 of the 22 S-numbers appear in Table 12 (S14, S20, S22 are not H1/H2 estimates); with S7 split into a/b/c there are 20 pre-specified rows per window, not 22. All 20 rows per window have point estimates on the same side of 1, but the pre-specified criterion (same direction AND inside primary CI) holds for only 17/20 daily (fails S7a, S7c, S17) and 16/20 night (fails S2, S7a, S7c, S17); the Table 12 In-CI column itself is marked correctly. S7c daily (0.968-1.127), S7c night and S2 night intervals include 1. S20 HW-S2 (0.927) is on the opposite side of 1 from H3 (1.012). S4_2df is an extra variant not among S1-S22. The abstract reports only the half of the criterion that passed.
script: 04_sensitivity_tally.pyTranscribed Table 12, Table 5 and Table 9; counted pre-specified sensitivity rows per window and evaluated both halves of the pre-specified criterion
Lag-specific RRs multiply to cumulative RR; RR(P99 vs P90) = 0.767/0.765; night-to-day ratio 1.021; CIs are Wald intervals on the log scaleConfirmedSec 4.3; Tables 2-8, 11
Product of Table 4 lag RRs = 1.1342 daily (reported 1.134) and 1.1578 night (1.158). P99/P90 = 0.7663 (reported 0.767) and 0.7642 (0.765), consistent within rounding (tolerance 0.0015). Night/day = 1.0212 (1.021). All 62 CIs symmetric on the log scale within 0.006. Reported numbers are arithmetically coherent outputs of one model.
script: 05_contrast_arith.pyProducts and ratios of reported RRs; log-scale symmetry of 62 reported CIs
H4c income trend slope -0.070 (-0.099 to -0.042) daily and -0.083 (-0.111 to -0.055) night as c^T theta with c=(-2,-1,0,1,2)/10ConfirmedSec 3.7; Table 2; Table 8; Table 9
Obtained slope -0.0701 daily (claimed -0.070) and -0.0833 night (claimed -0.083), tolerance 0.002. Independence-based SE 0.0160/0.0167 vs SE implied by reported CI 0.0145/0.0143; reported CIs are plausibly narrower because quintile estimates are positively correlated. z about -4.8 daily, consistent with p < 0.001.
script: 06_income_slope.pyApplied the contrast to log RRs of Table 8; SE from CI widths
Reported p-values, Holm-adjusted p and BH q-values consistent with estimates, CIs and test statisticsConfirmedTable 2; Table 5; Tables 6-11
H3 p obtained 0.737 (claimed 0.73), HW-S2 0.054 (0.052), E6 0.0187 (0.019), HW-S1 0.0007 (<0.001); all chi-square tests p < 1e-5 as reported. BH q-values reproduce to rounding (e.g. 0.0017 vs 0.0016, 0.39 vs 0.4, 0.73 vs 0.72) when each table column is one family; pooling E4 across types/boroughs/income changes several q (e.g. Q5 daily 0.026 vs 0.02), so families were defined per breakdown (fixed post-freeze per D3). Holm-adjusted H3 = 0.737; the other five < 0.001. Differences are within CI-rounding error.
script: 07_pvalues.pyWald z from CI-derived SEs; chi-square survival; BH recomputed per table column and for pooled families; Holm over six confirmatory p
6,148 days; 203 monthly units; ns(t;118) = 7 df/yr; 12 cross-basis columns; 157 parameters; 2,327 NYC tracts; D1: Census API no longer serves keyless requestsConfirmedSec 3.1; Sec 3.2; Sec 3.5; Sec 3.6
6,148 days; 202 calendar months + November 2026 = 203 units; 7 x 16.832 yr = 117.8 -> 118; 4 x 3 = 12; 1+12+118+6+18+1+1 = 157; 2,327 tracts in the five NYC counties (2024 Gazetteer). Keyless Census API request returned HTTP 302 to missing_key.html, supporting the D1 justification.
script: 08_bookkeeping.pyDate arithmetic; parameter count from Eq. (1); 2024 Census Gazetteer tract file; keyless request to api.census.gov
Lag-window and humidity sensitivity: S7a 1.234, S7b 1.133, S7c (lags 0-7) 1.045 (0.968-1.127), S16 1.110, S17 dew point 1.456; abstract and conclusion state that warm days had more reports without qualificationConfirmedSec 4.3; Sec 4.7; Table 4; Table 12 (S7a-c, S16, S17); Abstract; Sec 8
Reproduced S7a 1.233 (1.176-1.293) vs 1.234 (1.176-1.294); S7b 1.133 (1.065-1.204) vs 1.133 (1.065-1.205); S7c 1.045 (0.968-1.128) vs 1.045 (0.968-1.127) with dlnm-default log-spaced lag knots (1, 3); S16 1.109 vs 1.110. Cumulative RR shrinks with the lag horizon: L=0 1.233, L=1 1.160, L=3 1.133, L=5 1.086 (1.011-1.165), L=7 1.068 (0.990-1.153), L=14 1.062 (0.959-1.178): beyond about one week the interval includes 1, so most of the same-day excess is offset by later deficits and the headline RR is specific to the 0-3 window. Dew point: ns(ADPT,3) gives 1.346 (1.265-1.432) vs claimed 1.456; exact value not reproduced (paper used an unstated hourly dew-point rule; ADPT has 809 missing days) but the large upward shift outside the primary CI is reproduced (temp-dew point correlation 0.86).
script: 09_lag_window.pyRefits of the re-implemented Eq. (1) with lag 0 only, unconstrained lags, lags 0-7 (ns lag basis, log-spaced knots), cumulative RR by maximum lag 0-14, GHCN-D precipitation and daily mean dew point (ADPT)
Daily curve: maximum at 22.2 C (RR 1.226); P1 0.675 (0.593-0.769); P10 0.723; P75 1.226 (1.165-1.291); P99 0.869 (0.798-0.946); P99 vs P90 0.767 (0.720-0.816); rising then decliningConfirmedAbstract; Sec 4.3; Table 3; Fig 3a
Obtained P1 0.676 (0.594-0.769), P10 0.723 (0.656-0.797), P75 1.226 (1.165-1.291), P99 0.869 (0.798-0.946), P99 vs P90 0.767 (0.720-0.816), all within 0.001 of Table 3. Fine-grid maximum at 22.20 C with RR 1.226, so the coincidence of the maximum with P75 is real (RR 1.2175 at 21 C, 1.2218 at 23 C). The inverted-U shape and the P99 decline below 1 reproduce.
script: 10_curve_shape.pyRe-implemented Eq. (1); cumulative RR vs 14.2 C at the reported percentiles and on a 0.05 C grid
Night model: H2 RR(P90 23.4 C vs P50 12.4 C) = 1.158 (1.076-1.246); H3 heat-wave-night RR = 1.012 (0.944-1.085); night exposure from Central Park hourly data with 23 LaGuardia nights; night dispersion 50.6, PACF lag 1 0.28ConfirmedAbstract; Sec 3.4; Sec 4.3-4.4; Tables 1, 3, 4, 5
Tolerance 0.02 on RR. LGA-substituted nights: 23 (claimed 23). Night percentiles P1/P10/P50/P75/P90/P99 = -8.81/-0.39/12.36/19.97/23.39/27.26 vs claimed -8.8/-0.4/12.4/20.0/23.4/27.3. Dispersion 50.7 vs 50.6; PACF lag 1 0.28 vs 0.28. H2: 1.157 (1.075-1.245) vs 1.158 (1.076-1.246). Night P1 0.639 vs 0.634, P75 1.233 vs 1.234, P99 0.886 vs 0.885 (Table 3); lags 0/1/2 1.369/0.909/0.872 vs 1.367/0.911/0.873 (Table 4). H3: 1.012 (0.944-1.085), identical to Table 5. S20 HW-S1: 1.142 (1.057-1.232) vs 1.141 (1.058-1.232). E6: 1.072 (1.011-1.137) vs 1.073 (1.011-1.137). S5 next-morning TMIN: 1.152 vs 1.153. The H3 null and the opposite-signed HW-S1/HW-S2 results (1.141 vs 0.927) are genuine properties of the data, not computational artefacts.
script: 11_refit_night.pyIndependent re-implementation of the night model: night exposure from NCEI GHCNh hourly files (UTC converted to America/New_York, mean per local clock hour over 22:00-06:59, LaGuardia when fewer than 7 Central Park hours), night counts from Socrata, the same Eq. (1) cross-basis with night-window offset and Newey-West HAC (14 lags); H3, S20 and E6 add the indicator at lag 0; S5 uses next-morning TMIN
H4b borough heterogeneity: daily RR at P90 Bronx 1.404 (1.186-1.661), Brooklyn 1.107 (1.057-1.160), Manhattan 0.979 (0.933-1.028), Queens 1.102 (1.043-1.164), Staten Island 1.035 (0.963-1.113); Wald chi2 = 50.5 (4 df)ConfirmedAbstract; Sec 4.5; Table 2; Table 7; Table 9; Fig 5c
Tolerance RR +-0.05; obtained Bronx 1.404 (1.187-1.661), Brooklyn 1.107 (1.056-1.160), Manhattan 0.979 (0.933-1.028), Queens 1.101 (1.042-1.164), Staten Island 1.034 (0.962-1.112), all within 0.001 of Table 7. H4b chi2 = 50.3 (4 df, p = 3.1e-10) vs claimed 50.5. The 7,306 reports without a borough (0.08%) that the paper fills from tract county barely matter. Borough report totals: Bronx 2,141,703; Brooklyn 2,285,587; Manhattan 2,391,612; Queens 1,602,693; Staten Island 204,068. All boroughs share the single Central Park exposure; S22 (borough stations) is not in Table 12 (see check 04).
script: 12_borough.pySocrata daily noise counts by borough field (7,306 reports without a usable borough, 7,260 'Unspecified' and 46 missing, dropped); separate daily fits of Eq. (1) per borough with citywide Central Park exposure, knots and reference; Wald test of equal log RR with the joint covariance clustered on ISO weeks (G/(G-1)), built from per-day influence functions (_wald.py)
H4a type heterogeneity (Table 6 daily): T1 Residential 1.019, T2 Street/sidewalk 1.585, T3 Vehicle 1.312, T4 Commercial 0.900, T5 AC/ventilation 1.495, T6 Construction 0.857, T7 Other 1.048; chi2 = 343.3 (6 df); abstract names street/sidewalk, vehicle and AC as largest; Sec 9: 'Most of the increase came from complaints about streets and sidewalks, vehicles, air-conditioning equipment and parks.'ConfirmedAbstract; Sec 4.5; Table 6; Table 10; Sec 9 (plain-language summary)
Tolerance RR +-0.05. T1-T7 obtained 1.019, 1.584, 1.312, 0.900, 1.496, 0.857, 1.048, all within 0.001 of Table 6. The Table 10 strata also match: Loud Music/Party 1.174 vs 1.175 (2,859,241 reports, identical count), Banging/Pounding 0.727 vs 0.727, Park 1.511 vs 1.511 (94,702 reports, identical). H4a chi2 = 341.6 (6 df) vs 343.3. The abstract's 'largest for street and sidewalk, vehicle and air-conditioning' matches the RR ranking (1.585 > 1.495 > 1.312). Sec 9 attribution, which the paper never computes: contributions to the net excess of +0.136 (citywide RR-1 = 0.134) are street/sidewalk +0.113 (83%), vehicle +0.023 (17%), park +0.006 (4%), AC +0.004 (3%), residential overall +0.010, commercial -0.009, construction -0.008. The four named sources sum to 107% of the net excess, so the sentence is defensible in aggregate, but it is driven by street/sidewalk alone. AC and parks are minor contributors, each smaller than residential loud-music/party reports (+0.058, 43% of net), whose rise is offset within T1 by falling banging/pounding (-0.038). Sec 9 mentions that loud-party complaints 'rose' but does not convey that they contribute more than vehicles, AC and parks together (+0.033). The attribution is approximate: it uses the overall type share in place of the share at P50.
script: 13_types.pySocrata daily counts by complaint_type x descriptor mapped to T1-T7 with the Sec 3.3 rules; separate daily fits of Eq. (1) per type and for Table 10 strata (Loud Music/Party, Banging/Pounding, Park); week-clustered Wald test; approximate attribution of the citywide excess at P90 vs P50 as share_k x (RR_k - 1) over the 7 disjoint types, using both the paper's and refitted RRs
Plan frozen 10 Nov 2026 01:16:22 UTC before any association was computed; only four deviations D1-D4, each recorded before the affected model was fittedNot checkableSec 3.1; Sec 6; Sec 7; Table 3 (rule 5.7); Table 12 (S4_2df)
The preregistration, lock file, full SHA-256 hash, deviation log, results.json and code (Sec 7) were not supplied and no URL is given, so the plan content and the time order of deviations cannot be audited. Auditable facts: PDF created 2:27:46 after the stated freeze; only an 8+8 character hash prefix/suffix is printed; Table 12 contains an S4_2df variant not among S1-S22 and not listed as a deviation; D3 fixes the spline basis, HAC settings, descriptor inclusion rule and BH families after the freeze; Table 3 cites a plan rule (5.7) not reproduced in the paper. The D1 justification (Census API rejects keyless requests) was confirmed in check 08. Needed: the frozen plan, its full hash and the time-stamped deviation log.
script: 14_prereg.pyInventory of supplied materials; PDF metadata via pdfinfo; text search for unregistered analyses and post-freeze choices
Data provenance: datasets 76ig-c548 ('311 Service Requests from 2010 to 2019') and erm2-nwe9 ('2020 to Present') exist and were published as separate datasets in December 2025; each restricted to its own creation-date range; no repeated record identifiers among 8,659,444 downloaded recordsConfirmedSec 3.2; refs [37]-[39]; Sec 6 (data availability)
Metadata: 76ig-c548 is named '311 Service Requests from 2010 to 2019', createdAt 2025-12-22, publicationDate 2025-12-23. erm2-nwe9 is named '311 Service Requests from 2020 to Present', createdAt 2011-10-10, republished 2025-12-23, rows updated 2026-11-10. This is consistent with a December 2025 split in which the older dataset was carved out of the original erm2-nwe9 [39]. Repeated identifiers: 0 in every year 2010-2026 (8,650,197 records, 8,650,197 distinct unique_key). Overlap: 0 noise rows in 76ig-c548 created on or after 2020-01-01 and 0 in erm2-nwe9 created before 2020-01-01, so restricting each dataset to its range drops nothing and double-counts nothing. Residual: our live total through November 2026 (latest record 2026-11-09) is 8,650,197, versus the 8,659,444 the paper reports downloading in 203 monthly units (Jan 2010-Nov 2026), a gap of 9,247 (0.11%) that falls entirely outside the analysis window. Counts inside the window match exactly (check 02), so the gap does not affect any estimate. It is unexplained and cannot be audited without the download manifest the paper says exists (Sec 6).
script: 15_datasets.pySocrata views metadata API for both dataset IDs; SoQL count(*) vs count(distinct unique_key) for noise records per calendar year on the dataset that covers it; cross-range counts to test overlap between the two datasets
Title and abstract statements match the result tables; causal languageDiscrepancyTitle; Abstract; Tables 2-8, 12; Sec 9
9/10 abstract statements are supported exactly (H1/H2/H3 numbers, P99 below 1 with CI excluding 1, heat-wave alternatives on both sides of 1.012, top-3 types T2/T5/T3, monotone income decline Q1 1.283 to Q5 0.937, borough heterogeneity). The robustness sentence fails (see check 04). The abstract omits that the lags 0-7 model (S7c) gives intervals including 1 and that dew-point adjustment (S17) moves the estimate to 1.456/1.630. The daily maximum coinciding with P75 (22.2 C, RR 1.226) was verified as genuine in check 10. Scan found no causal verbs (effect/cause/drive/impact) applied to findings; causal framing is consistently avoided except the plain-language claim that most of the increase came from specific types (Sec 9), which is not computed (see check 13).
script: 16_abstract_vs_tables.pyProgrammatic comparison of 10 abstract statements with transcribed tables; regex scan of full text for causal wording
Load-bearing references exist and support the uses made of them: [1] Tong & Kang 2021 (NYC; ~2.1-fold rise 2010-2018, weekend ~2x Monday, 23:00 peak; seasonal pattern; 2020 jump), [6] Reiter (weather adds little once calendar and lags are modelled), [11] single-borough 2023 comparison with sharper evening/night increase, [28] inverted U peaking at 60-70 F without calendar adjustment, [29] one-summer analysis with slightly lower QoL report rates in extreme-heat weeksDiscrepancySec 1 (para 1); Sec 2.1; Sec 2.2; Sec 5.2; References [1], [6], [11], [28], [29]
Supported: [28] README says complaints 'are highest around 60 to 70°F, and then go down again on the hottest days (an inverted U shape)', and its SQL is a raw daily count vs (TMAX+TMIN)/2 with no calendar terms. Note that [28] covers about 500K complaints and the repository was created 2026-09-27. [11] README: Brooklyn, Noise - Residential, 2023, 86,040 rows, KJFK hourly; 'During evening and night, higher temperatures are associated with a sharp increase in complaints'. [29] (summer 2025, 12 weeks, census tracts): 'a slight call reduction during extreme heat periods, conflicting with the main hypothesis'. [6] (Oct 5, 2025; Grass/Weeds requests): 'Weather, temperature, and growth potential contribute little when you have those two predictors' (last week's requests and week of year). The paper's 'descriptive analysis' label is loose, since it is a predictive ML comparison, but the substance is right. [1] is NYC (abstract: 'Taking New York City as the study area'). However, the abstract says the rate 'showed a year-on-year increase, peaking in autumn and spring', whereas Sec 1 cites [1] for counts that 'rise in late spring and summer'. The 2.1-fold, weekend-ratio and 23:00 figures are not in the abstract and could not be checked (full text paywalled). Sec 1 also cites [1] for the 2020 jump, but the paper itself describes [1] as covering 2010-2018 (Sec 2.1), so [1] cannot support that statement; this point comes from reading the paper, not from the script. Overall: four of five load-bearing grey or scholarly sources support their use; two citation details of [1] are inaccurate or unsupported (minor).
script: 17_refs.pyCrossref and Semantic Scholar abstract for [1]; GitHub API metadata, README and SQL for [11] and [28]; project website pages for [29]; blog page for [6] (URL located by a web search, text fetched by the script). Keyword-in-context extraction printed to the log.
Reports stamped exactly 00:00:00 are excluded from night counts only; excluding them from daily counts (S15) gives RR 1.133ConfirmedSec 3.3; Table 12 (S15)
1,011 midnight-stamped noise records in 2010-Oct 2026 (0.012% of daily-window reports; at most 23 on one day, 30 Apr 2011); they are about 4.5 times more frequent than a uniform second-of-hour would imply but negligible in number. Refit excluding them gives RR 1.133 (claimed 1.133). The night series rebuilt with this exclusion reproduces the 4,306,668 total exactly (check 02).
script: 18_midnight.pySocrata counts of records stamped exactly 00:00:00 by year; S15 refit in work/verify/01_refit_h1.py
References
48 references checked
- [1] Tong & Kang, Environmental Research 197:111045, 2021
Exists (Crossref match) and studies NYC, but two uses are inaccurate. Sec 1 cites it for counts that 'rise in late spring and summer', whereas its abstract reports the rate 'peaking in autumn and spring'. Sec 1 also cites it for the 2020 jump, although Sec 2.1 describes [1] as covering 2010-2018. The 2.1-fold, weekend-ratio and 23:00 figures in Sec 2.1 are not in the abstract and could not be checked (full text paywalled). See check 17.
- [28] chheten-T, nyc311-noise-weather-warehouse, GitHub, n.d.
Grey literature (class project, about 500K complaints, raw daily counts vs (TMAX+TMIN)/2 with no calendar terms) used as the main comparison for the curve shape in Sec 5.2. The cited content ('highest around 60 to 70°F ... inverted U') is accurately reported. The citation lacks a date and URL; the repository was created on 2026-09-27.
- [11] Kolenkovskin, nyc311-weather-storytelling, GitHub, 2026
Grey literature (Streamlit storytelling app: Brooklyn, Noise - Residential, 2023, KJFK hourly). The cited content is accurately reported, but it is unreviewed and descriptive, and the citation lacks a URL.
- [29] Deng & Vu, Hot City, Heated Calls, student project report, n.d.
Student project (summer 2025, 12 weeks, tract-level QoL reports). The paper's summary of 'slightly lower' report rates in extreme-heat weeks matches the project's results page, but the source is unreviewed. It is cited n.d. although the project is dated 2025 (repository created 2025-11-01), and it has no URL.
- [6] Reiter, NYC 311 requests follow the calendar, not the weather, blog post, 2025
Self-published blog (Oct 5, 2025) about Grass/Weeds requests. Its finding that weather contributes little once last week's requests and week of year are known is reported correctly. The paper calls it a 'descriptive analysis', but it is a predictive ML comparison. The citation lacks a URL.
- [23] Wang, Liu & Corcoran, A season for complaints, Weather, Climate, and Society, 2021
Incomplete citation: no volume, pages or DOI (Crossref has 10.1175/wcas-d-21-0020.1).
- [26] Thomas, Jeong & Wolff, British Journal of Criminology 65(4):859-877, 2025
Crossref records year 2024 (online-first, doi 10.1093/bjc/azae091) vs cited 2025 (issue year). Probably benign, but adding the DOI would remove the ambiguity.
- [31] Anderson & Bell, Environmental Health Perspectives 119(2):210-218, 2011
Crossref year 2010 (online) vs cited 2011 (issue). Benign.
- [8] Kontokosta, Hong & Korsberg, Bloomberg Data for Good Exchange 2017
Not matched by Crossref (the fuzzy query returned [9]). It is a workshop paper without a DOI; no arXiv ID or URL is given, so it could not be verified automatically.
- [46] Holm, Scandinavian Journal of Statistics 6(2):65-70, 1979
Not matched by Crossref's fuzzy query (it returned a later 'Correction' item). This is a well-known paper and the bibliographic details are correct; no concern beyond the missing DOI/JSTOR identifier.
- [17], [44] National Weather Service OKX web pages (heat-wave climatology; Extreme Heat)
The primary and HW-S2 heat-wave definitions (H3) rest on undated or 2026 web pages without URLs or archived versions. Not indexed; content could not be verified.
- [37]-[39] NYC Open Data datasets and news post
No URLs or access dates are given. The dataset IDs resolve and the December 2025 split is confirmed by Socrata metadata (check 15); [39] itself was not retrieved.
Suggestions
Rewrite the abstract's robustness sentence to report the pre-registered criterion as registered, naming the analyses that fall outside the primary CI (S7c, S17, and S2 at night).
Add a figure or table of cumulative RR at P90 vs maximum lag (0–14 days) for both windows, and qualify the headline and Sec 5.4 accordingly.
Deposit the frozen plan, full hash, timestamped lock file, deviation log, code and results.json at a persistent URL/DOI and cite it in Sec 3.1 and Sec 7.
List all post-freeze choices (BH families, descriptor inclusion rule, S4_2df) as deviations; replace 'rule 5.7' with the rule's text.
State the assumed causal role of humidity, give the hourly dew-point rule, and present the dew-point-adjusted estimates alongside the primary ones.
Add an equivalence or minimum-detectable-effect statement for H3 before interpreting it as 'no increment'.
Fit a type-adjusted or type-stratified income model, and add S22 (borough stations) to Table 12 or a supplementary table.
Compute excess reports by type for Sec 9, or rephrase the attribution sentence; align Sec 9's 'before any results were seen' with Sec 3.1.
Correct the uses of [1] (seasonal peak; 2020 jump), add URLs and access dates for grey literature and datasets, and add the DOI for [23].
Define or drop the 'HAC check (rel. diff.)' column in Table 1, and explain the 9,247-record difference between downloaded and in-window records.
Ethics and integrity
No text in the paper or the requester notes attempts to instruct the reviewer. The author is listed as an AI system (IterSCI) with no responsible human named. Venues that require accountable human authorship will need to address this. Because the paper presents itself as pre-registered while the plan and deviation log are unavailable, the label cannot currently be verified. The handling of income and borough differences is appropriately careful to avoid stigmatising areas or groups.
Scope of this review
Only the PDF was provided: no code, preregistration, lock file, deviation log or results.json, and no URL for them. All reproductions therefore use our own re-implementation on data re-downloaded on 10 Nov 2026. We did not refit the tract-income models (H4c was checked arithmetically from Table 8), the ZCTA sensitivity, the ACS-based quintile assignment, or the Table 10 descriptor models beyond three strata. The exact S17 value could not be reproduced because the hourly dew-point rule is unstated. For [1], only the abstract was accessible, and the NWS pages [17], [44] and the news post [39] were not retrieved.