# Sampled-period speed comparison: methods

16th Street and Monon Trail, Indianapolis. Analysis dated October 4, 2026.
Source: public speed-study release r2 (September 17, 2026).

PRE March 27-April 23, 2026; POST April 28-May 31, after the April 25 build.
Dates are irregular volunteer samples, not continuous monitoring. Session clocks
are assumed Indianapolis local time; the source records no explicit timezone.
No individual speed reading has a timestamp. AM/PM labels are recorded session
fields. Split PM into weekday evenings and weekend afternoons using recorded dates.

8,986 speed readings retained: 3,880 PRE and 5,106 POST. The two r2 flagged POST
readings remain excluded; raw rows stay in the source release. Period comparisons
exclude 286 PRE readings without a recorded period, so their PRE denominator is
3,594. These counts do not establish distinct vehicle identities. The instrument
recorded slower vehicles at a 10 mph floor, according to the existing study notes.

Pool retained readings within each period and phase. Give each reading equal
weight. Count above-25 speeds strictly greater than 25; divide by retained n.
Quantiles use linear interpolation. An empty session contributes no speed mean.

Collection windows differ. Wednesday AM PRE 08:05-08:30 and POST 08:34-09:34
do not overlap. Other times vary or are ambiguous/missing. Four April 23 PRE PM
records overlap; repeated vehicle sampling is unverified. Records are not silently
deduplicated. Excluding all April 23 PRE PM records gives 22.5 to 15.8 mph,
compared with 21.8 to 15.8 mph when included. This supports the descriptive direction,
not an exact causal effect or an assurance of unique vehicle counts.

Alternative weights are supporting mean sensitivities: equal nonempty session,
equal date, or equal shared weekday. Within each unit, readings are pooled first.
Shared-weekday comparisons change included observations as well as weights and
cannot remove confounding. Leave-one-date-out ranges omit one date in one phase
at a time; these are sensitivity ranges, not confidence intervals. These checks
do not reweight percentiles or threshold shares. No hourly full-day, geographic-point,
statistical-significance, injury-risk or causal claim is made.

## Reproduce

Download source-r2.zip and speed_time_of_day.py from this folder. Extract the ZIP
and pass the folder containing speed_observations_public.csv, survey_sessions_public.csv
and release-hashes.json as --release:

```sh
python3 speed_time_of_day.py --release PATH_TO_EXTRACTED_RELEASE --output reproduced
```

Python 3 standard library only. The script verifies every release hash and
reconciles all 29 nonempty session summaries with r2 before writing outputs.
verification.json records the input and output hashes of the full local analysis
package. This website publishes the comparison/coverage/sensitivity CSVs and two
charts; the complete local review README and preview are not required to reproduce
the numeric results. The linked source package carries the release privacy treatment
and license. No respondent identities appear in these derived outputs.
