Summary
Given a set of weighted features, identifies statistically significant hot spots and cold spots using the GetisOrd Gi* statistic.
Learn more about how Hot Spot Analysis (GetisOrd Gi*) works
Illustration
Usage
This tool identifies statistically significant spatial clusters of high values (hot spots) and low values (cold spots). It creates a new Output Feature Class with a zscore, pvalue, and confidence level bin (Gi_Bin) for each feature in the Input Feature Class.
The zscores and pvalues are measures of statistical significance which tell you whether or not to reject the null hypothesis, feature by feature. In effect, they indicate whether the observed spatial clustering of high or low values is more pronounced than one would expect in a random distribution of those same values. The zscore and pvalue fields do not reflect any kind of FDR (False Discovery Rate) correction.
The Gi_Bin field identifies statistically significant hot and cold spots regardless of whether or not the FDR correction is applied. Features in the +/3 bins reflect statistical significance with a 99 percent confidence level; features in the +/2 bins reflect a 95 percent confidence level; features in the +/1 bins reflect a 90 percent confidence level; and the clustering for features in bin 0 is not statistically significant. Without FDR correction, statistical significance is based on the pvalue and zscore fields. When you check the optional Apply False Discovery Rate (FDR) Correction parameter, the critical pvalues determining confidence levels is reduced to account for multiple testing and spatial dependence.
A high zscore and small pvalue for a feature indicates a spatial clustering of high values. A low negative zscore and small pvalue indicates a spatial clustering of low values. The higher (or lower) the zscore, the more intense the clustering. A zscore near zero indicates no apparent spatial clustering.

The zscore is based on the randomization null hypothesis computation. For more information on zscores, see What is a zscore? What is a pvalue?
When the Input Feature Class is not projected (that is, when coordinates are given in degrees, minutes, and seconds) or when the output coordinate system is set to a Geographic Coordinate System, distances are computed using chordal measurements. Chordal distance measurements are used because they can be computed quickly and provide very good estimates of true geodesic distances, at least for points within about thirty degrees of each other. Chordal distances are based on an oblate spheroid. Given any two points on the earth's surface, the chordal distance between them is the length of a line, passing through the threedimensional earth, to connect those two points. Chordal distances are reported in meters.
When chordal distances are used in the analysis, the Distance Band or Threshold Distance parameter, if specified, should be given in meters.
Prior to ArcGIS 10.2.1, you would see a warning message if the parameters and environment settings you selected would result in calculations being performed using Geographic Coordinates (degrees, minutes, seconds). This warning advised you to project your data into a Projected Coordinate System so that distance calculations would be accurate. Beginning at 10.2.1, however, this tool calculates chordal distances whenever Geographic Coordinate System calculations are required.

For line and polygon features, feature centroids are used in distance computations. For multipoints, polylines, or polygons with multiple parts, the centroid is computed using the weighted mean center of all feature parts. The weighting for point features is 1, for line features is length, and for polygon features is area.
The Input Field should contain a variety of values. The math for this statistic requires some variation in the variable being analyzed; it cannot solve if all input values are 1, for example. If you want to use this tool to analyze the spatial pattern of incident data, consider aggregating your incident data or using the Optimized Hot Spot Analysis tool.
The Optimized Hot Spot Analysis tool interrogates your data to automatically select parameter settings that will optimize your hot spot results. It will aggregate incident data, select an appropriate scale of analysis, and adjust results for multiple testing and spatial dependence. The parameter options it selects are reported to the Results window, and these may help you refine your parameter choices when you use this tool. This tool gives you full control and flexibility over your parameter settings.
Your choice for the Conceptualization of Spatial Relationships parameter should reflect inherent relationships among the features you are analyzing. The more realistically you can model how features interact with each other in space, the more accurate your results will be. Recommendations are outlined in Selecting a Conceptualization of Spatial Relationships: Best Practices. Here are some additional tips:
 FIXED_DISTANCE_BAND
The default Distance Band or Threshold Distance will ensure each feature has at least one neighbor, and this is important. But often, this default will not be the most appropriate distance to use for your analysis. Additional strategies for selecting an appropriate scale (distance band) for your analysis are outlined in Selecting a fixed distance band value.
 INVERSE_DISTANCE or INVERSE_DISTANCE_SQUARED
When zero is entered for the Distance Band or Threshold Distance parameter, all features are considered neighbors of all other features; when this parameter is left blank, the default distance will be applied.
Weights for distances less than 1 become unstable when they are inverted. Consequently, the weighting for features separated by less than 1 unit of distance are given a weight of 1.
For the inverse distance options (INVERSE_DISTANCE, INVERSE_DISTANCE_SQUARED, or ZONE_OF_INDIFFERENCE), any two points that are coincident will be given a weight of one to avoid zero division. This assures features are not excluded from analysis.
 FIXED_DISTANCE_BAND

