Spatial Autocorrelation Analysis in ArcGIS Pro
Revsed 3 June 2026
Spatial autocorrelation is the clustering of similar values together in adjacent or nearby areas.
Spatial data is usually spatially autocorrelated, and this tendency is useful since clusters often provide insights into the characteristics of the clustered phenomena.
While visible observation of spatial autocorrelation is useful when exploring data, more-rigorous means of quantifying autocorrelation are helpful when performing serious research.
This tutorial covers basic techniques for analyzing autocorrelation in point and polygon geospatial data.
Points
Geospatial point data is used to represent things that exist or events that occurred at specific locations on the surface of the earth. Examples of points include crime locations, animal nests, street trees, vehicle charging stations, cellphone towers, WiFi hotspots, GPS waypoints, etc. Areas are sometimes represented with points (centroids) for mapping and navigation, such as with restaurants, houses, stores, or transit stations.
Hospital Data
The point data used for examples in this tutorial is hospitals in Illinois. The Minn 2024 US Hospitals feature service in the University of Illinois ArcGIS Online organization is point locations of hospitals in the US. This data was originally provided by the US Department of Homeland Security Homeland Infrastructure Foundation-Level Data (HIFLD), but that data was password protected in 2025.
In ArcGIS Pro, Under Analysis, run the Export Features tool to export the feature service data into the project geodatabase.
- Input Features: Search ArcGIS Online for the desired feature service (Minn 2024 US Hospitals).
- Output Features: Provide a meaningful name (Hospitals)
- Filter: Filter to import only tracts in one state (IL). For this data set we also filter BEDS to positive values to remove features with -999 for missing data.
- Symbolize with a pictogram.
Kernel Density
Kernel density analysis is classical method of visualizing point clustering by using a kernel of a given radius to systematically scan an area, where the density of any particular location is the number of points within the kernel surrounding that point. Locations surrounded by clusters of points will have higher values, and areas where there are few or no points will have lower values.
A kernel density raster can be created using the Kernel Density tool.
The search radius parameter will define how much smoothing will be applied to create the raster. While the search radius can be thought of as an area of influence around each point, the choice is often arbitrary, which reduces the rigor of kernel density analysis.
- Input point or polyline features: Hospitals
- Population field: BEDS
- Output raster: Kernel_Density
- Search radius: 300000 (meters)
Heat Map
A heat map symbology is similar to a kernel density except that the smoothing radius changes depending on your level of zoom.
Heat mapping is an arbitrary visualization technique that is primarily of value for interactive exploration with web maps.
If your choice of a kernel radius primarily for aesthetics, a heat map where you Lock radius at specified scale is easier to create and adjust than a kernel density.
Feature Clustering
Feature clustering is a symbology that groups clusters of features together into bubbles with counts.
The size and number of clusters varies by zoom level, so feature clustering is primarily of value for interactive web maps of large numbers of features (such as crime points), although can be useful for static maps where there is no clearly appropriate area for aggregation.
- Select the layer in the Contents pane.
- If using a pictogram, change to a solid bubble to avoid visual conflict with the labels that the software will add to each bubble.
- Under the Feature Layer ribbon, select the Aggregation drop-down menu and choose Clustering.
- Under the Clustering ribbon, you can adjust the Clustering Radius if you want more or fewer cluster bubbles.
Feature Binning
Feature binning is a symbology that groups features together into a grid of regularly sized polygons (bins) and displays the count of features in each bin.
- Select the layer in the Contents pane.
- Under the Feature Layer ribbon, select the Aggregation drop-down menu and choose Binning.
- Under the Binning ribbon, you can adjust the Bin Size if you want larger or smaller bins.
Named Point Clusters
The Find Point Clusters tool automatically identifies specific groups of clustered points.
For example, with hospitals in Illinois the tool identifies clusters around the major metro areas (St. Louis, Chicago, and the Quad Cities) as well as secondary groupings (DeKalb, Lake County, Springfield, Peoria/Bloomington/Champaign, and Southern Illinois) which may not be immmediately visible just based on visual inspection.
- Input Point Layer: Hospitals
- Output Feature Class: Named_Hospital_Clusters
- Clustering Method: Self-adjusting (HDBSCAN)
- Minimum Features per Cluster: 5
- If desired, you can modify Symbology labels to provide specific names to the clusters.
Getis-Ord GI*
The Getis-Ord GI* statistic (pronounced gee-eye-star) was developed by Arthur Getis and J.K. Ord and introduced in 1992.
The Getis-Ord GI* statistic identifies hot spots (high values surrounded by high values) and cold spots (low values surrounded by low values).
Where
- i is an index for a specific site
- j is an index for all sites
- xi is the value at site i
- w is the spatial weight matrix which indicates how different sites are connected to each other
Because the Gi* value depends on the particular x values and the number of sites, the absolute value of the statistic is only meaningful in the context of the distribution of values for all other sites.
Accordingly, analysis values are expressed as z-scores and p-values for each site, with the p-value indicating the probability that the site is a hot or cold spot.
While this use of inferential p-values is only directly valid when working with sampled data, it does provide a clearer framework for identifying hot and cold spots in population data compared to arbitrary choices like kernel sizes.
Open the Hot Spot Analysis (Getis-Ord Gi*) tool.
- Input Feature Class: Hospitals
- Input Field: Beds
- Output Feature Class: Hospital_Hot_Spots
- Conception of Spatial Relationships: Fixed distance band
Areas
Areas can be analyzed for autocorrelation using a different set of techniques from points.
For these examples we will use median household income by census tract in Illinois using data from the 2020-2024 US Census Bureau American Community Survey five-year estimates.
Mapping permits visual analysis of geospatial data for answering general where questions.
- What regions of the state have the highest income?
- What regions of the state are underserved by hospitals?
In ArcGIS Pro, Under Analysis, run the Export Features tool to export the feature service data into the project geodatabase.
- Input Features: Search ArcGIS Online for the desired feature service (Minn 2020-2024 ACS) and select the tracts layer.
- Output Features: Provide a meaningful name (Tracts)
- Filter: Filter to import only tracts in one state (IL).
- After the tool adds the layer to your map, symbolize by the desired variable (Median_Household_Income).
Neighbors
In order to detect autocorrelation between neighboring areas, we must first answer the ancient question, "Who is my neighbor?"
Neighboring areas can be defined by adjacency or proximity.
- Adjacency means that areas are considered neighbors if they share either a common border or a common corner (vertex). Names of adjacency relationships in ArcGIS Pro include Contiguity edges only and Contiguity edges corners, also called the "queen rule" after the rule in chess that allows queens to move diagonally.
- Proximity means that areas are considered neighbors if they are within a specific distance of each other. Names of proximity relationships in ArcGIS Pro include Inverse distance, Inverse distance squared, and K nearest neighbors.
Local Moran's I
Local indicators of spatial association (LISA) were initially developed by Luc Anselin (1995) to decompose global indicators of spatial autocorrelation (like global Moran's I) and assess the contribution of each individual area.
LISA analysis with the local Moran's I statistic is used to identify clusters of areas with similar values and outlier areas with values that stand out among the neighbors.
- High-High cluster means a high value surrounded by high values (hot spots)
- High-Low outlier means a high value surrounded by low values (high outlier)
- Low-High outlier means a low value surrounded by high values (low outlier)
- Low-Low cluster means low value surrounded by low values (cold spot)
Add the Cluster and Outlier Analysis (Anselin Local Moran's I) tool to your diagram.
- Input Feature Class: Tracts
- Input Field: Median_Household_Income
- Output Feature Class: Income_Clusters
- Conception of Spatial Relationships: Inverse distance (proximity)
Add to Display to see the clusters and outliers. In this case we see the expected high clustering in the Midwest, with Oklahoma as a low outlier among other coal dependent southern states.
Getis-Ord GI*
The Getis-Ord GI* tool (described above) can also be used with areas.
Open the Hot Spot Analysis (Getis-Ord Gi*) tool.
- Input Feature Class: Tracts
- Input Field: Median_Household_Income
- Output Feature Class: Income_Hot_Spots
- Conception of Spatial Relationships: Inverse distance (proximity)
Global Autocorrelation
The analysis techniques above are local in identifying specific local areas of autocorrelation within the broader global data set.
Global analysis techniques provide a single metric or visualization to summarize the overall level of autocorrelation for the data set as a whole. Global metrics can be useful for comparing changes in autocorrelation over time or comparing autocorrelation across different data sets.
Ripley's K
B.D. Ripley (1977) developed a collection of lettered techniques for analyzing spatial point correlation.
The Ripley's K function iterates through each point and counts the number of other points within a given distance.
- The graph of K gives distances on the x axis and the total number of points at those distances on the y axis.
- The visualized output below has blue lines from the simulations showing what would be expected if points were randomly distributed across the area.
- This red line is the line of observed values from the data.
Autocorrelation is evaluated by analyzing the position of the observed line relative to the theoretical lines.
- Areas where the observed line is above the theoretical line indicates clustering at the given distances.
- Areas where the observed line is below the theoretical line indicates even dispersion at the given distances.
- The example diagram below with observed consistently above the theoretical indicates clustering at all distances.
- Under Analysis and Tools, open the Multi-Distance Spatial Cluster Analysis (Ripley's K Function) too.
- Input Feature Class: Hospitals
- Output Table: Ripley_Table
- Number of Distance Bands: 10 (default)
- Compute Confidence Envelope: 0 permutations
- The tool will create a chart named K Function comparing the actual to expected values.
Average Nearest Neighbor
Average nearest neighbor analysis compares the mean of the distances from each feature to its nearest neighbor to a theoretical mean if the features were randomly distributed (Clark and Evans 1954).
The nearest neighbor ratio of the actual to theoretical mean will be less than one if there is clustering and greater than one if the to the nearest neighbor for each feature
When used with sampled data and inferential statistics, the ratio is converted to a z-score and p-value indicating the probability of autocorrelation.
While p-values and z-scores are not directly valid when working with population data, they do provide a clearer framework for interpreting analysis results than the ratio alone.
Average Nearest Neighbor tool.
- Input Feature Class: Hospitals
- Distance Method: Euclidean
- Generate Report: Select this
- The output will be an HTML (web pate) report showing the bell curve graphic and the nearest neighbor ratio.
Global Moran's I
Global Moran's I analysis returns an index value that indicates the level of spatial autocorrelation between areas. The techniques was developed by Patrick Alfred Pierce Moran (1950).
The index value will be zero if there is no autocorrelation, negative if values are evenly dispersed, and positive if values are clustered.
When used with sampled data and inferential statistics, the index is converted to a z-score and p-value indicating the probability of autocorrelation.
While p-values and z-scores are not directly valid when working with population data, they do provide a clearer framework for interpreting analysis results than the index value alone.
- High z-scores (> +1.96) indicate high levels of clustering.
- Low z-scores (< -1.96) indicate high levels of even dispersion.
- z-scores between those extremes around zero indicate a random distribution and an absence of autocorrelation.
Open the Spatial Autocorrelation (Global Moran's I) tool:
- Input Feature Class: Tracts
- Input Field: Median_Household_Income
- Generate Report: Check this box
- Conception of Spatial Relationships: Inverse distance (proximity)
- View the HTML report link to see the graphical report showing the results.
ModelBuilder
ModelBuilder is a visual programming language in ArcGIS Pro that allows you use a graphical editor to create custom tools that allow you to automate complex, tedious, or repetitive tasks where there are consistent step-by-step workflow sequences of operations.
Using ModelBuilder, you graphically chain together sequences of tools from the toolbox.
Advantages:
- ModelBuilder diagrams allow you to change parameters and re-run tools without having to retype and remember your prior settings.
- ModelBuilder creates accessible diagrams as documentation for reports.
- ModelBuilder's only prerequisite requirement is familiarity with ArcGIS Pro tools and workflows.
- ModelBuilder is a simpler alternative to Python scripting in ArcPy and requires no background in coding.
- ModelBuilder can be a good solution for GIS people who infrequently create automated workflows.
Disadvantages:
- ModelBuilder provides no ability to automate symbology or layout.
- ModelBuilder creates an illusion of simplicity by hiding important details.
- ModelBuilder promotes vendor lock-in to ESRI products.
- ModelBuilder is a specialized skill, as opposed to Python programming as a general skill.
- ModelBuilder diagrams of complex workflows can be incomprehensible.
- ModelBuilder does not facilitate modular decomposition.
- When you create spaghetti code in a visual programming language, it actually looks like spaghetti.
ModelBuilder might be better called WorkflowBuilder since what you are usually creating in ModelBuilder are automated workflows for complex sequences of processing tasks rather than models that are analytical representations of real-world phenomena.
- A workflow is "the sequence of steps involved in moving from the beginning to the end of a working process" (Merriam-Webster 2023).
- ModelBuilder allows you to transform conceptual workflows into sequences of tool operations while also documenting those workflows as diagrams that facilitate communication of information about those workflows with non-technical audiences.
Creating a ModelBuilder Diagram
To start the ModelBuilder editor, on the Analysis ribbon, select ModelBuilder.
To add a tool, on the View ribbon, select Geoprocessing, search for the tools and drag them into ModelBuilder. Tools are represented in model builder as rectangles and data is represented with ovals.
Note that ModelBuilder has a Save button on the ModelBuilder ribbon that is separate from the project save button.
You must save your diagram and select Include Toolboxes when saving a project package or your diagram may be missing tools when you reopen the project package.
ModelBuilder can cause project packaging to fail. See this tutorial for common errors and workarounds for those errors.
View Python
Behind the scenes, ModelBuilder creates Python code that you can view.
On the ModelBuilder ribbon, click the Export options (green arrow) and select Send To Python Window to view or copy the code.