April 2026

You are currently browsing the monthly archive for April 2026.

The raw trips maps is now corrected!! Every arc in this map of Santiago is coloured by how much the raw mobile network data was wrong. Red means under-counted. Blue means over-represented. Width is corrected trip volume.

The striking thing is that the map is overwhelmingly red. Not just at the periphery, where sparse tower coverage is expected to introduce bias. Even the thick, dominant corridors are red.

The reason is likely geometry. The flows that rank highest visually are the ones that combine high volume with long distance, and long-distance commuting in Santiago almost always has at least one endpoint in a less-covered area outside the dense urban core. That is exactly where tower density drops, detection probability falls, and the network starts to miss trips.

This is the corrected origin-destination matrix for the Santiago metropolitan region (the raw one is here), derived from mobile phone (XDR) data and reweighted using inverse probability weighting (IPW) to account for heterogeneous tower density. The colour of each arc is the log-ratio of corrected to raw trips for that specific corridor, *not the trip count itself*.

We do this here:
– Ferres, L., & Elejalde, E. (2026). Systematic biases in mobile phone mobility data from heterogeneous tower density. Zenodo. https://doi.org/10.5281/zenodo.19484460

I’ll write more about the statistical fraamework we used, but the detaills are there and in the associated github.

The literature has treated cell towers as isotropic light bulbs since 2008. They’re really not (that’s why sometimes you don’t have a mobile phone signal!).


Left: Voronoi tessellation of 1,292 BTS across Santiago (R13), ~6 km window over the downtown core. Each tower owns every point closer to it than any other mast, with 360° coverage assumed.

Right: the same towers, drawn as directional sector wedges built from the azimuth field that has always been in the catalog. Most masts carry three antennas radiating ~120° beams; a few carry six.

Dropping the isotropic assumption pulls the median effective radius from 504 m to 375 m region-wide, and from 245 m to 181 m inside this window. Sub-kilometre spatial resolution from a column already in the data.

The black gaps in the right panel are not missing values. They are the map being honest about where no antenna is aiming.

I’m working on a series of blog posts and “spinoffs” of this paper:

Ferres, L., & Elejalde, E. (2026). Systematic biases in mobile phone mobility data from heterogeneous tower density. Zenodo. https://zenodo.org/records/19484460

Next, I’ll try to explain the statistical methods we used, and how we can correct the values.

Tags: , , ,

This is one of the most complete pictures of a city’s daily movement that money can buy. Eigh hundred and ninety million trips.

Origin-destination matrix from mobile phone data (XDR records) in Santiago, Chile. 658k H3 hex-to-hex pairs, 6.5 weeks of observations, top 2,000 flows ranked by log(volume) x sqrt(distance).

Each arc is a quadratic Bezier between H3 resolution-8 cell centroids (~460 m edges). Hexagons colored by log10 of total trip throughput. Dark background, no basemap, just the data.

Tower density in Santiago varies by two orders of magnitude between urban core and rural periphery, which means short-distance and rural trips are systematically invisible. These are three stylistic variations (amber, electric, and magenta/pink) of the uncorrected picture.

– Code: https://github.com/leoferres/mobilens
– Preprint: https://zenodo.org/records/19484460

Tags: , , ,

New preprint and accompanying software release: “Systematic biases in mobile phone mobility data from heterogeneous tower density,” with Erick Elejalde (L3S, Leibniz Universität Hannover).    

Mobile phone records (CDRs and the higher-resolution XDRs) are now standard inputs for human mobility, epidemic modelling, and disaster response, but the spatial distribution of cell towers introduces measurement biases that are rarely quantified. Towers cluster in cities and thin out in rural areas. The result is a spatially structured detection floor: short rural trips never cross a sector boundary and are invisible, rural users get misattributed to oversized Voronoi cells, and origin-destination matrices end up artificially urban-centric. The biases are correlated with the very variable (urbanicity) that researchers most often want to study.

We characterise the problem and propose a six-step correction pipeline:

1. Sector polygons inferred from antenna azimuth and height, replacing the standard tower-point Voronoi tessellation
2. Detection-floor modelling at the per-site level
3. Dasymetric redistribution of census population onto an H3 hexagonal grid
4. OD construction with intra-site sector-crossing recovery
5. Inverse probability weighting with a tower-density-aware inclusion probability          
6. Fay-Herriot small area smoothing toward a gravity prior

Applied to the Región Metropolitana de Santiago using a 63,832 antenna catalog, the 2024 Chilean census, and 6.5 weeks of XDR data:

– Sector polygons give a 3.0x gain in effective spatial resolution over tower-point Voronoi (median 299 m versus 894 m)
– The 50% detection threshold ranges from 16 m in the urban core to 2,542 m at the most isolated site
– Intra-site sector crossings recover roughly 100 million short-distance trips (median displacement 429 m) that are invisible at the tower level
– IPW uplifts rural comuna flows by 50 to 73%, while the urban core is slightly downweighted
– Fay-Herriot shrinkage weights vary from about 0.7 in the urban core to under 0.1 at the periphery, mirroring the tower-density gradient

The pipeline is implemented in mobilens, an MIT-licensed Python library that is operator- and country-agnostic. The minimum inputs are a tower catalog with azimuth and height, a census population layer at any administrative level, and a study area boundary polygon. Steps 1 to 3 (the spatial characterisation of the bias) can be carried out without any XDR data, which makes the library useful even where records are unavailable.

– Code: https://github.com/leoferres/mobilens
– Preprint: https://zenodo.org/records/19484460

Substantive feedback before journal submission is welcome!!

Tags: , ,