# Sample: Corporate security and travel risk, Mexico City: report

Project: Sample: Corporate security and travel risk, Mexico City  
Goal: Describe the project Sample: Corporate security and travel risk, Mexico City: run the analyses that tell the most about its data, draw every result, and write a cited report.  
Run: 294d550b-9eea-4398-b429-6280256992ba (running, 11 agent run(s))  
Generated: 2026-10-18T05:29:33Z, version 1  
Model cost: USD 0.0000 over 0 model call(s)  

## Data used

| Data | Kind | Rows | Time span | Summary | Source |
| --- | --- | --- | --- | --- | --- |
| Company sites | vector, Point | 8 |  | 8 point features; 'type' has 4 values (top: office 3, warehouse 2, client 2); 'security_level' has 2 values (top: standard 6, enhanced 2); 'staff' 8 to 420 (mean 97.5); named by 'name' (e.g. Head office, Distribution center, Sales office Norte); extent -99.1652,19.4107 to -99.1046,19.4578. Point locations of Company sites by type. | [107] |
| Hotels | vector, Point | 30 |  | 30 point features; 'approved' has 2 values (top: True 17, False 13); 'stars' 3 to 5 (mean 4.067); named by 'name' (e.g. Hotel Los Pinos 1, Hotel El Cerro 2, Hotel La Fuente 3); extent -99.1728,19.4108 to -99.1024,19.4643. Point locations of Hotels by approved. | [108] |
| Travel routes | vector, LineString | 10 |  | 10 line features; 'mode' has 2 values (top: approved taxi 8, company car 2); 'typical_min' 19 to 44 (mean 30.2); named by 'name' (e.g. Airport to Head office, Airport to Hotel Los Pinos 1, Hotel Los Pinos 1 to Head office); total length 51.24 km; extent -99.1652,19.4105 to -99.0901,19.4643. Lines (Travel routes) such as routes or networks. | [109] |
| Security incidents | vector, Point | 1,700 | 2025-10-01 to 2026-09-30 | 1,700 point features; dated by 'occurred_at' from 2025-10-01 to 2026-09-30; 'type' has 8 values (top: robbery 456, theft 390, vandalism 252); 'severity' has 3 values (top: low 832, medium 610, high 258); extent -99.1802,19.3971 to -99.0859,19.4682. Dated point events by type: where and when Security incidents happen. | [2] |
| Risk zones | vector, Polygon | 14 |  | 14 polygon (area) features; 'night_travel' has 3 values (top: escort 5, allowed 5, avoid 4); 'risk_score' 1 to 10 (mean 6.143); named by 'name' (e.g. La Ribera, Los Pinos, El Cerro); total area 80.06 km2; extent -99.1809,19.3964 to -99.0856,19.4688. Areas (Risk zones) with risk_score to compare and map. | [110] |
| Hospitals | vector, Point | 15 |  | 15 point features; 'english_speaking' has 2 values (top: False 9, True 6); 'trauma_level' 1 to 3 (mean 1.6); named by 'name' (e.g. Hospital Las Acacias, Hospital El Puerto Viejo, Hospital La Alameda); extent -99.1691,19.4018 to -99.0923,19.4672. Point locations of Hospitals by english_speaking. | [111] |
| Safe havens | vector, Point | 12 |  | 12 point features; 'type' has 4 values (top: partner office 4, embassy 4, hotel 3); 'open_24h' has 2 values (top: True 6, False 6); extent -99.1732,19.4029 to -99.0999,19.4675. Point locations of Safe havens by type. | [112] |
| Protest events | vector, Point | 80 | 2026-01-05 to 2026-09-28 | 80 point features; dated by 'date' from 2026-01-05 to 2026-09-28; 'size' has 3 values (top: large 32, small 28, medium 20); 'theme' has 4 values (top: education 23, water 22, labor 21); extent -99.1465,19.4258 to -99.1195,19.4519. Dated point events by size: where and when Protest events happen. | [3] |
| Travel log | table | 400 | 2025-10-01 to 2026-09-30 | Table of 400 rows and 6 columns without geometry; dated by 'date' from 2025-10-01 to 2026-09-30; 'incident_reported' has 2 values (top: False 390, True 10); 'travellers' 1 to 4 (mean 2.56); 'delay_min' 0 to 24 (mean 6.668). A table of Travel log without locations. | [4] |
| Site guard roster | table | 16 |  | Table of 16 rows and 4 columns without geometry; 'shift' has 2 values (top: day 8, night 8); 'armed' has 2 values (top: False 15, True 1); 'guards' 1 to 6 (mean 4.188). A table of Site guard roster without locations. | [113] |
| Country security briefing | document |  |  | 1-page pdf document 'Country security briefing'; language en; mentions 7 place(s): Head office to Distribution center (1), Head of (1), Distribution (1), La Ribera (1), Head office (1). A document about Head office to Distribution center, Head of, Distribution. | [114] |
| Hotel security assessment | document |  |  | 1-page md document 'Hotel security assessment'; language en; mentions 4 place(s): Hotel Los Pinos 1 (1), Hotel El Cerro 2 (1), Head office (1), Hotel La Fuente 3 (1). A document about Hotel Los Pinos 1, Hotel El Cerro 2, Head office. | [115] |
| Sample: Corporate security and travel risk, Mexico City | record |  |  |  | [116] |
| Hot spot analysis: Protest events | layer, Polygon | 29 |  |  | [117] |
| Hot spot analysis: Hotels | layer, Polygon | 14 |  |  | [118] |
| Hot spot analysis: Security incidents | layer, Polygon | 353 |  |  | [119] |
| Emerging hot spots: Protest events | layer, Polygon | 14 |  |  | [120] |
| Emerging hot spots: Security incidents | layer, Polygon | 108 |  |  | [121] |
| Repeat and near repeat classification: Protest events | layer, Point | 80 |  |  | [122] |
| Summarize within: Risk zones | layer, Polygon | 14 |  |  | [123] |
| Summarize within: Risk zones | layer, Polygon | 14 |  |  | [124] |
| Summarize within: Risk zones | layer, Polygon | 14 |  |  | [125] |
| Find point clusters: Hospitals | layer, Point | 15 |  |  | [126] |
| Find point clusters: cluster hulls | layer, Polygon | 1 |  |  | [127] |
| Find point clusters: Safe havens | layer, Point | 12 |  |  | [128] |
| Find point clusters: cluster hulls | layer, Polygon | 2 |  |  | [129] |
| Find point clusters: Protest events | layer, Point | 80 |  |  | [130] |
| Find point clusters: cluster hulls | layer, Polygon | 1 |  |  | [131] |
| Calculate density: Protest events | layer, Polygon | 386 |  |  | [132] |
| Calculate density: Hotels | layer, Polygon | 82 |  |  | [133] |
| Calculate density: Security incidents | layer, Polygon | 2,240 |  |  | [134] |
| Find outliers: Risk zones | layer, Polygon | 14 |  |  | [135] |
| Find nearest: Hospitals | layer, Point | 14 |  |  | [136] |
| Find nearest: Hospitals | layer, Point | 14 |  |  | [137] |
| Find nearest: Hospitals | layer, Point | 6 |  |  | [138] |

## Timeline

![Timeline: events per week by dataset](charts/28-timeline-events-per-week-by-dataset.png)

*Figure 1. Timeline: events per week by dataset [1]. Per week, 2025-09-29 to 2026-09-28. Source: Security incidents, Protest events, Travel log (2,180 features). The data is in the appendix.*

The timeline counts 2,180 dated events in Security incidents, Protest events, Travel log per week, from week of 2025-09-29 to week of 2026-09-28 [1][2][3][4]. By dataset: Security incidents 1,700; Travel log 400; Protest events 80 [1]. The trend is +0.105 events per week; the second half of the weeks has 1,079 against 1,078 in the first (+0.1%) [1].

**Busiest weeks**

- week of 2026-03-02: 123 events [1]
- week of 2026-06-08: 120 events [1]
- week of 2026-04-27: 110 events [1]

**Quietest weeks**

- week of 2026-09-28: 19 events [1]
- week of 2025-10-20: 21 events [1]
- week of 2026-07-20: 22 events [1]

## Hot spots

**What this analysis is.** Hot spot analysis: Getis-Ord Gi* hot and cold spots with z-scores, p-values and confidence bins [5]. In ArcGIS it is Find Hot Spots or Hot Spot Analysis (Getis-Ord Gi*); in QGIS, qgis:hotspot (plugin) [5].

**Why it was run on this data.** 80 points: Getis-Ord Gi* tests whether the concentrations in Protest events are statistically significant [6].

**What it found.** Hot spots on Protest events: Hot spot analysis: 1 layer saved: Hot spot analysis: Protest events (29 features) [7][8]. It reported result, bins 29; result, count 29; result, elapsed ms 5; result, cell size m 500; result, incidents used 80; result, distance band m 1,000 [7].

| Result | Value |
| --- | --- |
| result, bins | 29 |
| result, count | 29 |
| result, elapsed ms | 5 |
| result, cell size m | 500 |
| result, incidents used | 80 |
| result, distance band m | 1,000 |
| billing, cost | 0.0516 |
| billing, list price | 0.0516 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Hot spots on Protest events: Hot spot analysis: 1 layer saved: Hot spot analysis: Protest events (29 features) [7][8].
- **Evidenced:** It reported result, bins 29; result, count 29; result, elapsed ms 5; result, cell size m 500; result, incidents used 80; result, distance band m 1,000 [7].

*A model draft was discarded because a sentence did not cite a source of this section.*

*Tool gp_hot_spots; parameters {"project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Protest events (cf75e6b1)"}, "aggregation": "hexagon", "cell_size_m": 500.0, "distance_band_m": 1000.0}*

## Hot spots

**What this analysis is.** Hot spot analysis: Getis-Ord Gi* hot and cold spots with z-scores, p-values and confidence bins [5]. In ArcGIS it is Find Hot Spots or Hot Spot Analysis (Getis-Ord Gi*); in QGIS, qgis:hotspot (plugin) [5].

**Why it was run on this data.** 30 points: Getis-Ord Gi* tests whether the concentrations in Hotels are statistically significant [9].

**What it found.** The hot spot analysis generated 14 features [10] after processing the Hotels layer [11]. The analysis used 30 incidents and set both the distance band and cell size to 2,000 m [10]. The process completed quickly, taking 2 ms [10]. The billing for this analysis was 0.0506 [10].

| Result | Value |
| --- | --- |
| result, bins | 14 |
| result, count | 14 |
| result, elapsed ms | 2 |
| result, cell size m | 2,000 |
| result, incidents used | 30 |
| result, distance band m | 2,000 |
| billing, cost | 0.0506 |
| billing, list price | 0.0506 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Hot spots on Hotels: Hot spot analysis: 1 layer saved: Hot spot analysis: Hotels (14 features) [10][11].
- **Evidenced:** It reported result, bins 14; result, count 14; result, elapsed ms 2; result, cell size m 2,000; result, incidents used 30; result, distance band m 2,000 [10].

*Tool gp_hot_spots; parameters {"project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Hotels (28842e9c)"}, "aggregation": "hexagon", "cell_size_m": 2000.0, "distance_band_m": 2000.0}*

## Hot spots

**What this analysis is.** Hot spot analysis: Getis-Ord Gi* hot and cold spots with z-scores, p-values and confidence bins [5]. In ArcGIS it is Find Hot Spots or Hot Spot Analysis (Getis-Ord Gi*); in QGIS, qgis:hotspot (plugin) [5].

**Why it was run on this data.** 1700 points: Getis-Ord Gi* tests whether the concentrations in Security incidents are statistically significant [12].

**What it found.** Hot spots on Security incidents: Hot spot analysis: 1 layer saved: Hot spot analysis: Security incidents (353 features) [13][14]. It reported result, bins 353; result, count 353; result, elapsed ms 18; result, cell size m 500; result, incidents used 1,700; result, distance band m 500 [13].

| Result | Value |
| --- | --- |
| result, bins | 353 |
| result, count | 353 |
| result, elapsed ms | 18 |
| result, cell size m | 500 |
| result, incidents used | 1,700 |
| result, distance band m | 500 |
| billing, cost | 0.084 |
| billing, list price | 0.084 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Hot spots on Security incidents: Hot spot analysis: 1 layer saved: Hot spot analysis: Security incidents (353 features) [13][14].
- **Evidenced:** It reported result, bins 353; result, count 353; result, elapsed ms 18; result, cell size m 500; result, incidents used 1,700; result, distance band m 500 [13].

*Tool gp_hot_spots; parameters {"project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Security incidents (afb5d90c)"}, "aggregation": "hexagon", "cell_size_m": 500.0, "distance_band_m": 500.0}*

## Space time hot spots

**What this analysis is.** Emerging hot spots: Where hot spots are new, consecutive, intensifying, persistent, diminishing, sporadic, oscillating or historical over time [15]. In ArcGIS it is Emerging Hot Spot Analysis or Create Space Time Cube [15].

**Why it was run on this data.** Protest events carry dates in 'date': emerging hot spot analysis finds new, intensifying and fading hot spots per week [16].

**What it found.** Space time hot spots on Protest events: Emerging hot spots: 1 layer saved: Emerging hot spots: Protest events (14 features) [8][17]. It reported result, count 14; result, elapsed ms 4; result, resolution 8; result, features used 80; result, time neighbors 0; billing, cost 0.104 [17].

| Result | Value |
| --- | --- |
| result, count | 14 |
| result, elapsed ms | 4 |
| result, resolution | 8 |
| result, features used | 80 |
| result, time neighbors | 0 |
| billing, cost | 0.104 |
| billing, list price | 0.104 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Space time hot spots on Protest events: Emerging hot spots: 1 layer saved: Emerging hot spots: Protest events (14 features) [8][17].
- **Evidenced:** It reported result, count 14; result, elapsed ms 4; result, resolution 8; result, features used 80; result, time neighbors 0; billing, cost 0.104 [17].

*A model draft was discarded because a sentence did not cite a source of this section.*

*Tool gp_space_time_hot_spots; parameters {"project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Protest events (cf75e6b1)"}, "interval": "week", "bin_shape": "h3", "resolution": 8, "time_field": "date"}*

## Space time hot spots

**What this analysis is.** Emerging hot spots: Where hot spots are new, consecutive, intensifying, persistent, diminishing, sporadic, oscillating or historical over time [15]. In ArcGIS it is Emerging Hot Spot Analysis or Create Space Time Cube [15].

**Why it was run on this data.** Security incidents carry dates in 'occurred_at': emerging hot spot analysis finds new, intensifying and fading hot spots per week [18].

**What it found.** Space time hot spots on Security incidents: Emerging hot spots: 1 layer saved: Emerging hot spots: Security incidents (108 features) [14][19]. It reported result, count 108; result, elapsed ms 21; result, resolution 8; result, features used 1,700; result, time neighbors 0; billing, cost 0.185 [19].

| Result | Value |
| --- | --- |
| result, count | 108 |
| result, elapsed ms | 21 |
| result, resolution | 8 |
| result, features used | 1,700 |
| result, time neighbors | 0 |
| billing, cost | 0.185 |
| billing, list price | 0.185 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Space time hot spots on Security incidents: Emerging hot spots: 1 layer saved: Emerging hot spots: Security incidents (108 features) [14][19].
- **Evidenced:** It reported result, count 108; result, elapsed ms 21; result, resolution 8; result, features used 1,700; result, time neighbors 0; billing, cost 0.185 [19].

*Tool gp_space_time_hot_spots; parameters {"project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Security incidents (afb5d90c)"}, "interval": "week", "bin_shape": "h3", "resolution": 8, "time_field": "occurred_at"}*

## Near repeat

**What this analysis is.** Repeat and near repeat classification: Classify incidents as originators, repeats (same place) or near repeats within a distance and time window, with a Knox test table [20]. In ArcGIS it is Repeat and Near Repeat Classification or Near Repeat Calculator [20].

**Why it was run on this data.** Near repeat analysis tests whether Protest events close in space also follow each other within 27 days [21].

**What it found.** The tool executed used the Protest events data [8] to classify near repeats [22]. The resulting dataset contained a count of 80 pairs [22], with 11 total chains identified [22]. Furthermore, 15 pairs were linked, and the average distance was reported as 200 m [22].

