Mobility dataset quality assessment

location data
data quality
data pipelines
An automated workflow that scores vendor mobility datasets on completeness, coverage, duplication, impossible travel and population representativeness, and generates a report with a suitability verdict.

An automated workflow that scores vendor mobility datasets on completeness, coverage, duplication, impossible travel and population representativeness, and generates a report with a suitability verdict.

Employer: Sparkgeo (client project)
When: 2026
Data: Mobile phone geolocation dataset (vendor supplied), Esri World Countries boundaries vector dataset, WorldPop 2025 global population dataset
Methods: Stratified random sampling, time series analysis, H3 hexagonal binning, device fingerprinting, speed-based outlier detection, correlation analysis, weighted composite scoring
Stack: Python, SQL, Snowflake, DuckDB, Folium, H3, GeoParquet, WeasyPrint

Background

Our client wanted to evaluate a multi-petabyte mobility dataset before committing to buy it. They mainly needed to reconstruct activity patterns in a given location from mobile device pings. The dataset came from an external vendor, and we acted as a neutral third party: we developed a quantitative assessment framework and presented the results in a report.

My contribution

  • Met with the client in exploratory meetings to define their requirements.
  • Developed a sampling methodology and corresponding SQL statements to derive a representative sample from the full dataset, as analysis of the entire dataset was impossible due to time and resourcing constraints. The sample was stratified by country: device counts per country set each country’s share, devices were picked at random within each country, and each sampled device kept its full time series so no tracks were truncated.
  • Built an automated workflow that scores the sample against multiple criteria, including:
    • data completeness (empty or filler percentage in each data column)
    • temporal coverage (typical length of time series and ping density for a given device)
    • duplication (exact same ping repeated) and replay (different devices, same data, such as identical coordinates and timestamps), found by fingerprinting each device’s pings
    • impossible travel (consecutive pings exceeding speed thresholds)
    • population representativeness: device pings and the WorldPop population grid both aggregated to H3 hexagons, and their distributions compared with correlation and other metrics
  • Walked the client through the results, report and code.

Outcome

  • Delivered an automatically generated PDF report with tables, plots and static maps, linking to interactive HTML versions of the maps, plus code to regenerate the analysis and report for new datasets.
  • The report scores each criterion and combines them into a weighted overall score out of 100, which sets the verdict: “suitable” above 80, “suitable with caveats” from 50 to 80, and “not suitable” below 50.
  • Thresholds on individual criteria can override a high overall score: breaching a soft threshold caps the verdict at “suitable with caveats”, and breaching a hard threshold makes the dataset “not suitable”.
  • The dataset assessed was rated “suitable with caveats”: a moderate overall score, with some soft thresholds breached.

Cover image: A composite image of the Earth’s eastern hemisphere at night, created from nearly a decade of nighttime lights data (2014–2022). Image source.