This repository has been archived on 2025-09-30. You can view files and clone it, but cannot push or open issues or pull requests.
2025-09-30 13:42:25 -05:00
2025-09-26 00:11:14 -05:00
2025-09-26 00:11:14 -05:00
2025-09-26 00:11:14 -05:00
2025-09-26 00:11:14 -05:00
2025-09-26 00:11:14 -05:00
2025-09-26 00:11:14 -05:00
2025-09-26 00:11:14 -05:00
2025-09-26 00:11:14 -05:00
2025-09-30 13:42:25 -05:00

Wings of Unrest: Flight Connectivity and Social Instability Research

A quantitative research project investigating the relationship between global air connectivity and social unrest across 2,620 cities worldwide.

Overview

This study explores whether cities with greater flight connectivity experience systematically different levels of protest activity compared to less connected urban areas. Using a Negative Binomial regression model, the analysis reveals that increased air connectivity is significantly associated with higher frequencies of unrest events (p < 0.001), explaining approximately 32% of the deviance.

Key Findings

  • Air connectivity positively correlates with protest frequency (each additional flight → 0.41% increase in expected events)
  • Population served by airports shows strong positive association with unrest
  • Unemployment and freedom of expression are positively associated with protest intensity
  • HDI and land area exhibit negative associations with unrest
  • Model pseudo R² = 0.323, suggesting moderate explanatory power

Dataset

The analysis combines multiple authoritative data sources:

  • Air connectivity: OpenFlights (2014 direct flight data)
  • Social unrest: ACLED (Armed Conflict Location & Event Data Project, June 2020 - April 2025)
  • Economic indicators: World Bank (GDP per capita, unemployment, land area)
  • Development metrics: UNDP (HDI, life expectancy, education)
  • Political measures: V-Dem (freedom of expression, civil society indices)

Final dataset: 2,620 cities from 191 countries

Methodology

Data Processing Pipeline

  1. Spatial matching: Cities linked to airports within 50km radius using Haversine distance
  2. Service score calculation: score = departures / (distance + 1) to weight airport assignment
  3. Event geocoding: Protest events mapped to nearest city with same country constraint
  4. Country standardization: Harmonized country names across all datasets

Statistical Model

Negative Binomial regression (handles overdispersion in count data):

log(E[Number_of_Events]) = β₀ + β₁(Flights) + β₂(Population) + β₃(Land_area)
                           + β₄(Unemployment) + β₅(Freedom_Expression) + β₆(HDI)

Project Structure

FlightUnrestResearch/
├── Data/                      # Raw datasets (airports, routes, ACLED, V-Dem, etc.)
├── clean_data.csv            # Final processed dataset for analysis
├── clean_data.ipynb          # Data cleaning and preparation pipeline
├── haversine.py              # Geospatial distance calculations (PyTorch-accelerated)
├── mappings.py               # Country name standardization mappings
├── FINAL_r_reg_final.ipynb   # Statistical analysis (Negative Binomial regression)
├── final_paper.pdf           # Complete research paper with literature review
└── final_paper.odt           # Source document

Core Components

haversine.py

PyTorch-accelerated geospatial functions for large-scale spatial assignments:

  • calculate_served_population(): Assigns city populations to airports using weighted scoring
  • assign_events_to_cities(): Maps protest events to nearest cities via Haversine distance

clean_data.ipynb

Complete data pipeline:

  • Merges flight routes with airport locations
  • Calculates served populations within 50km radius
  • Geocodes 428K+ ACLED events to cities
  • Integrates World Bank, V-Dem, and HDI indicators
  • Handles missing data and country name harmonization

FINAL_r_reg_final.ipynb

Statistical analysis in R:

  • Negative Binomial regression model
  • Multicollinearity diagnostics (VIF analysis)
  • Model fit evaluation (pseudo R², deviance)
  • Coefficient interpretation and significance testing

Requirements

Python

pandas
numpy
torch
openpyxl
tqdm

R

MASS (for glm.nb)

Usage

1. Data Preparation

jupyter notebook clean_data.ipynb

Outputs: clean_data.csv with all variables merged and geocoded

2. Statistical Analysis

jupyter notebook FINAL_r_reg_final.ipynb

Runs regression model and produces coefficient tables

Key Variables

Variable Description Source
Number_of_Flights Total direct flights at city airports OpenFlights
Number_of_Events Protest/riot incidents (Jun 2020-Apr 2025) ACLED
Served_Population Population within 50km of airports Cities database + calculation
GDP_per_capita National GDP per capita (2019) World Bank
Unemployment National unemployment rate (2019) World Bank
HDI Human Development Index UNDP
Freedom_of_Expression Civil liberties index (2021) V-Dem
Civil_Society_Index Civil society strength (2021) V-Dem

Limitations

  • Cross-sectional design: Cannot establish causality
  • Temporal mismatch: Flight data (2014) vs. protest data (2020-2025)
  • Measurement error: Potential ACLED under-reporting in authoritarian contexts
  • National-level controls: HDI, unemployment applied uniformly within countries
  • Spatial uncertainty: 50km radius may misrepresent complex metro areas
  • Data access: High-resolution aviation data remains proprietary

Citation

Bitton, R. (2025). Wings of Unrest: The Relationship Between Global Flight Connectivity and Social Instability.

This work contributes to literature on:

  • Globalization and domestic political contention
  • Infrastructure networks and protest diffusion
  • Urban political dynamics and global integration
  • Spatial determinants of collective action

Contact

Raphael Bitton rbitton@uchicago.edu

License

Research data sourced from publicly available datasets. Analysis code available for academic use.

Description
A quantitative research project investigating the relationship between global air connectivity and social unrest across 2,620 cities worldwide.
Readme 109 MiB
Languages
Jupyter Notebook 92.3%
Python 7.7%