2. Data sources for crash injury prediction

Crash injury prediction is fundamentally a data-integration problem before it is a modeling problem. A random forest or XGBoost model can only learn the relationship between crash circumstances and injury outcomes if the training table contains, for each crash or each occupant, a coherent set of predictors and a trustworthy injury label. In practice, no single source provides both. Police crash reports describe the event and its immediate circumstances; hospital records describe the medical outcome; vehicle telemetry captures the kinematic severity of the impact; and roadway inventory datasets describe the infrastructure context in which the crash occurred. This chapter explains what each source actually contains, how the four are linked, and what data-quality problems must be resolved before any gradient-boosted tree is trained.

What each source contributes

Police crash reports are the conventional backbone of crash analysis. In the United States, the Model Minimum Uniform Crash Criteria (MMUCC) defines a recommended set of data elements, and state crash forms generally follow it: crash date, time, and location; roadway and weather conditions; crash configuration (rear-end, angle, head-on, rollover); vehicle type and model year; occupant seating position, restraint use, and ejection status; driver age and license status; posted speed limit; and an injury severity code per person, typically on the KABCO scale (K = fatal, A = suspected serious injury, B = suspected minor injury, C = possible injury, O = no injury). The critical limitation is that KABCO is assigned by the investigating officer at the scene, often from visible symptoms and self-report, and is therefore a suspected severity rather than a clinical diagnosis. Officers systematically under-classify serious injuries, particularly internal injuries and delayed-onset conditions.

Hospital records — emergency department registries, trauma center databases, and administrative discharge datasets such as HCUP or state inpatient databases — provide the clinical ground truth. The Injury Severity Score (ISS) is computed from the Abbreviated Injury Scale (AIS) for each of six body regions; ISS is the sum of the squares of the three highest AIS scores, ranges from 0 to 75, and any AIS 6 injury is automatically assigned ISS 75. A common binary target is ISS >= 16, the conventional threshold for "serious injury" in trauma research. Hospital data also carry ICD-10-CM diagnosis codes, length of stay, ICU admission, procedures, and discharge disposition. The cost is linkage difficulty: hospital records contain no crash identifier, so probabilistic matching on date, time, age, sex, and geographic proximity is required, and match rates in the literature commonly fall between 50% and 80%.

Vehicle telemetry — event data recorders (EDRs, the "black box" mandated in US light vehicles since 2013 under 49 CFR Part 563), connected-vehicle feeds, and fleet telematics — supplies the physical severity of the event. Typical EDR fields include pre-crash speed, speed at impact, longitudinal and lateral delta-V, principal direction of force (PDOF), seat belt status, airbag deployment timing, and multiple sample points at 0.1 s or finer resolution. Delta-V is the single most predictive continuous variable for injury outcome, and its availability transforms a categorical problem into a physically grounded one. Access is the constraint: EDR data require either owner consent, legal process, or a commercial retrieval service, and coverage is far from universal across the crash population.

Roadway inventory — state DOT linear referencing systems (LRS), the Highway Performance Monitoring System (HPMS), and asset management databases — describes the road itself: functional class, number of lanes, lane and shoulder width, horizontal and vertical alignment, median type, access control, intersection configuration, pavement friction, and posted speed. These variables enter the model as context features and are joined spatially rather than by identifier, using the crash's route and milepoint or its GPS coordinates projected onto the LRS.

Four crash data sources and their linkage into a single modeling table Police crash reports, hospital records, vehicle telemetry, and roadway inventory each contribute distinct fields. They are joined by crash identifier, probabilistic matching, EDR retrieval, and spatial linear referencing respectively, then resolved into one analysis-ready table with a target label and predictors. Police Crash Report KABCO severity (suspected) Crash configuration Restraint / ejection Route + milepoint Date, time, weather Hospital Records AIS per body region ISS (0–75) ICD-10-CM diagnoses LOS, ICU, disposition No crash identifier Vehicle Telemetry Delta-V, PDOF Pre-crash speed Belt / airbag status Roadway Inventory Functional class, lanes Lane / shoulder width Alignment, median type Posted speed, friction LRS route + milepoint Join key Crash ID deterministic Person / vehicle ID within report Probabilistic match date ± 1 day age, sex county / ZIP arrival time window expect 50–80% match EDR retrieval VIN + crash time consent / legal process partial coverage Spatial join GPS → LRS projection route + milepoint tolerance ± 0.05 mi watch segment splits Analysis-ready table 1 row = 1 occupant Target: ISS ≥ 16 Predictors: 30–60 Missingness flags Source provenance Linkage confidence → Random Forest → XGBoost stratify splits by source & severity Each source is joined by a different mechanism; linkage quality, not model choice, usually dominates final predictive performance.

