Why

Apart from the general need for current Bayesian spatial models in Python, the package is motivated by a handful of specific gaps

Gibbs beats NUTS for spatial autoregressive models

Python has a flourishing Bayesian ecosystem, but its organized around NUTS, which struggles relative to Gibbs for spatial models (Wolf et al.)

The Jacobian term needs special care

computing the spatial log determinant has huge performance implications, especially for MCMC (bivand); there’s no solid open implementation for fast and accurate lodget estimation (bsreg 2023 in R is the most recent and it’s not performant). This dramatically limits scalability

Spatial non-linear models

probit and tobit are old hat. Polya-gamma augmentation has been introduced in the spatial econometric literature (Krisztin) but only the logit model, and with no open implementation. These models have performance/scalability concerns even beyond the logdet

Spatial Flow Models

similarly, flow models are well-known in the spatial econometrics literature (lesage), but no open implementation exists (i think matlab is the only one); performance again

Bayesian diagnostics

the Bayesian workflow needs spatial contamination diagnostics; this work was started in dogan but (1) not fleshed out for the array of spatial models and (2) no implementation (performance again)

Model suite

The package organizes models along three column dimensions — likelihood (linear / non-linear), temporal structure (cross-section / panel), and outcome structure (single / flow). Each cell lists the spatial structures implemented for that combination.

Linear Non-linear
Cross-section Panel Cross-section Panel
Single Aspatial, SLX,
SAR, SEM,
SDM, SDEM
Aspatial, SLX,
SAR, SEM,
SDM, SDEM
Aspatial, SAR,
SEM, SDM
SAR, SEM
Flow Aspatial, SAR,
SEM, SDEM
Aspatial, SAR,
SEM
Aspatial, SAR Aspatial, SAR