| Result | Value |
| --- | --- |
| result, days | 27 |
| result, count | 80 |
| result, chains | 11 |
| result, distance m | 200 |
| result, elapsed ms | 4 |
| result, pairs linked | 15 |
| billing, cost | 0.0524 |
| billing, list price | 0.0524 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Near repeat on Protest events: Repeat and near repeat classification: 1 layer saved: Repeat and near repeat classification: Protest events (80 features) [8][22].
- **Evidenced:** It reported result, days 27; result, count 80; result, chains 11; result, distance m 200; result, elapsed ms 4; result, pairs linked 15 [22].

*Tool gp_near_repeat; parameters {"days": 27, "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Protest events (cf75e6b1)"}, "distance_m": 200.0, "time_field": "date"}*

## Summarize within

**What this analysis is.** Summarize within: Count and aggregate the features inside each polygon (or bin), proportionally for lines and polygons [23]. In ArcGIS it is Summarize Within or Aggregate Points; in QGIS, native:countpointsinpolygon or native:sumlinelengths [23].

**Why it was run on this data.** Count Hospitals inside each feature of Risk zones by english_speaking; the counts map as a choropleth (natural breaks, sequential colors) [24].

**What it found.** Summarize within on Hospitals, Risk zones: Summarize within: 1 layer saved: Summarize within: Risk zones (14 features) [25][26][27]. It reported result, count 14; result, elapsed ms 0; billing, cost 0.0106; billing, list price 0.0106; billing, upstream cost 0 [25].

| Result | Value |
| --- | --- |
| result, count | 14 |
| result, elapsed ms | 0 |
| billing, cost | 0.0106 |
| billing, list price | 0.0106 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Summarize within on Hospitals, Risk zones: Summarize within: 1 layer saved: Summarize within: Risk zones (14 features) [25][26][27].
- **Evidenced:** It reported result, count 14; result, elapsed ms 0; billing, cost 0.0106; billing, list price 0.0106; billing, upstream cost 0 [25].

*Tool gp_summarize_within; parameters {"stats": [{"stat": "sum", "field": "trauma_level"}], "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Hospitals (8a96a3d4)"}, "group_by": "english_speaking", "polygons": {"layer": "Risk zones (a4d2e294)"}}*

## Summarize within

**What this analysis is.** Summarize within: Count and aggregate the features inside each polygon (or bin), proportionally for lines and polygons [23]. In ArcGIS it is Summarize Within or Aggregate Points; in QGIS, native:countpointsinpolygon or native:sumlinelengths [23].

**Why it was run on this data.** Count Hospitals inside each feature of Risk zones by english_speaking; the counts map as a choropleth (natural breaks, sequential colors) [24].

**What it found.** Summarize within on Safe havens, Risk zones: Summarize within: 1 layer saved: Summarize within: Risk zones (14 features) [27][28][29]. It reported result, count 14; result, elapsed ms 0; billing, cost 0.01052; billing, list price 0.01052; billing, upstream cost 0 [28].

| Result | Value |
| --- | --- |
| result, count | 14 |
| result, elapsed ms | 0 |
| billing, cost | 0.01052 |
| billing, list price | 0.01052 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Summarize within on Safe havens, Risk zones: Summarize within: 1 layer saved: Summarize within: Risk zones (14 features) [27][28][29].
- **Evidenced:** It reported result, count 14; result, elapsed ms 0; billing, cost 0.01052; billing, list price 0.01052; billing, upstream cost 0 [28].

*Tool gp_summarize_within; parameters {"stats": [], "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Safe havens (d7ec6bb0)"}, "group_by": "type", "polygons": {"layer": "Risk zones (a4d2e294)"}}*

## Summarize within

**What this analysis is.** Summarize within: Count and aggregate the features inside each polygon (or bin), proportionally for lines and polygons [23]. In ArcGIS it is Summarize Within or Aggregate Points; in QGIS, native:countpointsinpolygon or native:sumlinelengths [23].

**Why it was run on this data.** Count Hospitals inside each feature of Risk zones by english_speaking; the counts map as a choropleth (natural breaks, sequential colors) [24].

**What it found.** The analysis employed the `gp_summarize_within` tool [30], accepting Protest events [8] and Risk zones [27] as inputs [30]. This process yielded a result count of 14 [30].

| Result | Value |
| --- | --- |
| result, count | 14 |
| result, elapsed ms | 0 |
| billing, cost | 0.01188 |
| billing, list price | 0.01188 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Summarize within on Protest events, Risk zones: Summarize within: 1 layer saved: Summarize within: Risk zones (14 features) [8][27][30].
- **Evidenced:** It reported result, count 14; result, elapsed ms 0; billing, cost 0.01188; billing, list price 0.01188; billing, upstream cost 0 [30].

*Tool gp_summarize_within; parameters {"stats": [], "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Protest events (cf75e6b1)"}, "group_by": "size", "polygons": {"layer": "Risk zones (a4d2e294)"}}*

## Find point clusters

**What this analysis is.** Find point clusters: Density-based clusters (DBSCAN, HDBSCAN or OPTICS, optionally space-time) with hulls and noise [31]. In ArcGIS it is Find Point Clusters or Density-based Clustering; in QGIS, native:dbscanclustering or native:stdbscanclustering [31].

**Why it was run on this data.** DBSCAN finds dense groups of Hospitals and separates noise [32].

**What it found.** Find point clusters on Hospitals: Find point clusters: 2 layers saved: Find point clusters: Hospitals (15 features); Find point clusters: cluster hulls (1 feature) [26][33]. It reported result, count 15; result, noise 4; result, distance m 2,000; result, elapsed ms 2; result, min points 3; billing, cost 0.0503 [33].

| Result | Value |
| --- | --- |
| result, count | 15 |
| result, noise | 4 |
| result, distance m | 2,000 |
| result, elapsed ms | 2 |
| result, min points | 3 |
| billing, cost | 0.0503 |
| billing, list price | 0.0503 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Find point clusters on Hospitals: Find point clusters: 2 layers saved: Find point clusters: Hospitals (15 features); Find point clusters: cluster hulls (1 feature) [26][33].
- **Evidenced:** It reported result, count 15; result, noise 4; result, distance m 2,000; result, elapsed ms 2; result, min points 3; billing, cost 0.0503 [33].

*Tool gp_find_point_clusters; parameters {"method": "dbscan", "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Hospitals (8a96a3d4)"}, "distance_m": 2000.0, "min_points": 3}*

## Find point clusters

**What this analysis is.** Find point clusters: Density-based clusters (DBSCAN, HDBSCAN or OPTICS, optionally space-time) with hulls and noise [31]. In ArcGIS it is Find Point Clusters or Density-based Clustering; in QGIS, native:dbscanclustering or native:stdbscanclustering [31].

**Why it was run on this data.** DBSCAN finds dense groups of Safe havens and separates noise [34].

**What it found.** The tool saved 2 layers: Find point clusters: Safe havens found 12 features, and Find point clusters: cluster hulls found 2 features [35]. The process resulted in 12 points, with 4 points categorized as noise [35].

| Result | Value |
| --- | --- |
| result, count | 12 |
| result, noise | 4 |
| result, distance m | 2,000 |
| result, elapsed ms | 1 |
| result, min points | 3 |
| billing, cost | 0.05024 |
| billing, list price | 0.05024 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Find point clusters on Safe havens: Find point clusters: 2 layers saved: Find point clusters: Safe havens (12 features); Find point clusters: cluster hulls (2 features) [29][35].
- **Evidenced:** It reported result, count 12; result, noise 4; result, distance m 2,000; result, elapsed ms 1; result, min points 3; billing, cost 0.05024 [35].

*Tool gp_find_point_clusters; parameters {"method": "dbscan", "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Safe havens (d7ec6bb0)"}, "distance_m": 2000.0, "min_points": 3}*

## Find point clusters

**What this analysis is.** Find point clusters: Density-based clusters (DBSCAN, HDBSCAN or OPTICS, optionally space-time) with hulls and noise [31]. In ArcGIS it is Find Point Clusters or Density-based Clustering; in QGIS, native:dbscanclustering or native:stdbscanclustering [31].

**Why it was run on this data.** DBSCAN finds dense groups of Protest events and separates noise [36].

**What it found.** Find point clusters on Protest events: Find point clusters: 2 layers saved: Find point clusters: Protest events (80 features); Find point clusters: cluster hulls (1 feature) [8][37]. It reported result, count 80; result, noise 3; result, distance m 500; result, elapsed ms 2; result, min points 3; billing, cost 0.0516 [37].

| Result | Value |
| --- | --- |
| result, count | 80 |
| result, noise | 3 |
| result, distance m | 500 |
| result, elapsed ms | 2 |
| result, min points | 3 |
| billing, cost | 0.0516 |
| billing, list price | 0.0516 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Find point clusters on Protest events: Find point clusters: 2 layers saved: Find point clusters: Protest events (80 features); Find point clusters: cluster hulls (1 feature) [8][37].
- **Evidenced:** It reported result, count 80; result, noise 3; result, distance m 500; result, elapsed ms 2; result, min points 3; billing, cost 0.0516 [37].

*Tool gp_find_point_clusters; parameters {"method": "dbscan", "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Protest events (cf75e6b1)"}, "distance_m": 500.0, "min_points": 3}*

## Calculate density

**What this analysis is.** Calculate density: Kernel density per square kilometer on a grid [38]. In ArcGIS it is Calculate Density or Kernel Density; in QGIS, native:heatmapkerneldensityestimation [38].

**Why it was run on this data.** 80 points in Protest events: a density surface shows where they concentrate [39].

**What it found.** Calculate density on Protest events: Calculate density: 1 layer saved: Calculate density: Protest events (386 features) [8][40]. It reported result, count 386; result, elapsed ms 11; result, bandwidth m 1,000; result, cell size m 200; result, excluded null 0; result, max density per km2 29.94 [40].

| Result | Value |
| --- | --- |
| result, count | 386 |
| result, elapsed ms | 11 |
| result, bandwidth m | 1,000 |
| result, cell size m | 200 |
| result, excluded null | 0 |
| result, max density per km2 | 29.94 |
| billing, cost | 0.0516 |
| billing, list price | 0.0516 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Calculate density on Protest events: Calculate density: 1 layer saved: Calculate density: Protest events (386 features) [8][40].
- **Evidenced:** It reported result, count 386; result, elapsed ms 11; result, bandwidth m 1,000; result, cell size m 200; result, excluded null 0; result, max density per km2 29.94 [40].

*Tool gp_calculate_density; parameters {"kernel": "quartic", "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Protest events (cf75e6b1)"}, "bandwidth_m": 1000.0, "cell_size_m": 200.0}*

## Calculate density

**What this analysis is.** Calculate density: Kernel density per square kilometer on a grid [38]. In ArcGIS it is Calculate Density or Kernel Density; in QGIS, native:heatmapkerneldensityestimation [38].

**Why it was run on this data.** 30 points in Hotels: a density surface shows where they concentrate [41].

**What it found.** The density calculation was run on the Hotels layer [11] by utilizing the `gp_calculate_density` tool [42].

| Result | Value |
| --- | --- |
| result, count | 82 |
| result, elapsed ms | 3 |
| result, bandwidth m | 2,000 |
| result, cell size m | 1,000 |
| result, excluded null | 0 |
| result, max density per km2 | 1.819 |
| billing, cost | 0.0506 |
| billing, list price | 0.0506 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Calculate density on Hotels: Calculate density: 1 layer saved: Calculate density: Hotels (82 features) [11][42].
- **Evidenced:** It reported result, count 82; result, elapsed ms 3; result, bandwidth m 2,000; result, cell size m 1,000; result, excluded null 0; result, max density per km2 1.819 [42].

*Tool gp_calculate_density; parameters {"kernel": "quartic", "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Hotels (28842e9c)"}, "bandwidth_m": 2000.0, "cell_size_m": 1000.0}*

## Calculate density

**What this analysis is.** Calculate density: Kernel density per square kilometer on a grid [38]. In ArcGIS it is Calculate Density or Kernel Density; in QGIS, native:heatmapkerneldensityestimation [38].

**Why it was run on this data.** 1700 points in Security incidents: a density surface shows where they concentrate [43].

**What it found.** Calculate density on Security incidents: Calculate density: 1 layer saved: Calculate density: Security incidents (2240 features) [14][44]. It reported result, count 2,240; result, elapsed ms 60; result, bandwidth m 500; result, cell size m 200; result, excluded null 0; result, max density per km2 267.9 [44].

| Result | Value |
| --- | --- |
| result, count | 2,240 |
| result, elapsed ms | 60 |
| result, bandwidth m | 500 |
| result, cell size m | 200 |
| result, excluded null | 0 |
| result, max density per km2 | 267.9 |
| billing, cost | 0.084 |
| billing, list price | 0.084 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Calculate density on Security incidents: Calculate density: 1 layer saved: Calculate density: Security incidents (2240 features) [14][44].
- **Evidenced:** It reported result, count 2,240; result, elapsed ms 60; result, bandwidth m 500; result, cell size m 200; result, excluded null 0; result, max density per km2 267.9 [44].

*Tool gp_calculate_density; parameters {"kernel": "quartic", "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Security incidents (afb5d90c)"}, "bandwidth_m": 500.0, "cell_size_m": 200.0}*

## Outliers

**What this analysis is.** Find outliers: Anselin local Moran’s I: HH, LL clusters and HL, LH outliers [45]. In ArcGIS it is Find Outliers or Cluster and Outlier Analysis (Anselin Local Moran’s I) [45].

**Why it was run on this data.** Local Moran's I maps clusters and outliers of 'risk_score' [46].

**What it found.** Outliers on Risk zones: Find outliers: 1 layer saved: Find outliers: Risk zones (14 features) [27][47]. It reported result, count 14; result, elapsed ms 2; result, permutations 199; result, excluded null 0; result, distance band m 2,548; billing, cost 0.05042 [47].

| Result | Value |
| --- | --- |
| result, count | 14 |
| result, elapsed ms | 2 |
| result, permutations | 199 |
| result, excluded null | 0 |
| result, distance band m | 2,548 |
| billing, cost | 0.05042 |
| billing, list price | 0.05042 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Outliers on Risk zones: Find outliers: 1 layer saved: Find outliers: Risk zones (14 features) [27][47].
- **Evidenced:** It reported result, count 14; result, elapsed ms 2; result, permutations 199; result, excluded null 0; result, distance band m 2,548; billing, cost 0.05042 [47].

*Tool gp_outliers; parameters {"field": "risk_score", "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Risk zones (a4d2e294)"}, "aggregation": "hexagon"}*

## Spatial autocorrelation

**What this analysis is.** Spatial autocorrelation: Global Moran’s I: is the pattern clustered, dispersed or random [48]. In ArcGIS it is Spatial Autocorrelation (Global Moran’s I) [48].

**Why it was run on this data.** Global Moran's I says whether similar values of 'risk_score' sit next to each other [49].

**What it found.** The spatial autocorrelation tool was run using the Risk zones input [27], completing without generating a map output [50].

| Result | Value |
| --- | --- |
| result, n | 14 |
| result, p value | 0.6185 |
| result, z score | -0.498 |
| result, morans i | -0.2235 |
| result, variance | 0.08664 |
| result, elapsed ms | 1 |
| result, expected i | -0.07692 |
| result, excluded null | 0 |
| result, distance band m | 2,548 |
| result, p value normality | 0.6003 |
| result, z score normality | -0.5239 |
| result, variance normality | 0.0783 |
| billing, cost | 0.02 |
| billing, list price | 0.02 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Spatial autocorrelation on Risk zones: Spatial autocorrelation: done; no map output [27][50].
- **Evidenced:** It reported result, n 14; result, p value 0.6185; result, z score -0.498; result, morans i -0.2235; result, variance 0.08664; result, elapsed ms 1 [50].

