9  Safety

Script: 04_safety.R
Source: ANSR — Autoridade Nacional de Segurança Rodoviária, road accident georeferenced point data (2019–2023) - via PMUS TML 2025 (TML and Way2Go 2025).

flowchart TB
    Acc["ANSR Road Accidents<br>2019–2023<br>(georeferenced points)"]
    Pop["Census Population<br>(parish and grid)"]
    G1["Geographic units"]
    
    Filter["Filter: last 5 years<br>(2019–2023)"]
    SJoin["st_join: assign accidents<br>to geographic units"]
    ExcludeOuter["Exclude accidents<br>outside localities<br>(freeways/bridges)"]
    
    Acc --> Filter
    Filter --> SJoin
    G1 --> SJoin
    SJoin --> ExcludeOuter
    
    subgraph Aggregate["Aggregate per geographic unit"]
        direction LR
        A1["Total accidents (5 years)"] ~~~ A2["Victim counts:<br>fatal, serious, slight (30-day)"] ~~~ A3["Vehicles involved:<br>motorised, cycle, pedestrian"] ~~~ A4["Context flags:<br>at night, within localities"]
    end
    
    ExcludeOuter --> Aggregate
    
    JoinPop["Join census population"]
    Aggregate --> JoinPop
    Pop --> JoinPop
    
    subgraph CalcIdx["Compute indexes"]
        direction LR
        C1["Severity index:<br>fatalities / total victims"] ~~~ C2["Mode-specific severity:<br>fatalities / vehicles involved"] ~~~ C3["Accident rate<br>per 1,000 residents"] ~~~ C4["Fatality rate<br>per 1,000 residents"]
    end
    
    JoinPop --> CalcIdx
    
    BothSets["All accidents<br>+<br>Within-localities only"]
    CalcIdx --> BothSets

    %% Subgraph styling
    style Aggregate fill:#f8f9fa,stroke:#adb5bd,stroke-width:1px,color:#212529
    style CalcIdx fill:#f8f9fa,stroke:#adb5bd,stroke-width:1px,color:#212529
Figure 9.1: Safety indicators computation

9.1 Accident data filtering

Accidents located outside administrative parish boundaries are excluded. This includes accidents on major bridges (Ponte 25 de Abril, Ponte Vasco da Gama) which cannot be assigned to a parish. Only accidents reported as occurring within localities (dentro das localidades) are used for the IMPT normalisation.

9.2 Safety indicators computed

For each geographical unit and transport mode:

Table 9.1: Safety indicators
Indicator Formula
Total accidents (5 years) Count
Fatalities (30-day) Sum VM_30d
Serious injuries (30-day) Sum FG_30d
Slight injuries (30-day) Sum FL_30d
Accident rate total_acidentes / population × 1000
Fatality rate vitimas_mortais30 / population × 1000
Severity index (total) fatalities / total_victims
Severity index (motorised) fatalities / motorised_vehicles_involved
Severity index (cycling) fatalities / cycling_involved
Severity index (pedestrian) fatalities / pedestrians_involved

Total accidents per 1000 inhabitants

Severity index (total)
Figure 9.2: Examples of safety indicators computed