Linkage mechanics and the record-level join

The four sources are joined at different grains, and reconciling those grains is where most projects fail. Police reports are naturally crash-level, vehicle-level, and person-level; hospital records are patient-encounter-level; EDR records are vehicle-event-level; roadway inventory is segment-level. The modeling table should be built at the occupant level, because injury is an occupant outcome and restraint use, seating position, and delta-V all vary within a single vehicle.

Deterministic joins use the crash report number and the person/vehicle sequence numbers within it. Hospital linkage is the hard step. A workable probabilistic procedure is: block candidate pairs by county and crash date within ±1 day; score each pair on agreement of age (±1 year), sex, and hospital arrival time falling within a plausible post-crash window (for example, 0–6 hours after the reported crash time); accept pairs above a score threshold and manually review the ambiguous band. Report the match rate and compare the matched and unmatched subsets on KABCO distribution — if matched crashes are systematically more severe, the linked dataset is not representative and the model will inherit that bias.

Roadway joins use the crash's route and milepoint where available, and otherwise project GPS coordinates onto the state LRS. A tolerance of roughly 0.05 miles is typical, but LRS segmentation changes over time, so the inventory version must match the crash year. EDR joins require the VIN plus an event timestamp; where EDR is unavailable, delta-V must be imputed or the feature dropped, and a missingness indicator should be retained so the tree can learn whether EDR availability itself carries signal.

Data quality issues that change model behavior

Three problems deserve explicit handling before training. First, label noise from KABCO: if the target is officer-assigned KABCO, the model learns officer perception, not injury. Prefer the hospital-derived ISS >= 16 label where linkage permits, and treat KABCO as a predictor rather than the target. Second, selection bias: property-damage-only crashes are under-reported to police, minor-injury occupants often never reach a trauma center, and EDR coverage skews toward newer and higher-trim vehicles. The resulting dataset over-represents severe outcomes relative to the true crash population, which inflates apparent model performance and distorts predicted probabilities. Third, missingness that is not random: delta-V missing because no EDR was retrieved is correlated with vehicle age and crash severity, so mean imputation is inappropriate; use native handling in XGBoost or explicit missing-value routing in random forest, and always keep the indicator.

Do not merge hospital and police data on name alone. Names are frequently misspelled, shared, or absent for transported occupants, and a name-based join will silently create false matches that corrupt the injury label — the single most damaging error in this pipeline.

A reproducible integration checklist

The following table is a working specification for the integration stage; the field names are illustrative and should be mapped to the actual schema of each source.

StepOperationKey fieldsVerification
1Load and version each source for the study yearscrash_year, lrs_version, edr_releaseRow counts reconcile to source totals
2Build occupant spine from police person tablecrash_id, vehicle_no, person_noOne row per reported occupant
3Attach hospital outcome by probabilistic matchage, sex, county, crash_date, arrival_tsMatch rate reported; severity balance checked
4Attach EDR kinematics by VIN and event timevin, event_ts, delta_v, pdofDelta-V distribution plausible (0–120 km/h)
5Spatial join to roadway inventoryroute, milepoint, gps_lat, gps_lonJoin rate > 95%; unmatched segments listed
6Derive target and missingness flagsiss, iss16, dv_missing, edr_missingTarget prevalence documented
7Freeze and hash the analysis tabletable_hash, build_dateReproducible rebuild from raw sources

A concrete sanity check after step 6: cross-tabulate iss16 against KABCO. You should observe a strong but imperfect monotonic relationship — most KABCO "A" occupants will have ISS ≥ 16, but a non-trivial share of "B" and even "C" occupants will too. If that share is near zero, suspect that the hospital match is preferentially capturing only the most severe cases; if it is implausibly high, suspect false matches. This single diagnostic catches most linkage failures before any model is fit, and it is far cheaper than discovering the problem through unstable feature importances later.

Record provenance for every column — source system, extraction date, and transformation — in a data dictionary alongside the table. When a random forest and an XGBoost model disagree on feature importance, provenance is usually what explains the discrepancy.