Additional options for the Conceptualization of Spatial Relationships parameter, including spacetime relationships, are available using the Generate Spatial Weights Matrix or Generate Network Spatial Weights tools. To take advantage of these additional options, use one of these tools to construct the spatial weights matrix file prior to analysis; select GET_SPATIAL_WEIGHTS_FROM_FILE for the Conceptualization of Spatial Relationships parameter; and for the Weights Matrix File parameter, specify the path to the spatial weights file you created.

More information about spacetime cluster analysis is provided in the SpaceTime Analysis documentation.

Map layers can be used to define the Input Feature Class. When using a layer with a selection, only the selected features are included in the analysis.
If you provide a Weights Matrix File with a .swm extension, this tool is expecting a spatial weights matrix file created using either the Generate Spatial Weights Matrix or Generate Network Spatial Weights tools; otherwise, this tool is expecting an ASCIIformatted spatial weights matrix file. In some cases, behavior is different depending on which type of spatial weights matrix file you use:
 ASCIIformatted spatial weights matrix files:
 Weights are used as is. Missing featuretofeature relationships are treated as zeros.
 The default weight for self potential is zero, unless you specify a Self Potential Field value or include self potential weights explicitly.
 Asymmetric relationships are honored allowing for a feature to have a neighboring feature that doesn't have a neighbor itself. This means the neighboring feature is included in the local mean calculations for the original feature, but the neighboring feature is not included in the calculations for the global mean.
 If the weights are row standardized, results will likely be incorrect for analyses on selection sets. If you need to run your analysis on a selection set, convert the ASCII spatial weights file to an SWM file by reading the ASCII data into a table, then using the CONVERT_TABLE option with the Generate Spatial Weights Matrix tool.
 SWMformatted spatial weights matrix file:
 If the weights are row standardized, they will be restandardized for selection sets; otherwise, weights are used as is.
 The default weight for self potential is one, unless you specify a Self Potential Field value.
 ASCIIformatted spatial weights matrix files:
Running your analysis with an ASCIIformatted spatial weights matrix file is memory intensive. For analyses on more than 5,000 features, consider converting your ASCIIformatted spatial weights matrix file into an SWMformatted file. First put your ASCII weights into a formatted table (using Excel, for example). Next, run the Generate Spatial Weights Matrix tool using CONVERT_TABLE for the Conceptualization of Spatial Relationships parameter. The output will be an SWMformatted spatial weights matrix file.

When this tool runs in ArcMap, the Output Feature Class is automatically added to the table of contents with default rendering applied to the Gi_Bin field. The hottocold rendering applied is defined by a layer file in <ArcGIS>/Desktop10.x/ArcToolbox/Templates/Layers. You can reapply the default rendering, if needed, by importing the template layer symbology.

The Output Feature Class includes a SOURCE_ID field which allows you to Join it to the Input Feature Class, if needed.

The Modeling Spatial Relationships help topic provides additional information about this tool's parameters.
When using this tool in Python scripts, the result object returned from tool execution has the following outputs:
Position Description Data Type 0
Output Feature Class
Feature Class
1
Results field name (GiZScore)
Field
2
Probability field name (GiPValue)
Field
3
Source ID field name (SOURCE_ID)
Field
Syntax
HotSpots_stats (Input_Feature_Class, Input_Field, Output_Feature_Class, Conceptualization_of_Spatial_Relationships, Distance_Method, Standardization, {Distance_Band_or_Threshold_Distance}, {Self_Potential_Field}, {Weights_Matrix_File}, {Apply_False_Discovery_Rate__FDR__Correction})
Parameter  Explanation  Data Type 
Input_Feature_Class  The feature class for which hot spot analysis will be performed.  Feature Layer 
Input_Field  The numeric field (number of victims, crime rate, test scores, and so on) to be evaluated.  Field 
Output_Feature_Class  The output feature class to receive the zscore and pvalue results.  Feature Class 
Conceptualization_of_Spatial_Relationships  Specifies how spatial relationships among features are defined.
 String 
Distance_Method  Specifies how distances are calculated from each feature to neighboring features.
 String 
Standardization  Row standardization has no impact on this tool: results from Hot Spot Analysis (the GetisOrd Gi* statistic) would be identical with or without row standardization. The parameter is disabled; it remains as a tool parameter only to support backwards compatibility.
 String 
