聚类和异常值分析 (Anselin Local Moran's I) (空间统计)

摘要

给定一组加权要素,使用 Anselin Local Moran's I 统计量来识别具有统计显著性的热点、冷点和空间异常值。

详细了解“聚类和异常值分析 (Anselin Local Moran's I)”的工作原理

插图

聚类和异常值分析图示

使用情况

  • 该工具可使用输入要素类中各要素的下列属性来创建新的输出要素类:Local Moran's I 指数、z 得分、伪 p 值和聚类/异常值类型 (COType)。

  • z 得分和 p 值都是统计显著性的度量,用于逐要素地判断是否拒绝零假设。实际上,它们可指明是表面相似性(高值或低值的空间聚类)还是表面相异性(空间异常值)比我们在随机分布中预期的更加明显。输出要素类中的 p 值和 z 得分不反映任何 FDR(错误发现率)校正

  • 如果要素的 z 得分是一个较高的正值,则表示周围的要素拥有相似值(高值或低值)。输出要素类中的 COType 字段会将具有统计显著性的高值聚类表示为 HH,将具有统计显著性的低值聚类表示为 LL。

  • 如果要素的 z 得分是一个较低的负值(如,小于 -3.96),则表示有一个具有统计显著性的空间数据异常值。输出要素类中的 COType 字段将指明要素是否是高值要素而四周围绕的是低值要素 (HL),或者要素是否是低值要素而四周围绕的是高值要素 (LH)。

  • COType 字段将始终指明置信度为 95% 的统计显著性聚类和异常值。只有统计显著性要素在 COType 字段中具有值。如果选中可选参数应用错误发现率 (FDR) 校正,统计显著性会以校正的 95% 置信度为基础。

  • 输出要素类的默认渲染以 COType 字段中的值为基础。

  • 此工具的输出还包括一个直方图(该直方图会对输入字段值进行绘制)和一个 Moran's 散点图。这些图表可从输出要素类下的内容窗格进行访问。

  • 排列可用于确定找到您所分析值的实际空间分布的可能性。对于各个排列而言,各要素周围的邻域值将随机进行重新排列,并会计算出 Local Moran's I 值。结果即为值的参考分布,随后会将该参考分布与实际观测到的 Moran's I 进行比较,以确定在随机分布中查找到观测值的可能性。默认为 499 次排列;然而,随机样本分布会随着排列的增加而改进,进而提高伪 p 值的精度。

  • 如果将排列数参数设置为 0,则结果为传统 p 值而不是伪 p 值,z 得分基于随机化零假设进行计算。有关 z 得分和 p 值的详细信息,请参阅什么是 z 得分? 什么是 p 值?

  • 如果未投影输入要素类(即,坐标单位为度、分和秒),或者将输出坐标系设置为地理坐标系,则采用弦测量方法计算距离。使用弦距离测量法是因为此方法不仅计算速度快,而且提供真实测地线距离的良好估测,至少对于彼此 30 度以内的点是这样。弦距离以扁椭圆体为基础。给定地球表面上的任意两点,两点之间的弦距离是从三维地球穿过然后连接该两点的一条线的长度。弦距离以米为单位输出。

    警告:

    如果您的研究区域超过 30 度,则请确保投影数据。测地线距离超过 30 度时,弦距离不是理想的估测方法。

  • 分析时如使用弦距离,距离范围或距离阈值参数(如指定)应以米为单位。

  • 对于线和面要素,距离计算中会使用要素的质心。对于多点、折线或由多部分组成的面,将会使用所有要素部分的加权平均中心来计算质心。点要素的加权项是 1,线要素的加权项是长度,而面要素的加权项是面积。

  • 输入字段应包含多种值。此统计数学方法要求待分析的变量存在一定程度的变化;例如,如果所有输入都是 1 便无法求解。如果要使用此工具分析事件数据的空间模式,应考虑聚合事件数据优化的热点分析工具也可以用于分析事件数据的空间模式。

    注:

    如果您重点关注各点存在与否,而不是每个点的特定测量属性,则事件数据为表示事件(犯罪、交通事故)或对象(树、店铺)的点。

  • 空间关系的概念化参数的选择应反映要分析的要素之间的固有关系。对要素在空间中彼此交互方式构建的模型越逼真,结果就越准确。选择空间关系的概念化:最佳做法中给出了建议。以下是一些额外提示:

    • 固定距离范围

      使用距离范围或距离阈值,从而确保每个要素至少拥有一个相邻要素。这一点非常重要,但通常,此默认值并不是适用于分析的最合适的距离。为分析选择适合的比例(距离范围)的其他策略在选择固定距离范围值中进行了概括介绍。

    • 反距离反距离平方

      如果为距离范围或阈值距离参数输入 0,则所有要素均被视为所有其他要素的相邻要素;如果将此参数留空,则将采用默认距离。

      如果距离权重小于 1,则对其取倒数时将变得不稳定。因此,对于分隔距离小于 1 单位的要素权重,权重值将指定为 1。

      对于“反距离”选项(反距离反距离平方无差别的区域),为避免产生除数为零的情况,任何重合两点的权重值均将指定为 1。这样便可确保将要素包含在分析之内。

  • 空间关系的概念化参数的附加选项(包括空间-时间关系)在使用生成空间权重矩阵工具时可用。要利用这些附加选项,请在分析前先构造空间权重矩阵文件;为空间关系的概念化参数选择通过文件获取空间权重;为权重矩阵文件参数指定您所创建的空间权重文件的路径。

  • 有关空间-时间聚类分析的详细信息,请参阅空间-时间分析文档。

  • 地图图层可用于定义输入要素类。在使用带有选择内容的图层时,分析只会包括所选的要素。

  • 如果提供一个带 .swm 扩展名的权重矩阵文件,则此工具需要输入的是一个由生成空间权重矩阵工具所创建的空间权重矩阵文件;否则,此工具需要输入一个 ASCII 格式的空间权重矩阵文件。在某些情况下,根据您所使用的空间权重矩阵文件类型,行为会有所不同:

    • ASCII 格式的空间权重矩阵文件:
      • 按原样使用权重。所缺失的要素与要素之间的关系被视为零。
      • 如果对权重进行了行标准化,则选择集的分析结果很有可能不正确。如果需要对选择集运行分析,则通过以下方法将 ASCII 空间权重文件转换为 SWM 文件:将 ASCII 数据读入表,然后将转换表选项与成空间权重矩阵工具结合使用。
    • SWM 格式的空间权重矩阵文件:
      • 如果对权重进行了行标准化,则会针对选择集将其重新标准化;否则按原样使用权重。

  • 使用 ASCII 格式的空间权重矩阵文件运行您的分析会占用大量内存。如果要分析的要素超过 5,000 个,则考虑将 ASCII 格式的空间权重矩阵文件转换为 SWM 格式的文件。首先,将 ASCII 权重置入一个带格式的表中(例如,使用 Excel)。接下来运行生成空间权重矩阵工具,并使用空间关系的概念化参数的转换表。输出将是 SWM 格式的空间权重矩阵文件。

  • 输出要素类会自动添加到内容列表中,同时对 COType 字段应用默认渲染。应用的渲染由 <ArcGIS Pro>\Resources\ArcToolBox\Templates\Layers 路径下的图层文件定义。需要时,可使用应用图层的符号设置工具重新应用默认渲染。

  • 输出要素类包含 SOURCE_ID 字段,在需要时可通过该字段将此要素类添加输入要素类

  • 空间关系建模帮助主题提供了有关此工具的参数的附加信息。

  • 警告:

    在使用 shapefile 时,请注意 shapefile 无法存储空值。根据非 shapefile 输入创建 shapefile 的工具或其他过程可能会将空值存储(或解释)为零。某些情况下,空值则以极大的负值储存于 shapefile 中。这会产生意外的结果。有关详细信息,请参阅 shapefile 输出的地理处理注意事项

  • 在 Python 脚本中使用此工具时,从工具执行返回的结果对象具有以下输出:

    位置描述数据类型

    0

    输出要素类

    要素类

    1

    索引字段名称

    字段

    2

    Z 得分字段名称

    字段

    3

    概率字段名称

    字段

    4

    COType 字段名称

    字段

    5

    源 ID 字段名称

    字段

参数

标注说明数据类型
输入要素类

要执行聚类和异常值分析的要素类。

Feature Layer
输入字段

要评估的数值字段。

Field
输出要素类

用于接收结果字段的输出要素类。

Feature Class
空间关系的概念化

指定要素空间关系的定义方式。

  • 反距离与远处的要素相比,附近的邻近要素对目标要素的计算的影响要大一些。
  • 反距离平方反距离类似,但它的坡度更明显,因此影响下降得更快,并且只有目标要素的最近邻域会对要素的计算产生重大影响。
  • 固定距离范围将对邻近要素环境中的每个要素进行分析。在指定临界距离(距离范围或距离阈值)内的邻近要素将分配有值为 1 的权重,并对目标要素的计算产生影响。在指定临界距离外的邻近要素将分配值为零的权重,并且不会对目标要素的计算产生任何影响。
  • 无差别的区域在目标要素的指定临界距离(距离范围或距离阈值)内的要素将分配有值为 1 的权重,并且会影响目标要素的计算。一旦超出该临界距离,权重(以及邻近要素对目标要素计算的影响)就会随距离的增加而减小。
  • K - 最近邻最近的 k 要素将包含在分析中。相邻要素的数目 (k) 由相邻要素的数目参数指定。
  • 仅邻接边只有共用边界或重叠的相邻面要素会影响目标面要素的计算。
  • 邻接边拐角共享边界、节点或重叠的面要素会影响目标面要素的计算。
  • 通过文件获取空间权重将由指定空间权重文件定义空间关系。指向空间权重文件的路径由权重矩阵文件参数指定。
String
距离法

指定计算每个要素与邻近要素之间的距离的方式。

  • 欧氏两点间的直线距离
  • 曼哈顿沿垂直轴度量的两点间的距离(城市街区);计算方法是对两点的 x 和 y 坐标的差值(绝对值)求和。
String
标准化

当要素的分布由于采样设计或施加的聚合方案而可能偏离时,建议使用行标准化。

  • 不对空间权重执行标准化。
  • 对空间权重执行标准化;每个权重都会除以行的和(所有相邻要素的权重和)。
String
距离范围或距离阈值
(可选)

为“反距离”和“固定距离”选项指定中断距离。将在对目标要素的分析中忽略为该要素指定的中断之外的要素。但是,对于“无差别的区域”,指定距离之外的要素的影响会随距离的减小而变弱,而在距离阈值之内的影响则被视为是等同的。输入的距离值应该与输出坐标系的值匹配。

对于空间关系的“反距离”概念化,值为 0 表示未应用任何阈值距离;当将此参数留空时,将计算并应用默认阈值。此默认值为确保每个要素至少具有一个邻域的欧氏距离。

如果选择了“面邻接”或者“通过文件获取空间权重”空间概念化,则此参数不会产生任何影响。

Double
权重矩阵文件
(可选)

包含权重(其定义要素间的空间关系以及可能的时态关系)的文件的路径。

File
应用错误发现率 (FDR) 校正
(可选)

指定在评估统计显著性时是否使用 FDR 校正。

  • 选中 - 统计显著性将以置信度为 95% 的错误发现率校正为基础。
  • 未选中 - p 值小于 0.05 的要素将显示在 COType 字段中,反映置信度为 95% 的统计显著性聚类或异常值。这是默认设置。
Boolean
置换检验次数
(可选)

伪 p 值计算对应的随机排列数。默认排列次数为 499。如果选择 0 次排列,则会计算标准 p 值。

  • 0未使用排列时,将计算标准 p 值。
  • 99如果置换检验次数为 99,则可能的最小伪 p 值为 0.01,其他所有伪 p 值将是该值的倍数。
  • 199如果有 199 个排列,则可能的最小伪 p 值为 0.005,其他所有可能的伪 p 值将是该值的倍数。
  • 499如果置换检验次数为 499,则可能的最小伪 p 值为 0.002,其他所有伪 p 值将是该值的倍数。
  • 999如果置换检验次数为 999,则可能的最小伪 p 值为 0.001,其他所有伪 p 值将是该值的倍数。
  • 9999如果置换检验次数为 9999,则可能的最小伪 p 值为 0.0001,其他所有伪 p 值将是该值的倍数。
Long
相邻要素的数目
(可选)

将包含在分析中的相邻要素数目。

Long

派生输出

标注说明数据类型
索引字段名称

索引字段的名称。

字段
Z 得分字段名称

Z 得分字段的名称。

字段
概率字段

概率字段的名称。

字段
聚类异常值类型

聚类/异常值字段名称。

字段
源 ID

源 ID 字段名称。

字段

arcpy.stats.ClustersOutliers(Input_Feature_Class, Input_Field, Output_Feature_Class, Conceptualization_of_Spatial_Relationships, Distance_Method, Standardization, {Distance_Band_or_Threshold_Distance}, {Weights_Matrix_File}, {Apply_False_Discovery_Rate__FDR__Correction}, {Number_of_Permutations}, {number_of_neighbors})
名称说明数据类型
Input_Feature_Class

要执行聚类和异常值分析的要素类。

Feature Layer
Input_Field

要评估的数值字段。

Field
Output_Feature_Class

用于接收结果字段的输出要素类。

Feature Class
Conceptualization_of_Spatial_Relationships

指定要素空间关系的定义方式。

  • INVERSE_DISTANCE与远处的要素相比,附近的邻近要素对目标要素的计算的影响要大一些。
  • INVERSE_DISTANCE_SQUAREDINVERSE_DISTANCE 类似,但它的坡度更明显,因此影响下降得更快,并且只有目标要素的最近邻域会对要素的计算产生重大影响。
  • FIXED_DISTANCE_BAND将对邻近要素环境中的每个要素进行分析。在指定临界距离 (Distance_Band_or_Threshold_Distance) 内的邻近要素将分配值为 1 的权重,并对目标要素的计算产生影响。在指定临界距离外的邻近要素将分配值为零的权重,并且不会对目标要素的计算产生任何影响。
  • ZONE_OF_INDIFFERENCE在目标要素的指定临界距离 (Distance_Band_or_Threshold_Distance) 内的要素将分配值为 1 的权重,并且会影响目标要素的计算。一旦超出该临界距离,权重(以及邻近要素对目标要素计算的影响)就会随距离的增加而减小。
  • K_NEAREST_NEIGHBORS最近的 k 要素将包含在分析中。相邻要素的数目 (k) 由 number_of_neighbors 参数指定。
  • CONTIGUITY_EDGES_ONLY只有共用边界或重叠的相邻面要素会影响目标面要素的计算。
  • CONTIGUITY_EDGES_CORNERS共享边界、节点或重叠的面要素会影响目标面要素的计算。
  • GET_SPATIAL_WEIGHTS_FROM_FILE将由指定空间权重文件定义空间关系。指向空间权重文件的路径由 Weights_Matrix_File 参数指定。
String
Distance_Method

指定计算每个要素与邻近要素之间的距离的方式。

  • EUCLIDEAN_DISTANCE两点间的直线距离
  • MANHATTAN_DISTANCE沿垂直轴度量的两点间的距离(城市街区);计算方法是对两点的 x 和 y 坐标的差值(绝对值)求和。
String
Standardization

当要素的分布由于采样设计或施加的聚合方案而可能偏离时,建议使用行标准化。

  • NONE不对空间权重执行标准化。
  • ROW对空间权重执行标准化;每个权重都会除以行的和(所有相邻要素的权重和)。
String
Distance_Band_or_Threshold_Distance
(可选)

为“反距离”和“固定距离”选项指定中断距离。将在对目标要素的分析中忽略为该要素指定的中断之外的要素。但是,对于“无差别的区域”,指定距离之外的要素的影响会随距离的减小而变弱,而在距离阈值之内的影响则被视为是等同的。输入的距离值应该与输出坐标系的值匹配。

对于空间关系的“反距离”概念化,值为 0 表示未应用任何阈值距离;当将此参数留空时,将计算并应用默认阈值。此默认值为确保每个要素至少具有一个邻域的欧氏距离。

如果选择了“面邻接”或者“通过文件获取空间权重”空间概念化,则此参数不会产生任何影响。

Double
Weights_Matrix_File
(可选)

包含权重(其定义要素间的空间关系以及可能的时态关系)的文件的路径。

File
Apply_False_Discovery_Rate__FDR__Correction
(可选)
  • APPLY_FDR统计显著性将以置信度为 95% 的错误发现率校正为基础。
  • NO_FDRP 值小于 0.05 的要素将显示在 COType 字段中,反映置信度为 95% 的统计显著性聚类或异常值(默认)。
Boolean
Number_of_Permutations
(可选)

伪 p 值计算对应的随机排列数。默认排列次数为 499。如果选择 0 次排列,则会计算标准 p 值。

  • 0未使用排列时,将计算标准 p 值。
  • 99如果置换检验次数为 99,则可能的最小伪 p 值为 0.01,其他所有伪 p 值将是该值的倍数。
  • 199如果有 199 个排列,则可能的最小伪 p 值为 0.005,其他所有可能的伪 p 值将是该值的倍数。
  • 499如果置换检验次数为 499,则可能的最小伪 p 值为 0.002,其他所有伪 p 值将是该值的倍数。
  • 999如果置换检验次数为 999,则可能的最小伪 p 值为 0.001,其他所有伪 p 值将是该值的倍数。
  • 9999如果置换检验次数为 9999,则可能的最小伪 p 值为 0.0001,其他所有伪 p 值将是该值的倍数。
Long
number_of_neighbors
(可选)

将包含在分析中的相邻要素数目。

Long

派生输出

名称说明数据类型
Index_Field_Name

索引字段的名称。

字段
ZScore_Field_Name

Z 得分字段的名称。

字段
Probability_Field

概率字段的名称。

字段
Cluster_Outlier_Type

聚类/异常值字段名称。

字段
Source_ID

源 ID 字段名称。

字段

代码示例

ClustersOutliers 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用 ClustersOutliers 工具。

import arcpy
arcpy.env.workspace = "c:/data/911calls"
arcpy.ClustersOutliers_stats("911Count.shp", "ICOUNT","911ClusterOutlier.shp",
                             "GET_SPATIAL_WEIGHTS_FROM_FILE","EUCLIDEAN_DISTANCE", 
                             "NONE","#", "euclidean6Neighs.swm","NO_FDR", 499)
ClustersOutliers 示例 2(独立脚本)

以下独立 Python 脚本演示了如何使用 ClustersOutliers 工具。


# Analyze the spatial distribution of 911 calls in a metropolitan area
# using the Cluster-Outlier Analysis Tool (Anselin's Local Moran's I)
# Import system modules
import arcpy
# Set property to overwrite outputs if they already exist
arcpy.env.overwriteOutput = True
# Local variables...
workspace = r"C:\Data\911Calls"
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")
    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!", "PYTHON")
    # Create Spatial Weights Matrix for Calculations
    # Process: Generate Spatial Weights Matrix... 
    swm = arcpy.GenerateSpatialWeightsMatrix_stats("911Count.shp", "MYID",
                        																											"euclidean6Neighs.swm",
                       																											 "K_NEAREST_NEIGHBORS",
                       															 												"#", "#", "#", 6) 
    # Cluster/Outlier Analysis of 911 Calls
    # Process: Local Moran's I
    clusters = arcpy.ClustersOutliers_stats("911Count.shp", "ICOUNT", 
                      																				  "911ClusterOutlier.shp", 
                        																				"GET_SPATIAL_WEIGHTS_FROM_FILE",
                        																				"EUCLIDEAN_DISTANCE", "NONE",
                       							 													"#", "euclidean6Neighs.swm", "NO_FDR", "499")
except arcpy.ExecuteError:
    # If an error occurred when running the tool, print out the error message.
    print(arcpy.GetMessages())

环境

特殊情况

输出坐标系

在分析之前,会将要素几何投影到“输出坐标系”,这样,为距离范围或距离阈值参数输入的值会与“输出坐标系”中指定的值一致。所有数学计算都基于“输出坐标系”的空间参考进行。输出坐标系基于度、分、秒时,测地线距离使用弦距离(米)估测。

随机数生成器

使用的随机数生成器类型始终为 Mersenne Twister。