*Tool gp_spatial_autocorrelation; parameters {"field": "risk_score", "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "features": {"layer": "Risk zones (a4d2e294)"}}*

## Find nearest

**What this analysis is.** Find nearest: The k nearest features for each input, with geodesic distance and bearing [51]. In ArcGIS it is Find Nearest or Near; in QGIS, native:joinbynearest or native:nearestneighbouranalysis [51].

**Why it was run on this data.** The nearest of Travel routes to each of Hospitals, with distances [52].

**What it found.** Find nearest on Travel routes, Hospitals: Find nearest: 1 layer saved: Find nearest: Hospitals (14 features) [26][53][54]. It reported result, count 14; result, elapsed ms 10; billing, cost 0.0105; billing, list price 0.0105; billing, upstream cost 0 [53].

| Result | Value |
| --- | --- |
| result, count | 14 |
| result, elapsed ms | 10 |
| billing, cost | 0.0105 |
| billing, list price | 0.0105 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Find nearest on Travel routes, Hospitals: Find nearest: 1 layer saved: Find nearest: Hospitals (14 features) [26][53][54].
- **Evidenced:** It reported result, count 14; result, elapsed ms 10; billing, cost 0.0105; billing, list price 0.0105; billing, upstream cost 0 [53].

*Tool gp_find_nearest; parameters {"k": 1, "to": {"layer": "Travel routes (17118d2e)"}, "from": {"layer": "Hospitals (8a96a3d4)"}, "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "max_distance_m": 2000.0}*

## Find nearest

**What this analysis is.** Find nearest: The k nearest features for each input, with geodesic distance and bearing [51]. In ArcGIS it is Find Nearest or Near; in QGIS, native:joinbynearest or native:nearestneighbouranalysis [51].

**Why it was run on this data.** The nearest of Travel routes to each of Hospitals, with distances [52].

**What it found.** Find nearest on Safe havens, Hospitals: Find nearest: 1 layer saved: Find nearest: Hospitals (14 features) [26][29][55]. It reported result, count 14; result, elapsed ms 1; billing, cost 0.01054; billing, list price 0.01054; billing, upstream cost 0 [55].

| Result | Value |
| --- | --- |
| result, count | 14 |
| result, elapsed ms | 1 |
| billing, cost | 0.01054 |
| billing, list price | 0.01054 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Find nearest on Safe havens, Hospitals: Find nearest: 1 layer saved: Find nearest: Hospitals (14 features) [26][29][55].
- **Evidenced:** It reported result, count 14; result, elapsed ms 1; billing, cost 0.01054; billing, list price 0.01054; billing, upstream cost 0 [55].

*Tool gp_find_nearest; parameters {"k": 1, "to": {"layer": "Safe havens (d7ec6bb0)"}, "from": {"layer": "Hospitals (8a96a3d4)"}, "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "max_distance_m": 2000.0}*

## Find nearest

**What this analysis is.** Find nearest: The k nearest features for each input, with geodesic distance and bearing [51]. In ArcGIS it is Find Nearest or Near; in QGIS, native:joinbynearest or native:nearestneighbouranalysis [51].

**Why it was run on this data.** The nearest of Travel routes to each of Hospitals, with distances [52].

**What it found.** The `gp_find_nearest` tool was utilized with Protest events [8] and Hospitals [26] [56]. This process found 6 results [56]. The execution was quick, completing in 1 elapsed ms [56]. The billing cost associated with this operation was 0.0119 [56].

| Result | Value |
| --- | --- |
| result, count | 6 |
| result, elapsed ms | 1 |
| billing, cost | 0.0119 |
| billing, list price | 0.0119 |
| billing, upstream cost | 0 |

**Findings**

- **Evidenced:** Find nearest on Protest events, Hospitals: Find nearest: 1 layer saved: Find nearest: Hospitals (6 features) [8][26][56].
- **Evidenced:** It reported result, count 6; result, elapsed ms 1; billing, cost 0.0119; billing, list price 0.0119; billing, upstream cost 0 [56].

*Tool gp_find_nearest; parameters {"k": 1, "to": {"layer": "Protest events (cf75e6b1)"}, "from": {"layer": "Hospitals (8a96a3d4)"}, "project": "188436ed-c19a-4e7c-ab43-b58fe7291e56", "max_distance_m": 2000.0}*

## Maps and charts

The run also made 23 map image(s) [57][58][59][60][61][62][63][64][65][66][67][68][69][70][71][72][73][74][75][76][77][78][79] and 27 chart(s) [80][81][82][83][84][85][86][87][88][89][90][91][92][93][94][95][96][97][98][99][100][101][102][103][104][105][106].

![Hot spot analysis: Protest events](maps/01-hot-spot-analysis-protest-events.png)

*Figure 2. Hot spot analysis: Protest events [57]*

![Hot spot analysis: Hotels](maps/02-hot-spot-analysis-hotels.png)

*Figure 3. Hot spot analysis: Hotels [58]*

![Hot spot analysis: Security incidents](maps/03-hot-spot-analysis-security-incidents.png)

*Figure 4. Hot spot analysis: Security incidents [59]*

![Emerging hot spots: Protest events](maps/04-emerging-hot-spots-protest-events.png)

*Figure 5. Emerging hot spots: Protest events [60]*

![Emerging hot spots: Security incidents](maps/05-emerging-hot-spots-security-incidents.png)

*Figure 6. Emerging hot spots: Security incidents [61]*

![Repeat and near repeat classification: Protest events](maps/06-repeat-and-near-repeat-classification-protest-events.png)

*Figure 7. Repeat and near repeat classification: Protest events [62]*

![Summarize within: Risk zones](maps/07-summarize-within-risk-zones.png)

*Figure 8. Summarize within: Risk zones [63]*

![Summarize within: Risk zones](maps/08-summarize-within-risk-zones.png)

*Figure 9. Summarize within: Risk zones [64]*

![Summarize within: Risk zones](maps/09-summarize-within-risk-zones.png)

*Figure 10. Summarize within: Risk zones [65]*

![Find point clusters: Hospitals](maps/10-find-point-clusters-hospitals.png)

*Figure 11. Find point clusters: Hospitals [66]*

![Find point clusters: cluster hulls](maps/11-find-point-clusters-cluster-hulls.png)

*Figure 12. Find point clusters: cluster hulls [67]*

![Find point clusters: Safe havens](maps/12-find-point-clusters-safe-havens.png)

*Figure 13. Find point clusters: Safe havens [68]*

![Find point clusters: cluster hulls](maps/13-find-point-clusters-cluster-hulls.png)

*Figure 14. Find point clusters: cluster hulls [69]*

![Find point clusters: Protest events](maps/14-find-point-clusters-protest-events.png)

*Figure 15. Find point clusters: Protest events [70]*

![Find point clusters: cluster hulls](maps/15-find-point-clusters-cluster-hulls.png)

*Figure 16. Find point clusters: cluster hulls [71]*

![Calculate density: Protest events](maps/16-calculate-density-protest-events.png)

*Figure 17. Calculate density: Protest events [72]*

![Calculate density: Hotels](maps/17-calculate-density-hotels.png)

*Figure 18. Calculate density: Hotels [73]*

![Calculate density: Security incidents](maps/18-calculate-density-security-incidents.png)

*Figure 19. Calculate density: Security incidents [74]*

![Risk zones by risk_score](maps/19-risk-zones-by-risk-score.png)

*Figure 20. Risk zones by risk_score [75]*

![Find outliers: Risk zones](maps/20-find-outliers-risk-zones.png)

*Figure 21. Find outliers: Risk zones [76]*

![Find nearest: Hospitals](maps/21-find-nearest-hospitals.png)

*Figure 22. Find nearest: Hospitals [77]*

![Find nearest: Hospitals](maps/22-find-nearest-hospitals.png)

*Figure 23. Find nearest: Hospitals [78]*

![Find nearest: Hospitals](maps/23-find-nearest-hospitals.png)

*Figure 24. Find nearest: Hospitals [79]*

**What the map shows.** This map, titled "Emerging hot spots: Protest events," analyzes a specific geographic area running from longitude -99.15818 to -99.10583 and latitude 19.41925 to 19.45709. The analysis indicates that there is no identifiable pattern of "Emerging [60]

*Inferred: read from the image by gemma4:e4b, not evidence.*

![Security incidents over time (occurred_at)](charts/01-security-incidents-over-time-occurred-at.png)

*Figure 25. Security incidents over time (occurred_at) [80]. Per week, 2025-09-29 to 2026-09-28. Source: Security incidents (1,700 features). The data is in the appendix.*

![Protest events over time (date)](charts/02-protest-events-over-time-date.png)

*Figure 26. Protest events over time (date) [81]. Per week, 2026-01-05 to 2026-09-28. Source: Protest events (80 features). The data is in the appendix.*

![Travel log over time (date)](charts/03-travel-log-over-time-date.png)

*Figure 27. Travel log over time (date) [82]. Per week, 2025-09-29 to 2026-09-28. Source: Travel log (400 features). The data is in the appendix.*

![Hot spot analysis: Protest events](charts/04-hot-spot-analysis-protest-events.png)

*Figure 28. Hot spot analysis: Protest events [83]. Source: Hot spot analysis: Protest events (29 features). The data is in the appendix.*

![Hot spot analysis: Hotels](charts/05-hot-spot-analysis-hotels.png)

*Figure 29. Hot spot analysis: Hotels [84]. Source: Hot spot analysis: Hotels (14 features). The data is in the appendix.*

![Hot spot analysis: Security incidents](charts/06-hot-spot-analysis-security-incidents.png)

*Figure 30. Hot spot analysis: Security incidents [85]. Source: Hot spot analysis: Security incidents (353 features). The data is in the appendix.*

![Emerging hot spots: Protest events](charts/07-emerging-hot-spots-protest-events.png)

*Figure 31. Emerging hot spots: Protest events [86]. Source: Emerging hot spots: Protest events (14 features). The data is in the appendix.*

![Emerging hot spots: Security incidents](charts/08-emerging-hot-spots-security-incidents.png)

*Figure 32. Emerging hot spots: Security incidents [87]. Source: Emerging hot spots: Security incidents (108 features). The data is in the appendix.*

![Repeat and near repeat classification: Protest events](charts/09-repeat-and-near-repeat-classification-protest-events.png)

*Figure 33. Repeat and near repeat classification: Protest events [88]. Per week, 2026-01-05 to 2026-09-28. Source: Repeat and near repeat classification: Protest events (80 features). The data is in the appendix.*

![Summarize within: Risk zones](charts/10-summarize-within-risk-zones.png)

*Figure 34. Summarize within: Risk zones [89]. Source: Summarize within: Risk zones (14 features). The data is in the appendix.*

![Summarize within: Risk zones](charts/11-summarize-within-risk-zones.png)

*Figure 35. Summarize within: Risk zones [90]. Source: Summarize within: Risk zones (14 features). The data is in the appendix.*

![Summarize within: Risk zones](charts/12-summarize-within-risk-zones.png)

*Figure 36. Summarize within: Risk zones [91]. Source: Summarize within: Risk zones (14 features). The data is in the appendix.*

![Find point clusters: Hospitals](charts/13-find-point-clusters-hospitals.png)

*Figure 37. Find point clusters: Hospitals [92]. Source: Find point clusters: Hospitals (15 features). The data is in the appendix.*

![Find point clusters: cluster hulls](charts/14-find-point-clusters-cluster-hulls.png)

*Figure 38. Find point clusters: cluster hulls [93]. Source: Find point clusters: cluster hulls (1 features). The data is in the appendix.*

![Find point clusters: Safe havens](charts/15-find-point-clusters-safe-havens.png)

*Figure 39. Find point clusters: Safe havens [94]. Source: Find point clusters: Safe havens (12 features). The data is in the appendix.*

![Find point clusters: cluster hulls](charts/16-find-point-clusters-cluster-hulls.png)

*Figure 40. Find point clusters: cluster hulls [95]. Source: Find point clusters: cluster hulls (2 features). The data is in the appendix.*

![Find point clusters: Protest events](charts/17-find-point-clusters-protest-events.png)

*Figure 41. Find point clusters: Protest events [96]. Period: 2026-01-05 to 2026-09-28 (date). Source: Find point clusters: Protest events (80 features). The data is in the appendix.*

![Find point clusters: cluster hulls](charts/18-find-point-clusters-cluster-hulls.png)

*Figure 42. Find point clusters: cluster hulls [97]. Source: Find point clusters: cluster hulls (1 features). The data is in the appendix.*

![Calculate density: Protest events](charts/19-calculate-density-protest-events.png)

*Figure 43. Calculate density: Protest events [98]. Source: Calculate density: Protest events (386 features). The data is in the appendix.*

![Calculate density: Hotels](charts/20-calculate-density-hotels.png)

*Figure 44. Calculate density: Hotels [99]. Source: Calculate density: Hotels (82 features). The data is in the appendix.*

![Calculate density: Security incidents](charts/21-calculate-density-security-incidents.png)

*Figure 45. Calculate density: Security incidents [100]. Source: Calculate density: Security incidents (2,240 features). The data is in the appendix.*

![Find outliers: Risk zones](charts/22-find-outliers-risk-zones.png)

*Figure 46. Find outliers: Risk zones [101]. Source: Find outliers: Risk zones (14 features). The data is in the appendix.*

![Find nearest: Hospitals](charts/23-find-nearest-hospitals.png)

*Figure 47. Find nearest: Hospitals [102]. Source: Find nearest: Hospitals (14 features). The data is in the appendix.*

![Find nearest: Hospitals](charts/24-find-nearest-hospitals.png)

*Figure 48. Find nearest: Hospitals [103]. Source: Find nearest: Hospitals (14 features). The data is in the appendix.*

![Find nearest: Hospitals over time](charts/25-find-nearest-hospitals-over-time.png)

*Figure 49. Find nearest: Hospitals over time [104]. Per week, 2026-01-26 to 2026-06-22. Source: Find nearest: Hospitals (6 features). The data is in the appendix.*

![Find point clusters: Protest events over time](charts/26-find-point-clusters-protest-events-over-time.png)

*Figure 50. Find point clusters: Protest events over time [105]. Per week, 2026-01-05 to 2026-09-28. Source: Find point clusters: Protest events (80 features). The data is in the appendix.*

![Repeat and near repeat classification: Protest events over time](charts/27-repeat-and-near-repeat-classification-protest-events-over-ti.png)

*Figure 51. Repeat and near repeat classification: Protest events over time [106]. Per week, 2026-01-05 to 2026-09-28. Source: Repeat and near repeat classification: Protest events (80 features). The data is in the appendix.*

## Changes since the last run

This is the first report of this project.

## Sources

[1] Rendering: Chart: Timeline: events per week by dataset. 159 rows (id f07ed5b6-9486-4c24-a7ad-e2c1b9a45323)  
[2] Dataset: Security incidents. vector, 1700 rows (id e157aa87-0056-48e2-affe-2abe8c8f035b)  
[3] Dataset: Protest events. vector, 80 rows (id 61b11bf6-a94e-410d-bc75-a441daea9e2e)  
[4] Dataset: Travel log. table, 400 rows (id 91769657-5256-4993-90ae-bea93e5d9277)  
[5] Catalog: Hot spot analysis (operation catalog, gp_hot_spots). Getis-Ord Gi* hot and cold spots with z-scores, p-values and confidence bins. ArcGIS: Find Hot Spots, Hot Spot Analysis (Getis-Ord Gi*). QGIS: qgis:hotspot (plugin). (id gp_hot_spots)  
[6] Plan: Hot spots of Protest events (the Start plan's candidate c_e4c60efa6297). 80 points: Getis-Ord Gi* tests whether the concentrations in Protest events are statistically significant. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_e4c60efa6297)  
[7] Tool result: gp_hot_spots, step 0. Hot spot analysis: 1 layer saved: Hot spot analysis: Protest events (29 features). (id cb954b77-a9f1-40f9-ba2a-8936e0981670:0)  
[8] Layer: Protest events. 80 features (id cf75e6b1-838e-4795-85d8-20e39702882e)  
[9] Plan: Hot spots of Hotels (the Start plan's candidate c_d9214e0b2e9c). 30 points: Getis-Ord Gi* tests whether the concentrations in Hotels are statistically significant. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_d9214e0b2e9c)  
[10] Tool result: gp_hot_spots, step 1. Hot spot analysis: 1 layer saved: Hot spot analysis: Hotels (14 features). (id cb954b77-a9f1-40f9-ba2a-8936e0981670:1)  
[11] Layer: Hotels. 30 features (id 28842e9c-fa0f-4fa0-ab60-50616b38e2eb)  
[12] Plan: Hot spots of Security incidents (the Start plan's candidate c_2cf7cb199846). 1700 points: Getis-Ord Gi* tests whether the concentrations in Security incidents are statistically significant. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_2cf7cb199846)  
[13] Tool result: gp_hot_spots, step 2. Hot spot analysis: 1 layer saved: Hot spot analysis: Security incidents (353 features). (id cb954b77-a9f1-40f9-ba2a-8936e0981670:2)  
[14] Layer: Security incidents. 1,700 features (id afb5d90c-b04a-45b5-86de-02dd48a97b15)  
[15] Catalog: Emerging hot spots (operation catalog, gp_space_time_hot_spots). Where hot spots are new, consecutive, intensifying, persistent, diminishing, sporadic, oscillating or historical over time. ArcGIS: Emerging Hot Spot Analysis, Create Space Time Cube. (id gp_space_time_hot_spots)  
[16] Plan: Space time hot spots of Protest events (the Start plan's candidate c_7097f355a4d8). Protest events carry dates in 'date': emerging hot spot analysis finds new, intensifying and fading hot spots per week. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_7097f355a4d8)  
[17] Tool result: gp_space_time_hot_spots, step 0. Emerging hot spots: 1 layer saved: Emerging hot spots: Protest events (14 features). (id 4ce981f8-e618-4a52-ab5e-deb572cf8a18:0)  
[18] Plan: Space time hot spots of Security incidents (the Start plan's candidate c_333ac7b0a6a6). Security incidents carry dates in 'occurred_at': emerging hot spot analysis finds new, intensifying and fading hot spots per week. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_333ac7b0a6a6)  
[19] Tool result: gp_space_time_hot_spots, step 1. Emerging hot spots: 1 layer saved: Emerging hot spots: Security incidents (108 features). (id 4ce981f8-e618-4a52-ab5e-deb572cf8a18:1)  
[20] Catalog: Repeat and near repeat classification (operation catalog, gp_near_repeat). Classify incidents as originators, repeats (same place) or near repeats within a distance and time window, with a Knox test table. ArcGIS: Repeat and Near Repeat Classification, Near Repeat Calculator. (id gp_near_repeat)  
[21] Plan: Near repeat of Protest events (the Start plan's candidate c_f95b4db5e496). Near repeat analysis tests whether Protest events close in space also follow each other within 27 days. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_f95b4db5e496)  
[22] Tool result: gp_near_repeat, step 2. Repeat and near repeat classification: 1 layer saved: Repeat and near repeat classification: Protest events (80 features). (id 4ce981f8-e618-4a52-ab5e-deb572cf8a18:2)  
[23] Catalog: Summarize within (operation catalog, gp_summarize_within). Count and aggregate the features inside each polygon (or bin), proportionally for lines and polygons. ArcGIS: Summarize Within, Aggregate Points. QGIS: native:countpointsinpolygon, native:sumlinelengths. (id gp_summarize_within)  
[24] Plan: Hospitals per feature of Risk zones (the Start plan's candidate c_6520524d187a). Count Hospitals inside each feature of Risk zones by english_speaking; the counts map as a choropleth (natural breaks, sequential colors). (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_6520524d187a)  
[25] Tool result: gp_summarize_within, step 0. Summarize within: 1 layer saved: Summarize within: Risk zones (14 features). (id 4db35232-a32c-47e1-9154-89fbc3620126:0)  
[26] Layer: Hospitals. 15 features (id 8a96a3d4-1867-4c29-8033-2a6817b92b2c)  
[27] Layer: Risk zones. 14 features (id a4d2e294-c13c-4572-b6fc-2b8ef4e9c955)  
[28] Tool result: gp_summarize_within, step 1. Summarize within: 1 layer saved: Summarize within: Risk zones (14 features). (id 4db35232-a32c-47e1-9154-89fbc3620126:1)  
[29] Layer: Safe havens. 12 features (id d7ec6bb0-8b36-474d-8157-931bdc40122a)  
[30] Tool result: gp_summarize_within, step 2. Summarize within: 1 layer saved: Summarize within: Risk zones (14 features). (id 4db35232-a32c-47e1-9154-89fbc3620126:2)  
[31] Catalog: Find point clusters (operation catalog, gp_find_point_clusters). Density-based clusters (DBSCAN, HDBSCAN or OPTICS, optionally space-time) with hulls and noise. ArcGIS: Find Point Clusters, Density-based Clustering. QGIS: native:dbscanclustering, native:stdbscanclustering. (id gp_find_point_clusters)  
[32] Plan: Cluster points of Hospitals (the Start plan's candidate c_65a1f33e9e5e). DBSCAN finds dense groups of Hospitals and separates noise. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_65a1f33e9e5e)  
[33] Tool result: gp_find_point_clusters, step 0. Find point clusters: 2 layers saved: Find point clusters: Hospitals (15 features); Find point clusters: cluster hulls (1 feature). (id 86c36cc2-95cb-4bfa-aac6-db9cc2913cc1:0)  
[34] Plan: Cluster points of Safe havens (the Start plan's candidate c_5ba3c571cd04). DBSCAN finds dense groups of Safe havens and separates noise. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_5ba3c571cd04)  
[35] Tool result: gp_find_point_clusters, step 1. Find point clusters: 2 layers saved: Find point clusters: Safe havens (12 features); Find point clusters: cluster hulls (2 features). (id 86c36cc2-95cb-4bfa-aac6-db9cc2913cc1:1)  
[36] Plan: Cluster points of Protest events (the Start plan's candidate c_ae60a45625a8). DBSCAN finds dense groups of Protest events and separates noise. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_ae60a45625a8)  
[37] Tool result: gp_find_point_clusters, step 2. Find point clusters: 2 layers saved: Find point clusters: Protest events (80 features); Find point clusters: cluster hulls (1 feature). (id 86c36cc2-95cb-4bfa-aac6-db9cc2913cc1:2)  
[38] Catalog: Calculate density (operation catalog, gp_calculate_density). Kernel density per square kilometer on a grid. ArcGIS: Calculate Density, Kernel Density. QGIS: native:heatmapkerneldensityestimation. (id gp_calculate_density)  
[39] Plan: Kernel density of Protest events (the Start plan's candidate c_7c8acce6dd51). 80 points in Protest events: a density surface shows where they concentrate. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_7c8acce6dd51)  
[40] Tool result: gp_calculate_density, step 0. Calculate density: 1 layer saved: Calculate density: Protest events (386 features). (id 72e7e894-08fe-429b-84d0-f973eac006a1:0)  
[41] Plan: Kernel density of Hotels (the Start plan's candidate c_fb39ef5f9446). 30 points in Hotels: a density surface shows where they concentrate. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_fb39ef5f9446)  
[42] Tool result: gp_calculate_density, step 1. Calculate density: 1 layer saved: Calculate density: Hotels (82 features). (id 72e7e894-08fe-429b-84d0-f973eac006a1:1)  
[43] Plan: Kernel density of Security incidents (the Start plan's candidate c_8b75d0e8f5bf). 1700 points in Security incidents: a density surface shows where they concentrate. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_8b75d0e8f5bf)  
[44] Tool result: gp_calculate_density, step 2. Calculate density: 1 layer saved: Calculate density: Security incidents (2240 features). (id 72e7e894-08fe-429b-84d0-f973eac006a1:2)  
[45] Catalog: Find outliers (operation catalog, gp_outliers). Anselin local Moran’s I: HH, LL clusters and HL, LH outliers. ArcGIS: Find Outliers, Cluster and Outlier Analysis (Anselin Local Moran’s I). (id gp_outliers)  
[46] Plan: Local morans i of Risk zones (the Start plan's candidate c_b57bb9ae247a). Local Moran's I maps clusters and outliers of 'risk_score'. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_b57bb9ae247a)  
[47] Tool result: gp_outliers, step 0. Find outliers: 1 layer saved: Find outliers: Risk zones (14 features). (id 8804c2f2-0669-4232-a6ea-33b246fdbe10:0)  
[48] Catalog: Spatial autocorrelation (operation catalog, gp_spatial_autocorrelation). Global Moran’s I: is the pattern clustered, dispersed or random. ArcGIS: Spatial Autocorrelation (Global Moran’s I). (id gp_spatial_autocorrelation)  
[49] Plan: Global morans i of Risk zones (the Start plan's candidate c_e8c49b66ee35). Global Moran's I says whether similar values of 'risk_score' sit next to each other. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_e8c49b66ee35)  
[50] Tool result: gp_spatial_autocorrelation, step 1. Spatial autocorrelation: done; no map output. (id 8804c2f2-0669-4232-a6ea-33b246fdbe10:1)  
[51] Catalog: Find nearest (operation catalog, gp_find_nearest). The k nearest features for each input, with geodesic distance and bearing. ArcGIS: Find Nearest, Near, Generate Near Table. QGIS: native:joinbynearest, native:nearestneighbouranalysis. (id gp_find_nearest)  
[52] Plan: Find nearest of Hospitals and Travel routes (the Start plan's candidate c_6c9de7d7d3b4). The nearest of Travel routes to each of Hospitals, with distances. (id 2f94775f-544a-4c5f-9cbe-3a9e3ee974e2:c_6c9de7d7d3b4)  
[53] Tool result: gp_find_nearest, step 0. Find nearest: 1 layer saved: Find nearest: Hospitals (14 features). (id d72a65fe-570d-4b7e-bb1f-3397ddd3dff0:0)  
[54] Layer: Travel routes. 10 features (id 17118d2e-4c8a-4e58-a365-56ed0dccddeb)  
[55] Tool result: gp_find_nearest, step 1. Find nearest: 1 layer saved: Find nearest: Hospitals (14 features). (id d72a65fe-570d-4b7e-bb1f-3397ddd3dff0:1)  
[56] Tool result: gp_find_nearest, step 2. Find nearest: 1 layer saved: Find nearest: Hospitals (6 features). (id d72a65fe-570d-4b7e-bb1f-3397ddd3dff0:2)  
[57] Rendering: Map: Hot spot analysis: Protest events (id 500df2bf-0773-4df4-997b-e52faf1d7b86)  
[58] Rendering: Map: Hot spot analysis: Hotels (id a9b20642-0e6f-4981-a664-da575f4c0f47)  
[59] Rendering: Map: Hot spot analysis: Security incidents (id dfc0443f-8eec-4850-bcf5-b167e4b25bb2)  
[60] Rendering: Map: Emerging hot spots: Protest events (id 0099fe22-7871-4a15-a0e8-1feae00a5bfe)  
[61] Rendering: Map: Emerging hot spots: Security incidents (id ac12c726-afc7-4f73-bcad-180032253879)  
[62] Rendering: Map: Repeat and near repeat classification: Protest events (id 88da8834-5528-4120-a9c9-c2d8f343794a)  
[63] Rendering: Map: Summarize within: Risk zones (id 00bc1476-064e-4f9d-b9df-58b7176702f7)  
[64] Rendering: Map: Summarize within: Risk zones (id 097e7003-7459-4810-8b27-5f7a0070cb99)  
[65] Rendering: Map: Summarize within: Risk zones (id 0f0f8452-fff5-40e3-9da5-e4b1a4e0c9c3)  
[66] Rendering: Map: Find point clusters: Hospitals (id 47eb8a01-1990-4474-b495-5bf2f8a9ea58)  
[67] Rendering: Map: Find point clusters: cluster hulls (id 9199cde6-d3cd-466f-bbdb-c545c614f5d9)  
[68] Rendering: Map: Find point clusters: Safe havens (id b7163651-cc15-45dd-85df-b9a1e1a0c2ab)  
[69] Rendering: Map: Find point clusters: cluster hulls (id b07c64b4-3212-4751-b9fe-884c92e2af0b)  
[70] Rendering: Map: Find point clusters: Protest events (id 09c181e5-fd50-4a4d-8fb9-c372f05b7087)  
[71] Rendering: Map: Find point clusters: cluster hulls (id 837965dd-bd8f-4eda-8fc0-9ce4211449eb)  
[72] Rendering: Map: Calculate density: Protest events (id 26c2dd95-9903-4e3a-9502-b9d59a00d91f)  
[73] Rendering: Map: Calculate density: Hotels (id 87642b35-e16d-4168-a04d-24944d0ea7c8)  
[74] Rendering: Map: Calculate density: Security incidents (id db714770-2476-4110-af9b-826c0fda7266)  
[75] Rendering: Map: Risk zones by risk_score (id acd51039-768b-4034-9aa3-0fa9355f4884)  
[76] Rendering: Map: Find outliers: Risk zones (id 5323e5c1-28e1-44b3-8f9c-44f34efbf17f)  
[77] Rendering: Map: Find nearest: Hospitals (id a1567a83-3fb0-4dcf-8d6c-71ba8b4ed7d7)  
[78] Rendering: Map: Find nearest: Hospitals (id b16977bf-56c6-43a5-bf88-4d5b01a2648c)  
[79] Rendering: Map: Find nearest: Hospitals (id 11bfd2f1-7879-4693-a32a-915be104a231)  
[80] Rendering: Chart: Security incidents over time (occurred_at). 318 rows (id e4bbd9ee-6938-4976-afea-98b10b22455f)  
[81] Rendering: Chart: Protest events over time (date). 117 rows (id f828e7a2-d14d-4bc3-b257-85cd520ee1ef)  
[82] Rendering: Chart: Travel log over time (date). 106 rows (id 66c88c61-6c69-4dc0-a55d-5c961369ab06)  
[83] Rendering: Chart: Hot spot analysis: Protest events. 11 rows (id 66439a0c-ac69-4219-b24e-6f7ff88f70d2)  
[84] Rendering: Chart: Hot spot analysis: Hotels. 6 rows (id c52e7b32-d25d-4aed-abe8-9ebb7f603bfd)  
[85] Rendering: Chart: Hot spot analysis: Security incidents. 16 rows (id ca9f7204-df1a-4b6c-b63a-414bc07961a3)  
[86] Rendering: Chart: Emerging hot spots: Protest events. 5 rows (id a0edbd15-0e36-4d00-9145-33631fafb0d4)  
[87] Rendering: Chart: Emerging hot spots: Security incidents. 8 rows (id 0b5d890b-d25b-4e32-8200-951dc01149f7)  
[88] Rendering: Chart: Repeat and near repeat classification: Protest events. 117 rows (id 2306aa49-d791-4cd3-8d4c-28e6660067db)  
[89] Rendering: Chart: Summarize within: Risk zones. 5 rows (id c94ab553-318c-4a5e-bfe3-5ceb6088a6d2)  
[90] Rendering: Chart: Summarize within: Risk zones. 5 rows (id 67037acd-9bb9-4174-b327-02e297418724)  
[91] Rendering: Chart: Summarize within: Risk zones. 5 rows (id 923af0d1-ab6e-4ce5-b3d9-81d29ab8cc03)  
[92] Rendering: Chart: Find point clusters: Hospitals. 2 rows (id 20d9b93a-9f38-4502-8832-0c3847923a24)  
[93] Rendering: Chart: Find point clusters: cluster hulls. 1 rows (id f9da01d9-7689-4ba1-b714-0a48053eb1ae)  
[94] Rendering: Chart: Find point clusters: Safe havens. 3 rows (id b1d7e3a3-1643-4aea-87c6-3d0616a865de)  
[95] Rendering: Chart: Find point clusters: cluster hulls. 2 rows (id 4093c918-1c9f-481a-8b57-2adef8395ab8)  
[96] Rendering: Chart: Find point clusters: Protest events. 2 rows (id 83853866-50d0-468b-8c71-7faa0aa71c50)  
[97] Rendering: Chart: Find point clusters: cluster hulls. 1 rows (id e5bfd36e-59ac-4d44-805f-ba7f25c9358d)  
[98] Rendering: Chart: Calculate density: Protest events. 10 rows (id 73671b82-b4a3-42c0-a8ae-b1d27cba0ec2)  
[99] Rendering: Chart: Calculate density: Hotels. 8 rows (id c0aefbfb-9735-4f03-a2e6-d27fabd30313)  
[100] Rendering: Chart: Calculate density: Security incidents. 13 rows (id a8231907-9048-4318-9575-1e7364e4238a)  
[101] Rendering: Chart: Find outliers: Risk zones. 14 rows (id 491c699f-46c0-4622-98ad-1183374f76e1)  
[102] Rendering: Chart: Find nearest: Hospitals. 14 rows (id 9cc7d0a7-efe8-4e46-9c45-e42681c0944f)  
[103] Rendering: Chart: Find nearest: Hospitals. 14 rows (id e56bd3f0-499e-402f-a74a-cca2f35b3bc9)  
[104] Rendering: Chart: Find nearest: Hospitals over time. 66 rows (id 51a6266c-78a0-4146-87ab-d79e4d6ba260)  
[105] Rendering: Chart: Find point clusters: Protest events over time. 117 rows (id 86bdb528-cab1-4fff-aa57-5ee0311a2b43)  
[106] Rendering: Chart: Repeat and near repeat classification: Protest events over time. 117 rows (id 4dfde3d2-01b3-45b2-90c2-09129de0912c)  
[107] Dataset: Company sites. vector, 8 rows (id a57e5e2e-a25d-409d-9272-6ca1c1ae23ab)  
[108] Dataset: Hotels. vector, 30 rows (id 960da6f9-a119-47d2-8c4c-73faa6425317)  
[109] Dataset: Travel routes. vector, 10 rows (id 1008679c-3d12-45ea-a8ce-be53355c90d8)  
[110] Dataset: Risk zones. vector, 14 rows (id a6555125-2ca1-45ce-8a48-57ce5705423b)  
[111] Dataset: Hospitals. vector, 15 rows (id 03c9ffea-5a0a-4d80-8965-c0709759aff3)  
[112] Dataset: Safe havens. vector, 12 rows (id 511f2fd6-d838-46cc-a47c-c29f431a83c0)  
[113] Dataset: Site guard roster. table, 16 rows (id 19276383-dfed-4594-b706-1f9d7ba7b072)  
[114] Dataset: Country security briefing. document, ? rows (id f20d3f16-9057-4bc4-a33a-b2d8b53657a0)  
[115] Dataset: Hotel security assessment. document, ? rows (id e794bded-1be4-41a5-bbf2-086e1a0791f3)  
[116] Record: Sample: Corporate security and travel risk, Mexico City (id 188436ed-c19a-4e7c-ab43-b58fe7291e56)  
[117] Layer: Hot spot analysis: Protest events. 29 features (id db1e7e50-0b84-4c23-a7f1-70d712d84483)  
[118] Layer: Hot spot analysis: Hotels. 14 features (id 236b49e6-718b-468e-9414-fec05e2fd046)  
[119] Layer: Hot spot analysis: Security incidents. 353 features (id 354043da-a305-407a-bbe0-c2d077f68fed)  
[120] Layer: Emerging hot spots: Protest events. 14 features (id d4e930d7-f5cc-45e0-b105-ee6ff35846d6)  
[121] Layer: Emerging hot spots: Security incidents. 108 features (id 7d258e9e-7357-4428-8775-a97375d60dd3)  
[122] Layer: Repeat and near repeat classification: Protest events. 80 features (id c15ea26d-f7bf-43bf-987f-05e0d75a4a76)  
[123] Layer: Summarize within: Risk zones. 14 features (id 46424976-b4de-430a-93e8-53723336e3a7)  
[124] Layer: Summarize within: Risk zones. 14 features (id 66d57619-49ef-4eb7-831b-bedc47b571d1)  
[125] Layer: Summarize within: Risk zones. 14 features (id 705e651a-1e75-493d-a532-0c8927aa40cd)  
[126] Layer: Find point clusters: Hospitals. 15 features (id 991c0297-f207-49c1-9361-29e0d01cd1f5)  
[127] Layer: Find point clusters: cluster hulls. 1 features (id e06a131f-7989-4c9a-bad5-98f65d8d13ee)  
[128] Layer: Find point clusters: Safe havens. 12 features (id 1da076c5-d608-4691-b2c6-0458f1989d7e)  
[129] Layer: Find point clusters: cluster hulls. 2 features (id cb9419c5-0ee1-4dba-a62a-5b39176bab51)  
[130] Layer: Find point clusters: Protest events. 80 features (id 84d6cdb7-cfe3-4875-8ab3-4c85027ca7be)  
[131] Layer: Find point clusters: cluster hulls. 1 features (id baa8dcc7-143d-4f94-a316-947abdb534cf)  
[132] Layer: Calculate density: Protest events. 386 features (id 54008367-d33a-4511-b5e1-8c4a55915ad0)  
[133] Layer: Calculate density: Hotels. 82 features (id c4eba0a4-6712-445b-bc6c-cf0c26bb9cac)  
[134] Layer: Calculate density: Security incidents. 2,240 features (id 57bb3eed-15a3-4c3d-b425-89ac6f7edeaf)  
[135] Layer: Find outliers: Risk zones. 14 features (id e8ee4af5-2649-4990-8578-af9a7ca2a1e6)  
[136] Layer: Find nearest: Hospitals. 14 features (id cc3abbbe-dedb-4bf4-a08f-10d4882a63d2)  
[137] Layer: Find nearest: Hospitals. 14 features (id 39cac909-2a3f-47b4-9123-524c237e05eb)  
[138] Layer: Find nearest: Hospitals. 6 features (id 5b28ce74-706d-460a-b867-4b1ce5f6ed98)  

## Appendix: the data behind the charts

### Figure 1. Timeline: events per week by dataset [1]

| period | series | value |
| --- | --- | --- |
| 2025-09-29 | Security incidents | 24 |
| 2025-09-29 | Travel log | 10 |
| 2025-09-29 | Protest events | 0 |
| 2025-10-06 | Security incidents | 24 |
| 2025-10-06 | Travel log | 4 |
| 2025-10-06 | Protest events | 0 |
| 2025-10-13 | Security incidents | 25 |
| 2025-10-13 | Travel log | 8 |
| 2025-10-13 | Protest events | 0 |
| 2025-10-20 | Security incidents | 18 |
| 2025-10-20 | Travel log | 3 |
| 2025-10-20 | Protest events | 0 |
| 2025-10-27 | Security incidents | 38 |
| 2025-10-27 | Travel log | 6 |
| 2025-10-27 | Protest events | 0 |
| 2025-11-03 | Security incidents | 22 |
| 2025-11-03 | Travel log | 9 |
| 2025-11-03 | Protest events | 0 |
| 2025-11-10 | Security incidents | 25 |
| 2025-11-10 | Travel log | 11 |
| 2025-11-10 | Protest events | 0 |
| 2025-11-17 | Security incidents | 25 |
| 2025-11-17 | Travel log | 10 |
| 2025-11-17 | Protest events | 0 |
| 2025-11-24 | Security incidents | 24 |
| 2025-11-24 | Travel log | 4 |
| 2025-11-24 | Protest events | 0 |
| 2025-12-01 | Security incidents | 29 |
| 2025-12-01 | Travel log | 10 |
| 2025-12-01 | Protest events | 0 |
| 2025-12-08 | Security incidents | 28 |
| 2025-12-08 | Travel log | 6 |
| 2025-12-08 | Protest events | 0 |
| 2025-12-15 | Security incidents | 26 |
| 2025-12-15 | Travel log | 7 |
| 2025-12-15 | Protest events | 0 |
| 2025-12-22 | Security incidents | 25 |
| 2025-12-22 | Travel log | 14 |
| 2025-12-22 | Protest events | 0 |
| 2025-12-29 | Security incidents | 32 |
| 2025-12-29 | Travel log | 7 |
| 2025-12-29 | Protest events | 0 |
| 2026-01-05 | Security incidents | 34 |
| 2026-01-05 | Travel log | 6 |
| 2026-01-05 | Protest events | 3 |
| 2026-01-12 | Security incidents | 30 |
| 2026-01-12 | Travel log | 7 |
| 2026-01-12 | Protest events | 2 |
| 2026-01-19 | Security incidents | 29 |
| 2026-01-19 | Travel log | 10 |
| 2026-01-19 | Protest events | 1 |
| 2026-01-26 | Security incidents | 78 |
| 2026-01-26 | Travel log | 12 |
| 2026-01-26 | Protest events | 5 |
| 2026-02-02 | Security incidents | 21 |
| 2026-02-02 | Travel log | 5 |
| 2026-02-02 | Protest events | 2 |
| 2026-02-09 | Security incidents | 34 |
| 2026-02-09 | Travel log | 9 |
| 2026-02-09 | Protest events | 0 |
| 2026-02-16 | Security incidents | 34 |
| 2026-02-16 | Travel log | 9 |
| 2026-02-16 | Protest events | 2 |
| 2026-02-23 | Security incidents | 30 |
| 2026-02-23 | Travel log | 9 |
| 2026-02-23 | Protest events | 4 |
| 2026-03-02 | Security incidents | 110 |
| 2026-03-02 | Travel log | 7 |
| 2026-03-02 | Protest events | 6 |
| 2026-03-09 | Security incidents | 26 |
| 2026-03-09 | Travel log | 7 |
| 2026-03-09 | Protest events | 1 |
| 2026-03-16 | Security incidents | 34 |
| 2026-03-16 | Travel log | 10 |
| 2026-03-16 | Protest events | 0 |
| 2026-03-23 | Security incidents | 19 |
| 2026-03-23 | Travel log | 8 |
| 2026-03-23 | Protest events | 0 |
| 2026-03-30 | Security incidents | 18 |
| 2026-03-30 | Travel log | 3 |
| 2026-03-30 | Protest events | 2 |
| 2026-04-06 | Security incidents | 28 |
| 2026-04-06 | Travel log | 10 |
| 2026-04-06 | Protest events | 1 |
| 2026-04-13 | Security incidents | 27 |
| 2026-04-13 | Travel log | 3 |
| 2026-04-13 | Protest events | 0 |
| 2026-04-20 | Security incidents | 21 |
| 2026-04-20 | Travel log | 6 |
| 2026-04-20 | Protest events | 1 |
| 2026-04-27 | Security incidents | 100 |
| 2026-04-27 | Travel log | 5 |
| 2026-04-27 | Protest events | 5 |
| 2026-05-04 | Security incidents | 22 |
| 2026-05-04 | Travel log | 9 |
| 2026-05-04 | Protest events | 1 |
| 2026-05-11 | Security incidents | 20 |
| 2026-05-11 | Travel log | 9 |
| 2026-05-11 | Protest events | 0 |
| 2026-05-18 | Security incidents | 23 |
| 2026-05-18 | Travel log | 6 |
| 2026-05-18 | Protest events | 0 |
| 2026-05-25 | Security incidents | 26 |
| 2026-05-25 | Travel log | 8 |
| 2026-05-25 | Protest events | 1 |
| 2026-06-01 | Security incidents | 29 |
| 2026-06-01 | Travel log | 4 |
| 2026-06-01 | Protest events | 2 |
| 2026-06-08 | Security incidents | 102 |
| 2026-06-08 | Travel log | 10 |
| 2026-06-08 | Protest events | 8 |
| 2026-06-15 | Security incidents | 20 |
| 2026-06-15 | Travel log | 4 |
| 2026-06-15 | Protest events | 3 |
| 2026-06-22 | Security incidents | 18 |
| 2026-06-22 | Travel log | 9 |
| 2026-06-22 | Protest events | 3 |
| 2026-06-29 | Security incidents | 34 |
| 2026-06-29 | Travel log | 6 |
| 2026-06-29 | Protest events | 1 |
| 2026-07-06 | Security incidents | 17 |
| 2026-07-06 | Travel log | 15 |
| 2026-07-06 | Protest events | 1 |
| 2026-07-13 | Security incidents | 25 |
| 2026-07-13 | Travel log | 5 |
| 2026-07-13 | Protest events | 1 |
| 2026-07-20 | Security incidents | 16 |
| 2026-07-20 | Travel log | 5 |
| 2026-07-20 | Protest events | 1 |
| 2026-07-27 | Security incidents | 21 |
| 2026-07-27 | Travel log | 9 |
| 2026-07-27 | Protest events | 1 |
| 2026-08-03 | Security incidents | 25 |
| 2026-08-03 | Travel log | 6 |
| 2026-08-03 | Protest events | 2 |
| 2026-08-10 | Security incidents | 25 |
| 2026-08-10 | Travel log | 9 |
| 2026-08-10 | Protest events | 3 |
| 2026-08-17 | Security incidents | 20 |
| 2026-08-17 | Travel log | 10 |
| 2026-08-17 | Protest events | 2 |
| 2026-08-24 | Security incidents | 24 |
| 2026-08-24 | Travel log | 9 |
| 2026-08-24 | Protest events | 2 |
| 2026-08-31 | Security incidents | 27 |
| 2026-08-31 | Travel log | 7 |
| 2026-08-31 | Protest events | 2 |
| 2026-09-07 | Security incidents | 32 |
| 2026-09-07 | Travel log | 7 |
| 2026-09-07 | Protest events | 4 |
| 2026-09-14 | Security incidents | 97 |
| 2026-09-14 | Travel log | 7 |
| 2026-09-14 | Protest events | 4 |
| 2026-09-21 | Security incidents | 24 |
| 2026-09-21 | Travel log | 8 |
| 2026-09-21 | Protest events | 2 |
| 2026-09-28 | Security incidents | 15 |
| 2026-09-28 | Travel log | 3 |
| 2026-09-28 | Protest events | 1 |

### Figure 25. Security incidents over time (occurred_at) [80]

| period | series | value |
| --- | --- | --- |
| 2025-09-29 | robbery | 2 |
| 2025-09-29 | theft | 10 |
| 2025-09-29 | vandalism | 1 |
| 2025-09-29 | road blockade | 1 |
| 2025-09-29 | vehicle theft | 3 |
| 2025-09-29 | Other | 7 |
| 2025-10-06 | robbery | 8 |
| 2025-10-06 | theft | 4 |
| 2025-10-06 | vandalism | 1 |
| 2025-10-06 | road blockade | 3 |
| 2025-10-06 | vehicle theft | 2 |
| 2025-10-06 | Other | 6 |
| 2025-10-13 | robbery | 10 |
| 2025-10-13 | theft | 5 |
| 2025-10-13 | vandalism | 1 |
| 2025-10-13 | road blockade | 0 |
| 2025-10-13 | vehicle theft | 5 |
| 2025-10-13 | Other | 4 |
| 2025-10-20 | robbery | 7 |
| 2025-10-20 | theft | 3 |
| 2025-10-20 | vandalism | 1 |
| 2025-10-20 | road blockade | 3 |
| 2025-10-20 | vehicle theft | 1 |
| 2025-10-20 | Other | 3 |
| 2025-10-27 | robbery | 10 |
| 2025-10-27 | theft | 12 |
| 2025-10-27 | vandalism | 1 |
| 2025-10-27 | road blockade | 2 |
| 2025-10-27 | vehicle theft | 7 |
| 2025-10-27 | Other | 6 |
| 2025-11-03 | robbery | 5 |
| 2025-11-03 | theft | 8 |
| 2025-11-03 | vandalism | 2 |
| 2025-11-03 | road blockade | 2 |
| 2025-11-03 | vehicle theft | 3 |
| 2025-11-03 | Other | 2 |
| 2025-11-10 | robbery | 9 |
| 2025-11-10 | theft | 5 |
| 2025-11-10 | vandalism | 4 |
| 2025-11-10 | road blockade | 2 |
| 2025-11-10 | vehicle theft | 2 |
| 2025-11-10 | Other | 3 |
| 2025-11-17 | robbery | 6 |
| 2025-11-17 | theft | 3 |
| 2025-11-17 | vandalism | 3 |
| 2025-11-17 | road blockade | 1 |
| 2025-11-17 | vehicle theft | 6 |
| 2025-11-17 | Other | 6 |
| 2025-11-24 | robbery | 7 |
| 2025-11-24 | theft | 8 |
| 2025-11-24 | vandalism | 2 |
| 2025-11-24 | road blockade | 2 |
| 2025-11-24 | vehicle theft | 3 |
| 2025-11-24 | Other | 2 |
| 2025-12-01 | robbery | 10 |
| 2025-12-01 | theft | 12 |
| 2025-12-01 | vandalism | 2 |
| 2025-12-01 | road blockade | 0 |
| 2025-12-01 | vehicle theft | 4 |
| 2025-12-01 | Other | 1 |
| 2025-12-08 | robbery | 9 |
| 2025-12-08 | theft | 6 |
| 2025-12-08 | vandalism | 4 |
| 2025-12-08 | road blockade | 1 |
| 2025-12-08 | vehicle theft | 3 |
| 2025-12-08 | Other | 5 |
| 2025-12-15 | robbery | 10 |
| 2025-12-15 | theft | 9 |
| 2025-12-15 | vandalism | 0 |
| 2025-12-15 | road blockade | 1 |
| 2025-12-15 | vehicle theft | 4 |
| 2025-12-15 | Other | 2 |
| 2025-12-22 | robbery | 7 |
| 2025-12-22 | theft | 6 |
| 2025-12-22 | vandalism | 3 |
| 2025-12-22 | road blockade | 1 |
| 2025-12-22 | vehicle theft | 6 |
| 2025-12-22 | Other | 2 |
| 2025-12-29 | robbery | 10 |
| 2025-12-29 | theft | 4 |
| 2025-12-29 | vandalism | 4 |
| 2025-12-29 | road blockade | 3 |
| 2025-12-29 | vehicle theft | 5 |
| 2025-12-29 | Other | 6 |
| 2026-01-05 | robbery | 11 |
| 2026-01-05 | theft | 8 |
| 2026-01-05 | vandalism | 4 |
| 2026-01-05 | road blockade | 1 |
| 2026-01-05 | vehicle theft | 7 |
| 2026-01-05 | Other | 3 |
| 2026-01-12 | robbery | 8 |
| 2026-01-12 | theft | 11 |
| 2026-01-12 | vandalism | 0 |
| 2026-01-12 | road blockade | 4 |
| 2026-01-12 | vehicle theft | 2 |
| 2026-01-12 | Other | 5 |
| 2026-01-19 | robbery | 14 |
| 2026-01-19 | theft | 8 |
| 2026-01-19 | vandalism | 2 |
| 2026-01-19 | road blockade | 1 |
| 2026-01-19 | vehicle theft | 3 |
| 2026-01-19 | Other | 1 |
| 2026-01-26 | robbery | 8 |
| 2026-01-26 | theft | 12 |
| 2026-01-26 | vandalism | 28 |
| 2026-01-26 | road blockade | 20 |
| 2026-01-26 | vehicle theft | 2 |
| 2026-01-26 | Other | 8 |
| 2026-02-02 | robbery | 6 |
| 2026-02-02 | theft | 3 |
| 2026-02-02 | vandalism | 3 |
| 2026-02-02 | road blockade | 1 |
| 2026-02-02 | vehicle theft | 5 |
| 2026-02-02 | Other | 3 |
| 2026-02-09 | robbery | 15 |
| 2026-02-09 | theft | 8 |
| 2026-02-09 | vandalism | 4 |
| 2026-02-09 | road blockade | 1 |
| 2026-02-09 | vehicle theft | 2 |
| 2026-02-09 | Other | 4 |
| 2026-02-16 | robbery | 13 |
| 2026-02-16 | theft | 9 |
| 2026-02-16 | vandalism | 3 |
| 2026-02-16 | road blockade | 1 |
| 2026-02-16 | vehicle theft | 4 |
| 2026-02-16 | Other | 4 |
| 2026-02-23 | robbery | 10 |
| 2026-02-23 | theft | 8 |
| 2026-02-23 | vandalism | 3 |
| 2026-02-23 | road blockade | 2 |
| 2026-02-23 | vehicle theft | 5 |
| 2026-02-23 | Other | 2 |
| 2026-03-02 | robbery | 16 |
| 2026-03-02 | theft | 8 |
| 2026-03-02 | vandalism | 35 |
| 2026-03-02 | road blockade | 40 |
| 2026-03-02 | vehicle theft | 5 |
| 2026-03-02 | Other | 6 |
| 2026-03-09 | robbery | 6 |
| 2026-03-09 | theft | 11 |
| 2026-03-09 | vandalism | 1 |
| 2026-03-09 | road blockade | 0 |
| 2026-03-09 | vehicle theft | 4 |
| 2026-03-09 | Other | 4 |
| 2026-03-16 | robbery | 10 |
| 2026-03-16 | theft | 10 |
| 2026-03-16 | vandalism | 2 |
| 2026-03-16 | road blockade | 3 |
| 2026-03-16 | vehicle theft | 5 |
| 2026-03-16 | Other | 4 |
| 2026-03-23 | robbery | 7 |
| 2026-03-23 | theft | 5 |
| 2026-03-23 | vandalism | 2 |
| 2026-03-23 | road blockade | 1 |
| 2026-03-23 | vehicle theft | 3 |
| 2026-03-23 | Other | 1 |
| 2026-03-30 | robbery | 7 |
| 2026-03-30 | theft | 5 |
| 2026-03-30 | vandalism | 2 |
| 2026-03-30 | road blockade | 0 |
| 2026-03-30 | vehicle theft | 2 |
| 2026-03-30 | Other | 2 |
| 2026-04-06 | robbery | 9 |
| 2026-04-06 | theft | 3 |
| 2026-04-06 | vandalism | 7 |
| 2026-04-06 | road blockade | 2 |
| 2026-04-06 | vehicle theft | 4 |
| 2026-04-06 | Other | 3 |
| 2026-04-13 | robbery | 12 |
| 2026-04-13 | theft | 7 |
| 2026-04-13 | vandalism | 1 |
| 2026-04-13 | road blockade | 1 |
| 2026-04-13 | vehicle theft | 1 |
| 2026-04-13 | Other | 5 |
| 2026-04-20 | robbery | 7 |
| 2026-04-20 | theft | 7 |
| 2026-04-20 | vandalism | 1 |
| 2026-04-20 | road blockade | 1 |
| 2026-04-20 | vehicle theft | 1 |
| 2026-04-20 | Other | 4 |
| 2026-04-27 | robbery | 13 |
| 2026-04-27 | theft | 14 |
| 2026-04-27 | vandalism | 32 |
| 2026-04-27 | road blockade | 30 |
| 2026-04-27 | vehicle theft | 4 |
| 2026-04-27 | Other | 7 |
| 2026-05-04 | robbery | 7 |
| 2026-05-04 | theft | 5 |
| 2026-05-04 | vandalism | 1 |
| 2026-05-04 | road blockade | 1 |
| 2026-05-04 | vehicle theft | 4 |
| 2026-05-04 | Other | 4 |
| 2026-05-11 | robbery | 8 |
| 2026-05-11 | theft | 6 |
| 2026-05-11 | vandalism | 2 |
| 2026-05-11 | road blockade | 1 |
| 2026-05-11 | vehicle theft | 2 |
| 2026-05-11 | Other | 1 |
| 2026-05-18 | robbery | 9 |
| 2026-05-18 | theft | 8 |
| 2026-05-18 | vandalism | 1 |
| 2026-05-18 | road blockade | 1 |
| 2026-05-18 | vehicle theft | 2 |
| 2026-05-18 | Other | 2 |
| 2026-05-25 | robbery | 9 |
| 2026-05-25 | theft | 9 |
| 2026-05-25 | vandalism | 1 |
| 2026-05-25 | road blockade | 1 |
| 2026-05-25 | vehicle theft | 3 |
| 2026-05-25 | Other | 3 |
| 2026-06-01 | robbery | 9 |
| 2026-06-01 | theft | 9 |
| 2026-06-01 | vandalism | 1 |
| 2026-06-01 | road blockade | 2 |
| 2026-06-01 | vehicle theft | 5 |
| 2026-06-01 | Other | 3 |
| 2026-06-08 | robbery | 9 |
| 2026-06-08 | theft | 12 |
| 2026-06-08 | vandalism | 35 |
| 2026-06-08 | road blockade | 31 |
| 2026-06-08 | vehicle theft | 7 |
| 2026-06-08 | Other | 8 |
| 2026-06-15 | robbery | 10 |
| 2026-06-15 | theft | 3 |
| 2026-06-15 | vandalism | 3 |
| 2026-06-15 | road blockade | 0 |
| 2026-06-15 | vehicle theft | 1 |
| 2026-06-15 | Other | 3 |
| 2026-06-22 | robbery | 5 |
| 2026-06-22 | theft | 4 |
| 2026-06-22 | vandalism | 1 |
| 2026-06-22 | road blockade | 1 |
| 2026-06-22 | vehicle theft | 3 |
| 2026-06-22 | Other | 4 |
| 2026-06-29 | robbery | 10 |
| 2026-06-29 | theft | 12 |
| 2026-06-29 | vandalism | 0 |
| 2026-06-29 | road blockade | 0 |
| 2026-06-29 | vehicle theft | 8 |
| 2026-06-29 | Other | 4 |
| 2026-07-06 | robbery | 8 |
| 2026-07-06 | theft | 3 |
| 2026-07-06 | vandalism | 1 |
| 2026-07-06 | road blockade | 1 |
| 2026-07-06 | vehicle theft | 1 |
| 2026-07-06 | Other | 3 |
| 2026-07-13 | robbery | 11 |
| 2026-07-13 | theft | 6 |
| 2026-07-13 | vandalism | 1 |
| 2026-07-13 | road blockade | 1 |
| 2026-07-13 | vehicle theft | 3 |
| 2026-07-13 | Other | 3 |
| 2026-07-20 | robbery | 6 |
| 2026-07-20 | theft | 3 |
| 2026-07-20 | vandalism | 1 |
| 2026-07-20 | road blockade | 0 |
| 2026-07-20 | vehicle theft | 4 |
| 2026-07-20 | Other | 2 |
| 2026-07-27 | robbery | 5 |
| 2026-07-27 | theft | 8 |
| 2026-07-27 | vandalism | 2 |
| 2026-07-27 | road blockade | 1 |
| 2026-07-27 | vehicle theft | 3 |
| 2026-07-27 | Other | 2 |
| 2026-08-03 | robbery | 6 |
| 2026-08-03 | theft | 7 |
| 2026-08-03 | vandalism | 5 |
| 2026-08-03 | road blockade | 2 |
| 2026-08-03 | vehicle theft | 4 |
| 2026-08-03 | Other | 1 |
| 2026-08-10 | robbery | 8 |
| 2026-08-10 | theft | 10 |
| 2026-08-10 | vandalism | 2 |
| 2026-08-10 | road blockade | 2 |
| 2026-08-10 | vehicle theft | 0 |
| 2026-08-10 | Other | 3 |
| 2026-08-17 | robbery | 3 |
| 2026-08-17 | theft | 8 |
| 2026-08-17 | vandalism | 2 |
| 2026-08-17 | road blockade | 2 |
| 2026-08-17 | vehicle theft | 1 |
| 2026-08-17 | Other | 4 |
| 2026-08-24 | robbery | 6 |
| 2026-08-24 | theft | 10 |
| 2026-08-24 | vandalism | 1 |
| 2026-08-24 | road blockade | 1 |
| 2026-08-24 | vehicle theft | 3 |
| 2026-08-24 | Other | 3 |
| 2026-08-31 | robbery | 9 |
| 2026-08-31 | theft | 5 |
| 2026-08-31 | vandalism | 3 |
| 2026-08-31 | road blockade | 3 |
| 2026-08-31 | vehicle theft | 6 |
| 2026-08-31 | Other | 1 |
| 2026-09-07 | robbery | 9 |
| 2026-09-07 | theft | 6 |
| 2026-09-07 | vandalism | 4 |
| 2026-09-07 | road blockade | 2 |
| 2026-09-07 | vehicle theft | 4 |
| 2026-09-07 | Other | 7 |
| 2026-09-14 | robbery | 15 |
| 2026-09-14 | theft | 12 |
| 2026-09-14 | vandalism | 24 |
| 2026-09-14 | road blockade | 37 |
| 2026-09-14 | vehicle theft | 3 |
| 2026-09-14 | Other | 6 |
| 2026-09-21 | robbery | 5 |
| 2026-09-21 | theft | 8 |
| 2026-09-21 | vandalism | 1 |
| 2026-09-21 | road blockade | 1 |
| 2026-09-21 | vehicle theft | 3 |
| 2026-09-21 | Other | 6 |
| 2026-09-28 | robbery | 7 |
| 2026-09-28 | theft | 4 |
| 2026-09-28 | vandalism | 1 |
| 2026-09-28 | road blockade | 0 |
| 2026-09-28 | vehicle theft | 1 |
| 2026-09-28 | Other | 2 |

### Figure 26. Protest events over time (date) [81]

| period | series | value |
| --- | --- | --- |
| 2026-01-05 | large | 1 |
| 2026-01-05 | small | 1 |
| 2026-01-05 | medium | 1 |
| 2026-01-12 | large | 1 |
| 2026-01-12 | small | 0 |
| 2026-01-12 | medium | 1 |
| 2026-01-19 | large | 1 |
| 2026-01-19 | small | 0 |
| 2026-01-19 | medium | 0 |
| 2026-01-26 | large | 2 |
| 2026-01-26 | small | 2 |
| 2026-01-26 | medium | 1 |
| 2026-02-02 | large | 1 |
| 2026-02-02 | small | 1 |
| 2026-02-02 | medium | 0 |
| 2026-02-09 | large | 0 |
| 2026-02-09 | small | 0 |
| 2026-02-09 | medium | 0 |
| 2026-02-16 | large | 2 |
| 2026-02-16 | small | 0 |
| 2026-02-16 | medium | 0 |
| 2026-02-23 | large | 0 |
| 2026-02-23 | small | 2 |
| 2026-02-23 | medium | 2 |
| 2026-03-02 | large | 2 |
| 2026-03-02 | small | 1 |
| 2026-03-02 | medium | 3 |
| 2026-03-09 | large | 0 |
| 2026-03-09 | small | 1 |
| 2026-03-09 | medium | 0 |
| 2026-03-16 | large | 0 |
| 2026-03-16 | small | 0 |
| 2026-03-16 | medium | 0 |
| 2026-03-23 | large | 0 |
| 2026-03-23 | small | 0 |
| 2026-03-23 | medium | 0 |
| 2026-03-30 | large | 1 |
| 2026-03-30 | small | 0 |
| 2026-03-30 | medium | 1 |
| 2026-04-06 | large | 1 |
| 2026-04-06 | small | 0 |
| 2026-04-06 | medium | 0 |
| 2026-04-13 | large | 0 |
| 2026-04-13 | small | 0 |
| 2026-04-13 | medium | 0 |
| 2026-04-20 | large | 0 |
| 2026-04-20 | small | 1 |
| 2026-04-20 | medium | 0 |
| 2026-04-27 | large | 1 |
| 2026-04-27 | small | 3 |
| 2026-04-27 | medium | 1 |
| 2026-05-04 | large | 0 |
| 2026-05-04 | small | 1 |
| 2026-05-04 | medium | 0 |
| 2026-05-11 | large | 0 |
| 2026-05-11 | small | 0 |
| 2026-05-11 | medium | 0 |
| 2026-05-18 | large | 0 |
| 2026-05-18 | small | 0 |
| 2026-05-18 | medium | 0 |
| 2026-05-25 | large | 0 |
| 2026-05-25 | small | 0 |
| 2026-05-25 | medium | 1 |
| 2026-06-01 | large | 1 |
| 2026-06-01 | small | 0 |
| 2026-06-01 | medium | 1 |
| 2026-06-08 | large | 4 |
| 2026-06-08 | small | 1 |
| 2026-06-08 | medium | 3 |
| 2026-06-15 | large | 0 |
| 2026-06-15 | small | 2 |
| 2026-06-15 | medium | 1 |
| 2026-06-22 | large | 2 |
| 2026-06-22 | small | 0 |
| 2026-06-22 | medium | 1 |
| 2026-06-29 | large | 1 |
| 2026-06-29 | small | 0 |
| 2026-06-29 | medium | 0 |
| 2026-07-06 | large | 1 |
| 2026-07-06 | small | 0 |
| 2026-07-06 | medium | 0 |
| 2026-07-13 | large | 0 |
| 2026-07-13 | small | 1 |
| 2026-07-13 | medium | 0 |
| 2026-07-20 | large | 1 |
| 2026-07-20 | small | 0 |
| 2026-07-20 | medium | 0 |
| 2026-07-27 | large | 0 |
| 2026-07-27 | small | 1 |
| 2026-07-27 | medium | 0 |
| 2026-08-03 | large | 1 |
| 2026-08-03 | small | 1 |
| 2026-08-03 | medium | 0 |
| 2026-08-10 | large | 1 |
| 2026-08-10 | small | 2 |
| 2026-08-10 | medium | 0 |
| 2026-08-17 | large | 1 |
| 2026-08-17 | small | 1 |
| 2026-08-17 | medium | 0 |
| 2026-08-24 | large | 1 |
| 2026-08-24 | small | 1 |
| 2026-08-24 | medium | 0 |
| 2026-08-31 | large | 1 |
| 2026-08-31 | small | 0 |
| 2026-08-31 | medium | 1 |
| 2026-09-07 | large | 1 |
| 2026-09-07 | small | 1 |
| 2026-09-07 | medium | 2 |
| 2026-09-14 | large | 3 |
| 2026-09-14 | small | 1 |
| 2026-09-14 | medium | 0 |
| 2026-09-21 | large | 0 |
| 2026-09-21 | small | 2 |
| 2026-09-21 | medium | 0 |
| 2026-09-28 | large | 0 |
| 2026-09-28 | small | 1 |
| 2026-09-28 | medium | 0 |

### Figure 27. Travel log over time (date) [82]

| period | series | value |
| --- | --- | --- |
| 2025-09-29 | False | 9 |
| 2025-09-29 | True | 1 |
| 2025-10-06 | False | 4 |
| 2025-10-06 | True | 0 |
| 2025-10-13 | False | 8 |
| 2025-10-13 | True | 0 |
| 2025-10-20 | False | 3 |
| 2025-10-20 | True | 0 |
| 2025-10-27 | False | 6 |
| 2025-10-27 | True | 0 |
| 2025-11-03 | False | 9 |
| 2025-11-03 | True | 0 |
| 2025-11-10 | False | 11 |
| 2025-11-10 | True | 0 |
| 2025-11-17 | False | 10 |
| 2025-11-17 | True | 0 |
| 2025-11-24 | False | 4 |
| 2025-11-24 | True | 0 |
| 2025-12-01 | False | 10 |
| 2025-12-01 | True | 0 |
| 2025-12-08 | False | 4 |
| 2025-12-08 | True | 2 |
| 2025-12-15 | False | 7 |
| 2025-12-15 | True | 0 |
| 2025-12-22 | False | 14 |
| 2025-12-22 | True | 0 |
| 2025-12-29 | False | 7 |
| 2025-12-29 | True | 0 |
| 2026-01-05 | False | 6 |
| 2026-01-05 | True | 0 |
| 2026-01-12 | False | 7 |
| 2026-01-12 | True | 0 |
| 2026-01-19 | False | 10 |
| 2026-01-19 | True | 0 |
| 2026-01-26 | False | 11 |
| 2026-01-26 | True | 1 |
| 2026-02-02 | False | 5 |
| 2026-02-02 | True | 0 |
| 2026-02-09 | False | 9 |
| 2026-02-09 | True | 0 |
| 2026-02-16 | False | 9 |
| 2026-02-16 | True | 0 |
| 2026-02-23 | False | 9 |
| 2026-02-23 | True | 0 |
| 2026-03-02 | False | 7 |
| 2026-03-02 | True | 0 |
| 2026-03-09 | False | 7 |
| 2026-03-09 | True | 0 |
| 2026-03-16 | False | 10 |
| 2026-03-16 | True | 0 |
| 2026-03-23 | False | 8 |
| 2026-03-23 | True | 0 |
| 2026-03-30 | False | 3 |
| 2026-03-30 | True | 0 |
| 2026-04-06 | False | 9 |
| 2026-04-06 | True | 1 |
| 2026-04-13 | False | 3 |
| 2026-04-13 | True | 0 |
| 2026-04-20 | False | 6 |
| 2026-04-20 | True | 0 |
| 2026-04-27 | False | 5 |
| 2026-04-27 | True | 0 |
| 2026-05-04 | False | 9 |
| 2026-05-04 | True | 0 |
| 2026-05-11 | False | 8 |
| 2026-05-11 | True | 1 |
| 2026-05-18 | False | 6 |
| 2026-05-18 | True | 0 |
| 2026-05-25 | False | 5 |
| 2026-05-25 | True | 3 |
| 2026-06-01 | False | 4 |
| 2026-06-01 | True | 0 |
| 2026-06-08 | False | 10 |
| 2026-06-08 | True | 0 |
| 2026-06-15 | False | 4 |
| 2026-06-15 | True | 0 |
| 2026-06-22 | False | 9 |
| 2026-06-22 | True | 0 |
| 2026-06-29 | False | 6 |
| 2026-06-29 | True | 0 |
| 2026-07-06 | False | 15 |
| 2026-07-06 | True | 0 |
| 2026-07-13 | False | 5 |
| 2026-07-13 | True | 0 |
| 2026-07-20 | False | 5 |
| 2026-07-20 | True | 0 |
| 2026-07-27 | False | 9 |
| 2026-07-27 | True | 0 |
| 2026-08-03 | False | 5 |
| 2026-08-03 | True | 1 |
| 2026-08-10 | False | 9 |
| 2026-08-10 | True | 0 |
| 2026-08-17 | False | 10 |
| 2026-08-17 | True | 0 |
| 2026-08-24 | False | 9 |
| 2026-08-24 | True | 0 |
| 2026-08-31 | False | 7 |
| 2026-08-31 | True | 0 |
| 2026-09-07 | False | 7 |
| 2026-09-07 | True | 0 |
| 2026-09-14 | False | 7 |
| 2026-09-14 | True | 0 |
| 2026-09-21 | False | 8 |
| 2026-09-21 | True | 0 |
| 2026-09-28 | False | 3 |
| 2026-09-28 | True | 0 |

### Figure 28. Hot spot analysis: Protest events [83]

| bin_start | bin_end | band | band_label | count |
| --- | --- | --- | --- | --- |
| -2 | -1.5 | cold_90 | Cold spot, 90% confidence | 1 |
| -1.5 | -1 | not_significant | Not significant | 2 |
| -1 | -0.5 | not_significant | Not significant | 3 |
| -0.5 | 0 | not_significant | Not significant | 7 |
| 0 | 0.5 | not_significant | Not significant | 2 |
| 0.5 | 1 | not_significant | Not significant | 3 |
| 1 | 1.5 | not_significant | Not significant | 4 |
| 1.5 | 2 | hot_90 | Hot spot, 90% confidence | 1 |
| 2 | 2.5 | hot_95 | Hot spot, 95% confidence | 3 |
| 2.5 | 3 | hot_99 | Hot spot, 99% confidence | 2 |
| 3.5 | 4 | hot_99 | Hot spot, 99% confidence | 1 |

### Figure 29. Hot spot analysis: Hotels [84]

| bin_start | bin_end | band | band_label | count |
| --- | --- | --- | --- | --- |
| -1.5 | -1 | not_significant | Not significant | 2 |
| -1 | -0.5 | not_significant | Not significant | 4 |
| -0.5 | 0 | not_significant | Not significant | 5 |
| 0 | 0.5 | not_significant | Not significant | 1 |
| 1.5 | 2 | hot_95 | Hot spot, 95% confidence | 1 |
| 2 | 2.5 | hot_95 | Hot spot, 95% confidence | 1 |

### Figure 30. Hot spot analysis: Security incidents [85]

| bin_start | bin_end | band | band_label | count |
| --- | --- | --- | --- | --- |
| -1 | -0.5 | not_significant | Not significant | 41 |
| -0.5 | 0 | not_significant | Not significant | 203 |
| 0 | 0.5 | not_significant | Not significant | 78 |
| 0.5 | 1 | not_significant | Not significant | 10 |
| 1 | 1.5 | not_significant | Not significant | 3 |
| 1.5 | 2 | hot_95 | Hot spot, 95% confidence | 1 |
| 1.5 | 2 | not_significant | Not significant | 1 |
| 2 | 2.5 | hot_95 | Hot spot, 95% confidence | 4 |
| 2.5 | 3 | hot_95 | Hot spot, 95% confidence | 1 |
| 3 | 3.5 | hot_99 | Hot spot, 99% confidence | 2 |
| 3.5 | 4 | hot_99 | Hot spot, 99% confidence | 3 |
| 4 | 4.5 | hot_99 | Hot spot, 99% confidence | 2 |
| 4.5 | 5 | hot_99 | Hot spot, 99% confidence | 1 |
| 5 | 5.5 | hot_99 | Hot spot, 99% confidence | 1 |
| 7 | 7.5 | hot_99 | Hot spot, 99% confidence | 1 |
| 8.5 | 9 | hot_99 | Hot spot, 99% confidence | 1 |

### Figure 31. Emerging hot spots: Protest events [86]

| bin_start | bin_end | count |
| --- | --- | --- |
| -0.608 | -0.3794 | 8 |
| -0.3794 | -0.1508 | 0 |
| -0.1508 | 0.0778 | 0 |
| 0.0778 | 0.3064 | 0 |
| 0.3064 | 0.535 | 6 |

### Figure 32. Emerging hot spots: Security incidents [87]

| bin_start | bin_end | count |
| --- | --- | --- |
| -0.663 | -0.3824 | 38 |
| -0.3824 | -0.1017 | 32 |
| -0.1017 | 0.1789 | 0 |
| 0.1789 | 0.4595 | 13 |
| 0.4595 | 0.7401 | 15 |
| 0.7401 | 1.021 | 0 |
| 1.021 | 1.301 | 8 |
| 1.301 | 1.582 | 2 |

### Figure 33. Repeat and near repeat classification: Protest events [88]

| period | series | value |
| --- | --- | --- |
| 2026-01-05 | large | 1 |
| 2026-01-05 | small | 1 |
| 2026-01-05 | medium | 1 |
| 2026-01-12 | large | 1 |
| 2026-01-12 | small | 0 |
| 2026-01-12 | medium | 1 |
| 2026-01-19 | large | 1 |
| 2026-01-19 | small | 0 |
| 2026-01-19 | medium | 0 |
| 2026-01-26 | large | 2 |
| 2026-01-26 | small | 2 |
| 2026-01-26 | medium | 1 |
| 2026-02-02 | large | 1 |
| 2026-02-02 | small | 1 |
| 2026-02-02 | medium | 0 |
| 2026-02-09 | large | 0 |
| 2026-02-09 | small | 0 |
| 2026-02-09 | medium | 0 |
| 2026-02-16 | large | 2 |
| 2026-02-16 | small | 0 |
| 2026-02-16 | medium | 0 |
| 2026-02-23 | large | 0 |
| 2026-02-23 | small | 2 |
| 2026-02-23 | medium | 2 |
| 2026-03-02 | large | 2 |
| 2026-03-02 | small | 1 |
| 2026-03-02 | medium | 3 |
| 2026-03-09 | large | 0 |
| 2026-03-09 | small | 1 |
| 2026-03-09 | medium | 0 |
| 2026-03-16 | large | 0 |
| 2026-03-16 | small | 0 |
| 2026-03-16 | medium | 0 |
| 2026-03-23 | large | 0 |
| 2026-03-23 | small | 0 |
| 2026-03-23 | medium | 0 |
| 2026-03-30 | large | 1 |
| 2026-03-30 | small | 0 |
| 2026-03-30 | medium | 1 |
| 2026-04-06 | large | 1 |
| 2026-04-06 | small | 0 |
| 2026-04-06 | medium | 0 |
| 2026-04-13 | large | 0 |
| 2026-04-13 | small | 0 |
| 2026-04-13 | medium | 0 |
| 2026-04-20 | large | 0 |
| 2026-04-20 | small | 1 |
| 2026-04-20 | medium | 0 |
| 2026-04-27 | large | 1 |
| 2026-04-27 | small | 3 |
| 2026-04-27 | medium | 1 |
| 2026-05-04 | large | 0 |
| 2026-05-04 | small | 1 |
| 2026-05-04 | medium | 0 |
| 2026-05-11 | large | 0 |
| 2026-05-11 | small | 0 |
| 2026-05-11 | medium | 0 |
| 2026-05-18 | large | 0 |
| 2026-05-18 | small | 0 |
| 2026-05-18 | medium | 0 |
| 2026-05-25 | large | 0 |
| 2026-05-25 | small | 0 |
| 2026-05-25 | medium | 1 |
| 2026-06-01 | large | 1 |
| 2026-06-01 | small | 0 |
| 2026-06-01 | medium | 1 |
| 2026-06-08 | large | 4 |
| 2026-06-08 | small | 1 |
| 2026-06-08 | medium | 3 |
| 2026-06-15 | large | 0 |
| 2026-06-15 | small | 2 |
| 2026-06-15 | medium | 1 |
| 2026-06-22 | large | 2 |
| 2026-06-22 | small | 0 |
| 2026-06-22 | medium | 1 |
| 2026-06-29 | large | 1 |
| 2026-06-29 | small | 0 |
| 2026-06-29 | medium | 0 |
| 2026-07-06 | large | 1 |
| 2026-07-06 | small | 0 |
| 2026-07-06 | medium | 0 |
| 2026-07-13 | large | 0 |
| 2026-07-13 | small | 1 |
| 2026-07-13 | medium | 0 |
| 2026-07-20 | large | 1 |
| 2026-07-20 | small | 0 |
| 2026-07-20 | medium | 0 |
| 2026-07-27 | large | 0 |
| 2026-07-27 | small | 1 |
| 2026-07-27 | medium | 0 |
| 2026-08-03 | large | 1 |
| 2026-08-03 | small | 1 |
| 2026-08-03 | medium | 0 |
| 2026-08-10 | large | 1 |
| 2026-08-10 | small | 2 |
| 2026-08-10 | medium | 0 |
| 2026-08-17 | large | 1 |
| 2026-08-17 | small | 1 |
| 2026-08-17 | medium | 0 |
| 2026-08-24 | large | 1 |
| 2026-08-24 | small | 1 |
| 2026-08-24 | medium | 0 |
| 2026-08-31 | large | 1 |
| 2026-08-31 | small | 0 |
| 2026-08-31 | medium | 1 |
| 2026-09-07 | large | 1 |
| 2026-09-07 | small | 1 |
| 2026-09-07 | medium | 2 |
| 2026-09-14 | large | 3 |
| 2026-09-14 | small | 1 |
| 2026-09-14 | medium | 0 |
| 2026-09-21 | large | 0 |
| 2026-09-21 | small | 2 |
| 2026-09-21 | medium | 0 |
| 2026-09-28 | large | 0 |
| 2026-09-28 | small | 1 |
| 2026-09-28 | medium | 0 |

### Figure 34. Summarize within: Risk zones [89]

| bin_start | bin_end | count |
| --- | --- | --- |
| 0 | 0.6 | 6 |
| 0.6 | 1.2 | 3 |
| 1.2 | 1.8 | 0 |
| 1.8 | 2.4 | 3 |
| 2.4 | 3 | 2 |

### Figure 35. Summarize within: Risk zones [90]

| bin_start | bin_end | count |
| --- | --- | --- |
| 0 | 0.6 | 6 |
| 0.6 | 1.2 | 5 |
| 1.2 | 1.8 | 0 |
| 1.8 | 2.4 | 2 |
| 2.4 | 3 | 1 |

### Figure 36. Summarize within: Risk zones [91]

| bin_start | bin_end | count |
| --- | --- | --- |
| 0 | 15 | 13 |
| 15 | 30 | 0 |
| 30 | 45 | 0 |
| 45 | 60 | 0 |
| 60 | 75 | 1 |

### Figure 37. Find point clusters: Hospitals [92]

| cluster | features | fraction | share |
| --- | --- | --- | --- |
| 0 | 11 | 0.7333 | 73.3% |
| Noise | 4 | 0.2667 | 26.7% |

### Figure 38. Find point clusters: cluster hulls [93]

| cluster | features | fraction | share |
| --- | --- | --- | --- |
| 0 | 1 | 1 | 100.0% |

### Figure 39. Find point clusters: Safe havens [94]

| cluster | features | fraction | share |
| --- | --- | --- | --- |
| 0 | 5 | 0.4167 | 41.7% |
| Noise | 4 | 0.3333 | 33.3% |
| 1 | 3 | 0.25 | 25.0% |

### Figure 40. Find point clusters: cluster hulls [95]

| cluster | features | fraction | share |
| --- | --- | --- | --- |
| 0 | 1 | 0.5 | 50.0% |
| 1 | 1 | 0.5 | 50.0% |

### Figure 41. Find point clusters: Protest events [96]

| cluster | features | fraction | share |
| --- | --- | --- | --- |
| 0 | 77 | 0.9625 | 96.2% |
| Noise | 3 | 0.0375 | 3.8% |

### Figure 42. Find point clusters: cluster hulls [97]

| cluster | features | fraction | share |
| --- | --- | --- | --- |
| 0 | 1 | 1 | 100.0% |

### Figure 43. Calculate density: Protest events [98]

| bin_start | bin_end | count |
| --- | --- | --- |
| 0 | 2.3 | 20 |
| 2.3 | 4.6 | 27 |
| 4.6 | 6.9 | 33 |
| 6.9 | 9.2 | 68 |
| 9.2 | 11.5 | 48 |
| 11.5 | 13.8 | 47 |
| 13.8 | 16.1 | 63 |
| 16.1 | 18.4 | 33 |
| 18.4 | 20.7 | 26 |
| 20.7 | 23 | 21 |

### Figure 44. Calculate density: Hotels [99]

| bin_start | bin_end | count |
| --- | --- | --- |
| 0.0002631 | 0.2276 | 48 |
| 0.2276 | 0.455 | 11 |
| 0.455 | 0.6823 | 9 |
| 0.6823 | 0.9096 | 3 |
| 0.9096 | 1.137 | 4 |
| 1.137 | 1.364 | 2 |
| 1.364 | 1.592 | 1 |
| 1.592 | 1.819 | 4 |

### Figure 45. Calculate density: Security incidents [100]

| bin_start | bin_end | count |
| --- | --- | --- |
| 0 | 4.077 | 166 |
| 4.077 | 8.154 | 169 |
| 8.154 | 12.23 | 166 |
| 12.23 | 16.31 | 169 |
| 16.31 | 20.38 | 169 |
| 20.38 | 24.46 | 174 |
| 24.46 | 28.54 | 167 |
| 28.54 | 32.62 | 175 |
| 32.62 | 36.69 | 173 |
| 36.69 | 40.77 | 171 |
| 40.77 | 44.85 | 169 |
| 44.85 | 48.92 | 174 |
| 48.92 | 53 | 198 |

### Figure 46. Find outliers: Risk zones [101]

| value | lag | type |
| --- | --- | --- |
| -1.242 | 0.7068 | NS |
| 0.257 | -0.3427 | NS |
| -0.9424 | 1.157 | NS |
| 0.8567 | 1.157 | NS |
| -1.542 | 0.257 | NS |
| 0.257 | -0.0428 | NS |
| 1.157 | 0.5569 | NS |
| -0.0428 | 1.157 | NS |
| 0.8567 | -0.3427 | NS |
| 1.157 | -1.092 | NS |
| -0.9424 | 0.8567 | NS |
| -1.542 | 0.5569 | NS |
| 1.157 | 0.4069 | NS |
| 0.5569 | -1.542 | NS |

### Figure 47. Find nearest: Hospitals [102]

| rank | name |
| --- | --- |
| 1 | approved taxi |
| 1 | approved taxi |
| 1 | approved taxi |
| 1 | approved taxi |
| 1 | approved taxi |
| 1 | approved taxi |
| 1 | approved taxi |
| 1 | approved taxi |
| 1 | approved taxi |
| 1 | approved taxi |
| 1 | approved taxi |
| 1 | approved taxi |
| 1 | company car |
| 1 | approved taxi |

### Figure 48. Find nearest: Hospitals [103]

| rank | name |
| --- | --- |
| 1 | embassy |
| 1 | embassy |
| 1 | hotel |
| 1 | embassy |
| 1 | partner office |
| 1 | hotel |
| 1 | partner office |
| 1 | hotel |
| 1 | partner office |
| 1 | embassy |
| 1 | partner office |
| 1 | partner office |
| 1 | partner office |
| 1 | hotel |

### Figure 49. Find nearest: Hospitals over time [104]

| period | series | value |
| --- | --- | --- |
| 2026-01-26 | large | 0 |
| 2026-01-26 | medium | 0 |
| 2026-01-26 | small | 1 |
| 2026-02-02 | large | 0 |
| 2026-02-02 | medium | 0 |
| 2026-02-02 | small | 0 |
| 2026-02-09 | large | 0 |
| 2026-02-09 | medium | 0 |
| 2026-02-09 | small | 0 |
| 2026-02-16 | large | 0 |
| 2026-02-16 | medium | 0 |
| 2026-02-16 | small | 0 |
| 2026-02-23 | large | 0 |
| 2026-02-23 | medium | 2 |
| 2026-02-23 | small | 0 |
| 2026-03-02 | large | 0 |
| 2026-03-02 | medium | 0 |
| 2026-03-02 | small | 0 |
| 2026-03-09 | large | 0 |
| 2026-03-09 | medium | 0 |
| 2026-03-09 | small | 0 |
| 2026-03-16 | large | 0 |
| 2026-03-16 | medium | 0 |
| 2026-03-16 | small | 0 |
| 2026-03-23 | large | 0 |
| 2026-03-23 | medium | 0 |
| 2026-03-23 | small | 0 |
| 2026-03-30 | large | 0 |
| 2026-03-30 | medium | 0 |
| 2026-03-30 | small | 0 |
| 2026-04-06 | large | 0 |
| 2026-04-06 | medium | 0 |
| 2026-04-06 | small | 0 |
| 2026-04-13 | large | 0 |
| 2026-04-13 | medium | 0 |
| 2026-04-13 | small | 0 |
| 2026-04-20 | large | 0 |
| 2026-04-20 | medium | 0 |
| 2026-04-20 | small | 0 |
| 2026-04-27 | large | 0 |
| 2026-04-27 | medium | 0 |
| 2026-04-27 | small | 0 |
| 2026-05-04 | large | 0 |
| 2026-05-04 | medium | 0 |
| 2026-05-04 | small | 0 |
| 2026-05-11 | large | 0 |
| 2026-05-11 | medium | 0 |
| 2026-05-11 | small | 0 |
| 2026-05-18 | large | 0 |
| 2026-05-18 | medium | 0 |
| 2026-05-18 | small | 0 |
| 2026-05-25 | large | 0 |
| 2026-05-25 | medium | 0 |
| 2026-05-25 | small | 0 |
| 2026-06-01 | large | 0 |
| 2026-06-01 | medium | 0 |
| 2026-06-01 | small | 0 |
| 2026-06-08 | large | 0 |
| 2026-06-08 | medium | 0 |
| 2026-06-08 | small | 0 |
| 2026-06-15 | large | 0 |
| 2026-06-15 | medium | 0 |
| 2026-06-15 | small | 0 |
| 2026-06-22 | large | 3 |
| 2026-06-22 | medium | 0 |
| 2026-06-22 | small | 0 |

### Figure 50. Find point clusters: Protest events over time [105]

| period | series | value |
| --- | --- | --- |
| 2026-01-05 | large | 1 |
| 2026-01-05 | small | 1 |
| 2026-01-05 | medium | 1 |
| 2026-01-12 | large | 1 |
| 2026-01-12 | small | 0 |
| 2026-01-12 | medium | 1 |
| 2026-01-19 | large | 1 |
| 2026-01-19 | small | 0 |
| 2026-01-19 | medium | 0 |
| 2026-01-26 | large | 2 |
| 2026-01-26 | small | 2 |
| 2026-01-26 | medium | 1 |
| 2026-02-02 | large | 1 |
| 2026-02-02 | small | 1 |
| 2026-02-02 | medium | 0 |
| 2026-02-09 | large | 0 |
| 2026-02-09 | small | 0 |
| 2026-02-09 | medium | 0 |
| 2026-02-16 | large | 2 |
| 2026-02-16 | small | 0 |
| 2026-02-16 | medium | 0 |
| 2026-02-23 | large | 0 |
| 2026-02-23 | small | 2 |
| 2026-02-23 | medium | 2 |
| 2026-03-02 | large | 2 |
| 2026-03-02 | small | 1 |
| 2026-03-02 | medium | 3 |
| 2026-03-09 | large | 0 |
| 2026-03-09 | small | 1 |
| 2026-03-09 | medium | 0 |
| 2026-03-16 | large | 0 |
| 2026-03-16 | small | 0 |
| 2026-03-16 | medium | 0 |
| 2026-03-23 | large | 0 |
| 2026-03-23 | small | 0 |
| 2026-03-23 | medium | 0 |
| 2026-03-30 | large | 1 |
| 2026-03-30 | small | 0 |
| 2026-03-30 | medium | 1 |
| 2026-04-06 | large | 1 |
| 2026-04-06 | small | 0 |
| 2026-04-06 | medium | 0 |
| 2026-04-13 | large | 0 |
| 2026-04-13 | small | 0 |
| 2026-04-13 | medium | 0 |
| 2026-04-20 | large | 0 |
| 2026-04-20 | small | 1 |
| 2026-04-20 | medium | 0 |
| 2026-04-27 | large | 1 |
| 2026-04-27 | small | 3 |
| 2026-04-27 | medium | 1 |
| 2026-05-04 | large | 0 |
| 2026-05-04 | small | 1 |
| 2026-05-04 | medium | 0 |
| 2026-05-11 | large | 0 |
| 2026-05-11 | small | 0 |
| 2026-05-11 | medium | 0 |
| 2026-05-18 | large | 0 |
| 2026-05-18 | small | 0 |
| 2026-05-18 | medium | 0 |
| 2026-05-25 | large | 0 |
| 2026-05-25 | small | 0 |
| 2026-05-25 | medium | 1 |
| 2026-06-01 | large | 1 |
| 2026-06-01 | small | 0 |
| 2026-06-01 | medium | 1 |
| 2026-06-08 | large | 4 |
| 2026-06-08 | small | 1 |
| 2026-06-08 | medium | 3 |
| 2026-06-15 | large | 0 |
| 2026-06-15 | small | 2 |
| 2026-06-15 | medium | 1 |
| 2026-06-22 | large | 2 |
| 2026-06-22 | small | 0 |
| 2026-06-22 | medium | 1 |
| 2026-06-29 | large | 1 |
| 2026-06-29 | small | 0 |
| 2026-06-29 | medium | 0 |
| 2026-07-06 | large | 1 |
| 2026-07-06 | small | 0 |
| 2026-07-06 | medium | 0 |
| 2026-07-13 | large | 0 |
| 2026-07-13 | small | 1 |
| 2026-07-13 | medium | 0 |
| 2026-07-20 | large | 1 |
| 2026-07-20 | small | 0 |
| 2026-07-20 | medium | 0 |
| 2026-07-27 | large | 0 |
| 2026-07-27 | small | 1 |
| 2026-07-27 | medium | 0 |
| 2026-08-03 | large | 1 |
| 2026-08-03 | small | 1 |
| 2026-08-03 | medium | 0 |
| 2026-08-10 | large | 1 |
| 2026-08-10 | small | 2 |
| 2026-08-10 | medium | 0 |
| 2026-08-17 | large | 1 |
| 2026-08-17 | small | 1 |
| 2026-08-17 | medium | 0 |
| 2026-08-24 | large | 1 |
| 2026-08-24 | small | 1 |
| 2026-08-24 | medium | 0 |
| 2026-08-31 | large | 1 |
| 2026-08-31 | small | 0 |
| 2026-08-31 | medium | 1 |
| 2026-09-07 | large | 1 |
| 2026-09-07 | small | 1 |
| 2026-09-07 | medium | 2 |
| 2026-09-14 | large | 3 |
| 2026-09-14 | small | 1 |
| 2026-09-14 | medium | 0 |
| 2026-09-21 | large | 0 |
| 2026-09-21 | small | 2 |
| 2026-09-21 | medium | 0 |
| 2026-09-28 | large | 0 |
| 2026-09-28 | small | 1 |
| 2026-09-28 | medium | 0 |

### Figure 51. Repeat and near repeat classification: Protest events over time [106]

| period | series | value |
| --- | --- | --- |
| 2026-01-05 | large | 1 |
| 2026-01-05 | small | 1 |
| 2026-01-05 | medium | 1 |
| 2026-01-12 | large | 1 |
| 2026-01-12 | small | 0 |
| 2026-01-12 | medium | 1 |
| 2026-01-19 | large | 1 |
| 2026-01-19 | small | 0 |
| 2026-01-19 | medium | 0 |
| 2026-01-26 | large | 2 |
| 2026-01-26 | small | 2 |
| 2026-01-26 | medium | 1 |
| 2026-02-02 | large | 1 |
| 2026-02-02 | small | 1 |
| 2026-02-02 | medium | 0 |
| 2026-02-09 | large | 0 |
| 2026-02-09 | small | 0 |
| 2026-02-09 | medium | 0 |
| 2026-02-16 | large | 2 |
| 2026-02-16 | small | 0 |
| 2026-02-16 | medium | 0 |
| 2026-02-23 | large | 0 |
| 2026-02-23 | small | 2 |
| 2026-02-23 | medium | 2 |
| 2026-03-02 | large | 2 |
| 2026-03-02 | small | 1 |
| 2026-03-02 | medium | 3 |
| 2026-03-09 | large | 0 |
| 2026-03-09 | small | 1 |
| 2026-03-09 | medium | 0 |
| 2026-03-16 | large | 0 |
| 2026-03-16 | small | 0 |
| 2026-03-16 | medium | 0 |
| 2026-03-23 | large | 0 |
| 2026-03-23 | small | 0 |
| 2026-03-23 | medium | 0 |
| 2026-03-30 | large | 1 |
| 2026-03-30 | small | 0 |
| 2026-03-30 | medium | 1 |
| 2026-04-06 | large | 1 |
| 2026-04-06 | small | 0 |
| 2026-04-06 | medium | 0 |
| 2026-04-13 | large | 0 |
| 2026-04-13 | small | 0 |
| 2026-04-13 | medium | 0 |
| 2026-04-20 | large | 0 |
| 2026-04-20 | small | 1 |
| 2026-04-20 | medium | 0 |
| 2026-04-27 | large | 1 |
| 2026-04-27 | small | 3 |
| 2026-04-27 | medium | 1 |
| 2026-05-04 | large | 0 |
| 2026-05-04 | small | 1 |
| 2026-05-04 | medium | 0 |
| 2026-05-11 | large | 0 |
| 2026-05-11 | small | 0 |
| 2026-05-11 | medium | 0 |
| 2026-05-18 | large | 0 |
| 2026-05-18 | small | 0 |
| 2026-05-18 | medium | 0 |
| 2026-05-25 | large | 0 |
| 2026-05-25 | small | 0 |
| 2026-05-25 | medium | 1 |
| 2026-06-01 | large | 1 |
| 2026-06-01 | small | 0 |
| 2026-06-01 | medium | 1 |
| 2026-06-08 | large | 4 |
| 2026-06-08 | small | 1 |
| 2026-06-08 | medium | 3 |
| 2026-06-15 | large | 0 |
| 2026-06-15 | small | 2 |
| 2026-06-15 | medium | 1 |
| 2026-06-22 | large | 2 |
| 2026-06-22 | small | 0 |
| 2026-06-22 | medium | 1 |
| 2026-06-29 | large | 1 |
| 2026-06-29 | small | 0 |
| 2026-06-29 | medium | 0 |
| 2026-07-06 | large | 1 |
| 2026-07-06 | small | 0 |
| 2026-07-06 | medium | 0 |
| 2026-07-13 | large | 0 |
| 2026-07-13 | small | 1 |
| 2026-07-13 | medium | 0 |
| 2026-07-20 | large | 1 |
| 2026-07-20 | small | 0 |
| 2026-07-20 | medium | 0 |
| 2026-07-27 | large | 0 |
| 2026-07-27 | small | 1 |
| 2026-07-27 | medium | 0 |
| 2026-08-03 | large | 1 |
| 2026-08-03 | small | 1 |
| 2026-08-03 | medium | 0 |
| 2026-08-10 | large | 1 |
| 2026-08-10 | small | 2 |
| 2026-08-10 | medium | 0 |
| 2026-08-17 | large | 1 |
| 2026-08-17 | small | 1 |
| 2026-08-17 | medium | 0 |
| 2026-08-24 | large | 1 |
| 2026-08-24 | small | 1 |
| 2026-08-24 | medium | 0 |
| 2026-08-31 | large | 1 |
| 2026-08-31 | small | 0 |
| 2026-08-31 | medium | 1 |
| 2026-09-07 | large | 1 |
| 2026-09-07 | small | 1 |
| 2026-09-07 | medium | 2 |
| 2026-09-14 | large | 3 |
| 2026-09-14 | small | 1 |
| 2026-09-14 | medium | 0 |
| 2026-09-21 | large | 0 |
| 2026-09-21 | small | 2 |
| 2026-09-21 | medium | 0 |
| 2026-09-28 | large | 0 |
| 2026-09-28 | small | 1 |
| 2026-09-28 | medium | 0 |


*GeoBit Large Spatial Model. Findings are labeled Evidenced (computed by a tool), Inferred (a reading or reasoning) or Unverified (no evidence yet).*
