Methodology
One page, every method. Each analysis page carries the full
detail beside its numbers.
Every figure on this site is computed live from published public records, never hand-entered. Definitions are stated beside every number, exclusions are counted and reported rather than silently dropped, and the site only asserts a direction when a statistical test supports it.
Data sources
- MPD stop data (NEAR Act collection): two published layers covering Jul 2019 to 2022 and 2023 to present, ~509,000 stops of persons. No stop data exists before Jul 22, 2019, when collection began.
- MPD Adult Arrests: 2013 to 2025, ~320,000 records.
- DC incident feed (reported crime): publishes only the nine Part I victim and property offenses; officer-generated offenses (possession, disorderly) are not in this dataset at all.
- Moving violations: monthly datasets 2017 to present, ~98.6% camera-issued, used for the camera-vs-officer comparison.
- ACS 2019-2023 (5-year) population by census tract, assigned to police districts by tract centroid.
Two baselines, both shown
- Residential population: each district's Black stop share against that district's own Black population share (the local index), with the citywide share as a secondary comparison. Live on the districts pages.
- Reported crime: each district's share of enforcement against its share of victim-initiated reported crime, so "police go where crime is" is tested rather than assumed. Because the incident feed contains only victim and property offenses, police activity cannot manufacture this denominator. Live on the crime-baseline page.
- Neither baseline is treated as truth alone; findings are reported under both, including where they disagree.
Statistical tests and gating
- Significance gating. The site never asserts a direction the data cannot support: hit-rate gaps use a two-proportion z-test (two-sided, 5% level) and non-significant gaps render as "statistically indistinguishable". Outcome test.
- Veil-of-darkness (Grogger & Ridgeway): Mantel-Haenszel odds ratio across 30-minute clock strata inside the inter-twilight window, with the Robins-Breslow-Greenland variance; a district-stratified variant separates lighting from deployment geography, and a DST transition-window variant holds season nearly constant. Veil test.
- Search outcome test (hit rates): compares how often searches of each group actually find contraband; unrecorded outcomes are excluded and counted, never guessed. Searches.
- Bayesian threshold test (Simoiu, Corbett-Davies & Goel): infers the latent evidence bar behind search decisions per district and race group, the standard remedy for the infra-marginality problem that limits hit-rate comparisons. Fit offline by MCMC, posterior stored, fit quality checked against the observed rates. Threshold test.
Conventions that hold everywhere
- Grain: stops of persons (multi-person stops count each person), paired against person population.
- Snapshots: every query is scoped to the latest finished ingest batch per source, so releases never double-count.
- Exclusions are loud: unknown-race and unmapped-district records are excluded from denominators, counted, and reported on every page.
- No rankings: districts are listed in numeric order and compared to their own baselines, never placed on a most-to-least list.
- Neighborhood briefs: each area is attributed to the police district(s) where its reported incidents fall; reported incidents measure what residents report to MPD, not how safe a place is. Briefs.
Known limitations
- Residential population is not exposure population (commuters, nightlife); the crime baseline and the day/night split partially address this.
- Reported crime is not occurred crime; reporting rates vary by neighborhood.
- MPD race/ethnicity categories and ACS census categories are different measurement instruments; counts are large enough that headline conclusions do not turn on the mismatch.
- MPD stop records carry no coordinates and no vehicle/pedestrian flag; geography is district-grained and the traffic-stop proxy is the Ticket Only subset.
- MPD crime classification operated without an independent review unit from 2013 until the 2026 reforms: the DC Inspector General (OIG No. 26-E-03-FA0, July 28, 2026) found a prolonged breakdown of classification and reporting controls, and separate House, DOJ, and MPD internal affairs findings (December 2025 and May 2026) document case-level manipulation of classifications for 2023–2025. Every number on this site with a reported-crime denominator inherits MPD's classification decisions for that period; the classification-mix analysis tests the archive at both boundaries.
The analyses: Stops by district | The disparity over time | Searches: the outcome test | Arrests by district | Camera vs officer enforcement | Veil-of-darkness test | Enforcement vs reported crime | The search-threshold test | Classification mix over time