This is a python module for calculating global (Moran's I [1]) and local spatial autocorrelation [1.5] using the AMOEBA algorithm [2]. This code works on shapefiles, although a base class is provided to allow the examination of other objects, e.g. from a spatial database.


The easiest way is to call autocorrelate.py with the name and path of the shapefile, e.g.:

python autocorrelate.py path/to/file/filename.shp

To use in other python programs:

from lcia_autocorrelation.ac_shapefile import AutocorrelationShapefile
ac = AutocorrelationShapefile("filepath")

Autocorrelation calculations are made using the PySAL library; multiple measures of autocorrelation are possible.

Local Indicators of Spatial Autocorrelation (LISA)

Moran's I is a single statistic for global autocorrelation. However, the calculation of Moran's I involves summing the individual cross products of each spatial unit. Local indicators of spatial association (LISA) (Anselin, L. (1995). "Local indicators of spatial association – LISA". Geographical Analysis, 27, 93-115) uses these local indicators directly, to calculate a local measure of clustering or autocorrelation. The LISA statistic is:

\begin{equation*} I_{i} = \frac{Z_{i}}{}\sum_{j}W_{ij}Z_{j} \end{equation*}
\begin{equation*} I = \sum_{i}\frac{I_{i}}{N} \end{equation*}

Where I is the autocorrelation statistic, Z is the deviation of the variable of interest from the average, and W is the spatial weight linking i to j.

We use the PySAL library to calculate LISA statistics.


Using pip:

pip install lcia-autocorrelation

Using easy_install:

easy_install lcia-autocorrelation


The following packages are required

  • numpy
  • scipy
  • pysal
  • rtree
  • osgeo
  • django
  • progressbar