DOI: 10.5281/zenodo.18459771
title: Hourly Global ADS-B Kinematic Sensitivity Dataset (2025)

description: Creators

Eugene PikMevocopter AerospaceContact: eugene.pik@mevocopter.com

Description

This Zenodo record provides both a global, hourly ADS-B kinematic sensitivity dataset and the Python and SQL code used to generate it for the 2025 calendar year.

No anomaly detection, labeling, attribution, or causal inference is performed.

Contents of This Release

This DOI contains the following primary artifacts:

1. Dataset

sensitivity_analysis_V2.5-2025_hourly.csv

A global, hourly, system-level dataset summarizing the distributional properties of successive ADS-B kinematic reports. Each row corresponds to one UTC hour.

 




Group
Column(s)
Description
Unit




Temporal Indexing
year, month, day, hour
UTC timestamp identifying the hourly aggregation window
—


Sampling Volume
processed_adsb_messages
Total number of quality-filtered ADS-B state vectors processed in the hour
count


Speed (Derived from Position)
mean_speed, std_speed
Mean and standard deviation of inferred ground speed from great-circle displacement
m/s


 
sp_25, sp_75, sp_95, sp_99, sp_999
25th, 75th, 95th, 99th, and 99.9th percentiles of inferred speed
m/s


 
speed_cv
Coefficient of variation of inferred speed
dimensionless


Vertical Motion
mean_vr, std_vr
Mean and standard deviation of inferred vertical rate
m/s


 
vertical_rate_cv
Coefficient of variation of vertical rate
dimensionless


Altitude Consistency
mean_ad, std_ad
Mean and standard deviation of absolute difference between geometric and barometric altitude
m


 
ad_25, ad_75, ad_95, ad_99, ad_999
25th, 75th, 95th, 99th, and 99.9th percentiles of altitude disagreement
m


 
alt_diff_cv
Coefficient of variation of altitude disagreement
dimensionless


Bearing Dynamics
mean_bc, std_bc
Mean and standard deviation of absolute bearing change between successive segments
deg


 
bc_25, bc_75, bc_95, bc_99, bc_999
25th, 75th, 95th, 99th, and 99.9th percentiles of bearing change magnitude
deg


 
bearing_change_cv
Coefficient of variation of bearing change
dimensionless


Temporal Spacing
median_dt, p95_dt
Median and 95th percentile of time difference between consecutive messages
s


Instantaneous Kinematic Jumps
mean_delta_speed, std_delta_speed
Mean and standard deviation of absolute change in reported speed
m/s


 
delta_speed_p_95, delta_speed_p_99
95th and 99th percentiles of absolute speed change
m/s


 
mean_delta_heading, std_delta_heading
Mean and standard deviation of absolute change in reported heading
deg


 
delta_heading_p_95, delta_heading_p_99
95th and 99th percentiles of absolute heading change
deg


 
mean_delta_vertical_rate, std_delta_vertical_rate
Mean and standard deviation of absolute change in vertical rate
m/s


 
delta_vr_p_95, delta_vr_p_99
95th and 99th percentiles of absolute vertical-rate change
m/s


Aircraft Sampling Diagnostics
mean_pairs_per_aircraft
Mean number of valid successive message pairs per aircraft in the hour
count


 
p95_pairs_per_aircraft
95th percentile of message-pair count per aircraft
count


 
max_pairs_per_aircraft
Maximum number of message pairs for any single aircraft
count


Distribution Tail Structure
speed_tail_ratio
Ratio of extreme to upper-tail speed percentiles
dimensionless


 
alt_tail_ratio
Ratio of extreme to upper-tail altitude disagreement percentiles
dimensionless


 
bearing_tail_ratio
Ratio of extreme to upper-tail bearing change percentiles
dimensionless


Composite Descriptor
stability_score
Weighted composite summarizing distributional tail heaviness
dimensionless




Explanatory Notes





Inferred Speed (m/s):speed_m/s = ST_Distance(lon,lat, plon,plat) / Δt — great-circle distance divided by time difference.




Vertical Rate (m/s):vertical_rate_m/s = |geoaltitude - previous_geoaltitude| / Δt — change in geometric altitude over time.




Altitude Difference (m):alt_diff_m = |geoaltitude - baroaltitude| — absolute difference between geometric and barometric altitudes.




Bearing Change (deg):Δθ = θ_t - θ_{t-1} — difference of successive bearings; statistics use |Δθ|.




Coefficient of Variation (dimensionless):CV = σ / μ — standard deviation divided by mean; applied to speed, vertical rate, altitude difference, bearing change.




Tail Ratios (dimensionless):Tail_Ratio = P_{99.9} / P_{99} — extreme/upper-tail ratio; computed separately for speed, altitude difference, and bearing change.




Composite Stability Score (dimensionless):stability_score = 0.4 * speed_tail_ratio + 0.3 * alt_tail_ratio + 0.3 * bearing_tail_ratio — weighted sum describing distributional tail heaviness; purely descriptive.



All values are distributional summaries only. No per-aircraft or per-flight labels are produced.

2. Python and SQL Code

aircraft_kinematic_trajectory-sensitivity_analysis-V2.5-final.py

A fully commented, public Python script that reproduces the dataset exactly when executed against the OpenSky Network historical Trino database, subject to data availability and access policies.

Key characteristics of the script:





Hourly, UTC-aligned processing for calendar year 2025




OAuth2-authenticated access to OpenSky Trino with resilient re-authentication




Conservative data-quality filtering (maximum inter-message gap ≤ 60 s)




Great-circle distance computation using a spherical Earth approximation




Approximate percentile computation for global tractability




Explicit exclusion of anomaly thresholds, alerts, or inference




Incremental daily CSV writes with persistent audit logging



The script is intended as a methodological reference and reproducibility artifact, not an operational surveillance tool.

Methodological Summary





ADS-B state vectors are differenced on a per-aircraft basis.




Kinematic quantities are derived only from successive reports separated by ≤ 60 seconds to ensure numerical stability.




Horizontal displacement is computed using great-circle distance.




Hourly distributions are summarized using approximate percentiles, means, and standard deviations.




No rolling windows, persistence modeling, clustering, or hypothesis testing is performed in this release.



Receiver Coverage Consideration

ADS-B observations originate from a heterogeneous, crowdsourced global receiver network. Receiver density, placement, and temporal availability vary geographically and over time, influencing the volume and composition of observed state vectors.

The metrics reported here characterize the internal kinematic self-consistency of observed ADS-B data only and do not attempt to correct for, normalize, or model receiver coverage effects.

Interpretation Constraints

This release must not be interpreted as evidence of:





Aircraft anomalies or unsafe behavior




Avionics malfunction




Interference, spoofing, or cyber activity




Air navigation service provider performance




Safety incidents or operational degradation



All reported variation reflects statistical properties of reported ADS-B data influenced by traffic mix, reporting rates, surveillance geometry, and observational conditions.

Intended Use

This dataset and code are intended for:





System-level surveillance performance characterization




Global or regional comparative analyses




Temporal sensitivity baselining




Methodological grounding for higher-resolution studies



Reproducibility

The included Python script fully specifies the analytical pipeline.Executing it against the OpenSky Trino database reproduces the dataset contained in this DOI, subject to OpenSky data retention and access policies.

License





Code: Creative Commons Attribution 4.0 International (CC BY 4.0)




Data: Subject to OpenSky Network data usage terms



Appropriate attribution is required for any reuse or derivative work.