Distance_Band_or_Threshold_Distance (Optional)  Specifies a cutoff distance for the inverse distance and fixed distance options. Features outside the specified cutoff for a target feature are ignored in analyses for that feature. However, for ZONE_OF_INDIFFERENCE, the influence of features outside the given distance is reduced with distance, while those inside the distance threshold are equally considered. The distance value entered should match that of the output coordinate system. For the inverse distance conceptualizations of spatial relationships, a value of 0 indicates that no threshold distance is applied; when this parameter is left blank, a default threshold value is computed and applied. This default value is the Euclidean distance that ensures every feature has at least one neighbor. This parameter has no effect when polygon contiguity (CONTIGUITY_EDGES_ONLY or CONTIGUITY_EDGES_CORNERS) or GET_SPATIAL_WEIGHTS_FROM_FILE spatial conceptualizations are selected.  Double 
Self_Potential_Field (Optional)  The field representing self potential: the distance or weight between a feature and itself.  Field 
Weights_Matrix_File (Optional)  The path to a file containing weights that define spatial, and potentially temporal, relationships among features.  File 
Apply_False_Discovery_Rate__FDR__Correction (Optional) 
 Boolean 
Derived Output
Name  Explanation  Data Type 
Results_Field  The results field name (GiZScore).  Field 
Probability_Field  The probability field name (GiPValue).  Field 
Source_ID  The source ID field name (SOURCE_ID).  Field 
Code sample
HotSpots example 1 (Python window)
The following Python window script demonstrates how to use the HotSpots tool.
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.HotSpots_stats("911Count.shp", "ICOUNT", "911HotSpots.shp",
"GET_SPATIAL_WEIGHTS_FROM_FILE", "EUCLIDEAN_DISTANCE",
"NONE", "#", "#", "euclidean6Neighs.swm", "NO_FDR")
HotSpots example 2 (standalone script)
The following standalone Python script demonstrates how to use the HotSpots tool.
# Analyze the spatial distribution of 911 calls in a metropolitan area
# using the HotSpot Analysis Tool (Local Gi*)
# Import system modules
import arcpy
# Set property to overwrite existing output, by default
arcpy.env.overwriteOutput = True
# Local variables...
workspace = "C:/Data"
try:
# Set the current workspace (to avoid having to specify the full path to the feature classes each time)
arcpy.env.workspace = workspace
# Copy the input feature class and integrate the points to snap
# together at 500 feet
# Process: Copy Features and Integrate
cf = arcpy.CopyFeatures_management("911Calls.shp", "911Copied.shp",
"#", 0, 0, 0)
integrate = arcpy.Integrate_management("911Copied.shp #", "500 Feet")
# Use Collect Events to count the number of calls at each location
# Process: Collect Events
ce = arcpy.CollectEvents_stats("911Copied.shp", "911Count.shp", "Count", "#")
# Add a unique ID field to the count feature class
# Process: Add Field and Calculate Field
af = arcpy.AddField_management("911Count.shp", "MyID", "LONG", "#", "#", "#", "#",
"NON_NULLABLE", "NON_REQUIRED", "#",
"911Count.shp")
cf = arcpy.CalculateField_management("911Count.shp", "MyID", "[FID]", "VB")
# Create Spatial Weights Matrix for Calculations
# Process: Generate Spatial Weights Matrix...
swm = arcpy.GenerateSpatialWeightsMatrix_stats("911Count.shp", "MYID",
"euclidean6Neighs.swm",
"K_NEAREST_NEIGHBORS",
"#", "#", "#", 6,
"NO_STANDARDIZATION")
# Hot Spot Analysis of 911 Calls
# Process: Hot Spot Analysis (GetisOrd Gi*)
hs = arcpy.HotSpots_stats("911Count.shp", "ICOUNT", "911HotSpots.shp",
"GET_SPATIAL_WEIGHTS_FROM_FILE",
"EUCLIDEAN_DISTANCE", "NONE",
"#", "#", "euclidean6Neighs.swm","NO_FDR")
except:
# If an error occurred when running the tool, print out the error message.
print(arcpy.GetMessages())
Environments
Licensing information
 Basic: Yes
 Standard: Yes
 Advanced: Yes
Related topics
 Modeling spatial relationships
 What is a zscore? What is a pvalue?
 Spatial weights
 An overview of the Mapping Clusters toolset
 Spatial Autocorrelation (Global Moran's I)
 Cluster and Outlier Analysis (Anselin Local Moran's I)
 How Hot Spot Analysis (GetisOrd Gi*) works
 Incremental Spatial Autocorrelation
 Optimized Hot Spot Analysis
 Optimized Outlier Analysis