MESA
home / methods

Methods

How MESA geocodes addresses and detects spatial clusters: the statistics, the parameters, the reference implementations it is checked against, and the primary literature. Every method below is documented from MESA's own source and validation reports, not paraphrased from a textbook.

Describes the pre-release spatial engine. Parameters are the documented defaults; where the software offers presets or options, that is stated.

These pages are a faithful account of what the code does. Where a technique is planned or documented but not yet in the shipped engine, it is called out rather than claimed. All reported geocoder accuracy is internal validation on the Utah UGRC reference only and must be revalidated for any other jurisdiction's data.

§ the methods

geocoding

Offline address geocoding

Normalization, blocking, the address-geometry gate, and a Fellegi-Sunter calibrated match score. Precision tiers, match modes, and the held-out validation regime.

hot spots

Getis-Ord Gi* & Moran's I

Local and global spatial autocorrelation: the statistics, spatial weights, Monte-Carlo inference, the Gi_Bin classification, multiple-testing correction, and empirical-Bayes rate smoothing.

scan

Bernoulli spatial scan

Kulldorff's case/control scan statistic: the likelihood-ratio test, circular candidate windows, Monte-Carlo inference, and parity with SaTScan.

01 reproducibility

MESA treats reproducibility as a correctness property, not a nicety. The design rule is stated plainly in the codebase: deterministic logic must be bit-identical across operating systems, compilers, and core counts for the same input and seed. "Bytes, not close."

The usual way Monte-Carlo inference silently breaks across platforms is the standard library: std::mt19937_64 is portable, but std::shuffle and std::uniform_int_distribution are implemented differently by libstdc++, libc++, and MSVC. MESA therefore never uses them for inference. It uses fully specified primitives instead:

portableShufflea textbook Fisher-Yates (Durstenfeld) shuffle, identical on every platform
portableBoundedUintunbiased bounded integer via OpenBSD rejection sampling, identical on every platform
block-Kahan sumcompensated summation over deterministically partitioned blocks, so results are identical from 1 core to 128

Thread-count invariance is proven in-tree across [1, 2, 4, 8, 16] threads at [999, 9999, 99999] permutations; a reference-vector test pins the RNG output and a proof test hashes an entire permutation null distribution. Pure floating-point that is genuinely order-dependent is compared with explicit tolerances, never exact equality.

02 how it is validated

The statistical engine is checked against the field's reference implementations rather than trusted on its own:

PySAL esdaGi* z-scores match G_Local within 10−4; FDR-adjusted p-values within 10−3; the Gi_Bin classification matches at the 90/95/99% levels wherever the neighbor graphs agree.7
R spdepthe multiple-testing correction matches stats::p.adjust to 10−6; the empirical-Bayes smoother matches spdep::EBest.8
SaTScan 10.3.2the Bernoulli scan matches candidate generation, tied-distance handling, relative risk, and Monte-Carlo inference, with no discrepancies observed on the tested datasets.
SciPy & Ran exact two-sample Kolmogorov-Smirnov test, used to compare permutation null distributions to the oracles, agrees with scipy.stats.ks_2samp(mode='exact') to 1.1 × 10−16 and R ks.test(exact=TRUE) to 1.8 × 10−15 over 10,010 stress datasets.

Type-I calibration. Under simulated complete spatial randomness, MESA verifies that the empirical rejection rate tracks the nominal level (P(p ≤ 0.05) ≈ 0.05, and likewise at 0.01 and 0.001), asserted against 99.999% Wilson score intervals over 5,000 simulations per run (100,000 nightly). Method-specific power and equivalence results are on each method's page.

03 author

MESA is designed and built by Ross Wardrup, an MPH Epidemiology candidate at the University of Memphis and a geospatial-software developer with over a decade building spatial analysis tools across federal hazard modeling, healthcare operations, and public health surveillance, including an epidemiology practicum with the Southeast Utah Health Department. He is sole- and co-author on peer-reviewed and preprint epidemiologic research. The links below lead to his full background.

It is a single-author, pre-release project, developed through Spatial Epi LLC. The methods and validation documented here are implemented and tested in the codebase; packaged per-platform downloads are being wired up. Questions, corrections, and requests to use it are welcome at ross@spatialepi.org.

rwardrup.com  ·  ORCID 0009-0005-8235-6047  ·  Google Scholar  ·  GitHub  ·  LinkedIn

04 citing MESA

MESA is pre-release and does not yet have a versioned, archived release with a DOI. Until it does, cite it as software:

provisional citationWardrup, R. (2026). MESA: offline address geocoding and spatial cluster detection for public health [computer software]. spatialepi.org

Please also cite the primary methods you rely on. The canonical references for each are listed on the method pages and collected below.

§ references

  1. Kahan, W. (1965). Further remarks on reducing truncation errors. Communications of the ACM, 8(1), 40.
  2. Durstenfeld, R. (1964). Algorithm 235: Random permutation. Communications of the ACM, 7(7), 420.
  3. Dwass, M. (1957). Modified randomization tests for nonparametric hypotheses. Annals of Mathematical Statistics, 28(1), 181-187.
  4. Smirnov, N. (1948). Table for estimating the goodness of fit of empirical distributions. Annals of Mathematical Statistics, 19(2), 279-281.
  5. Wilson, E. B. (1927). Probable inference, the law of succession, and statistical inference. Journal of the American Statistical Association, 22(158), 209-212.
  6. Waller, L. A., & Gotway, C. A. (2004). Applied Spatial Statistics for Public Health Data. Wiley.
  7. Rey, S. J., & Anselin, L. (2007). PySAL: A Python library of spatial analytical methods. The Review of Regional Studies, 37(1), 5-27.
  8. Bivand, R. S., & Wong, D. W. S. (2018). Comparing implementations of global and local indicators of spatial association. TEST, 27(3), 716-748.
  9. Virtanen, P., et al. (2020). SciPy 1.0: fundamental algorithms for scientific computing in Python. Nature Methods, 17, 261-272.
  geocoding →