局部异常值分析 (时空模式挖掘)

摘要

标识出空间和时间环境中的统计显著性聚类和异常值。 该工具是 Anselin Local Moran's I 统计的时空实现。

了解有关局部异常值分析工具工作原理的详细信息

插图

“局部异常值分析”工具图示

使用情况

  • 此工具接受由时空模式挖掘工具箱中的各种工具创建的 netCDF 文件。

    了解有关创建时空立方体的详细信息

  • 时空立方体中每个条柱都有 LOCATION_IDtime_step_IDCOUNT 值以及创建立方体后包含的所有汇总字段变量。 与同一物理位置相关的条柱将共享同一位置 ID,这些条柱组合起来可表示时间序列。 与同一时间步长间隔相关的条柱将共享同一时间步长 ID,这些条柱组合起来可构成时间片。 每个条柱的计数值反映在相关时间步长间隔内出现在相关位置的事件或记录的数量。

    每个立方图格都有位置 ID、时间步长 ID 和计数

  • 此工具使用 Anselin Local Moran's I 统计的时空实现来分析 netCDF 输入时空立方体中的变量。

  • 输出要素将添加到内容窗格,并对所有分析位置的时空分析汇总结果进行渲染。 如果指定面分析掩膜,分析位置为落入分析掩膜范围内的位置;否则,分析位置为至少含有一个时间步长间隔的至少一个点的位置。

    含有数据或不含数据的立方体位置

  • 除了输出要素以外,工具执行过程中还将分析汇总以消息的形式写入地理处理窗格底部。 可将鼠标悬停在进度条上、单击弹出按钮 弹出 或展开地理处理窗格中的详细信息部分来访问消息。 您还可以通过目录窗格中的地理处理历史访问之前运行工具的消息。

  • 局部异常值分析工具会标识出空间和时间环境中的统计显著性聚类和异常值。 有关默认输出类别定义和此分析工具所采用算法的详细信息,请参阅了解有关局部异常值分析工具的工作原理

  • 为识别该时空立方体中的聚类和异常值,此工具使用了 Anselin Local Moran's I 统计的时空实现,该统计考虑了相邻条柱值环境中每个条柱的值。

  • 要确定每个分析邻域中将包括哪些条柱,工具首先要查找落在指定空间关系的概念化范围内的相邻条柱。 然后,对于这些立方图格中的每个立方图格,包括位于上 N 个时间步长的相同位置的立方图格,其中 N 是指定的邻域时间步长值。

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

  • 默认空间关系的概念化固定距离。 如果条柱的质心落在邻域距离范围内并且其时间间隔在指定的邻域时间步长范围内,条柱将视为邻域。 如果未提供邻域距离值,将基于点数据的空间分布来计算邻域距离值。 如果未提供邻域时间步长值,该工具将使用默认值,即 1 个时间步长间隔。

  • 邻域数参数可以覆盖固定距离选项的邻域距离,还可以扩展仅邻接边邻接边拐角选项的邻域搜索。 在这些情况下,系统会将邻域数用作最小数值。 例如,如果将固定距离邻域距离指定为 10 英里,并将邻域数参数指定为 3,所有条柱至少会接收到 3 个空间邻域(即使必须增加邻域距离才能找到它们)。 只有在未达到最小邻域数时,才增加这些条柱的距离。 同样,借助邻接选项,对于具有少于此相邻要素数目的条柱,将根据质心邻近性选择附加邻域。

  • 邻域时间步长值是分析邻域中包括的时间步长间隔的数量值。 例如,如果立方体的时间步长间隔为三个月并且指定邻域时间步长2,则分析邻域中将包括指定的空间关系的概念化范围内的所有条柱计数及其之前两个时间步长间隔(涵盖九个月的时间段)的所有相关条柱。

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

  • 如果将置换检验次数参数设置为 0,则结果为传统 p 值而不是伪 p 值。

  • 该工具所采用的排列可利用具有多个 CPU(或多核 CPU)的系统来提高性能。 该工具将默认在使用 50% 可用处理器的情况下运行;但是,可以使用并行处理因子环境增加或减小使用的 CPU 数。 在更大的时空立方体中或具有更大排列数目的工具运行中,处理速度的增量最为明显。

  • 面分析掩膜要素图层可能包括一个或多个定义分析研究区域的面。 这些面将指出点要素可能发生的位置,还应该排除不可能存在点的区域。 例如,如果正在分析入室盗窃趋势,可以使用面分析掩膜来排除没有任何家庭的大湖、国家公园或其他区域。

  • 面分析掩码输入时空立方体的范围相交,不会扩展立方体的尺寸。

  • 如果用于设置研究区域的面分析掩膜的覆盖范围超过最初创建立方体时所使用的输入要素范围,可以使用面分析掩膜作为范围环境来重新创建立方体。 这将确保面分析掩膜所覆盖的全部区域都包括在局部异常值分析工具中。 创建立方体期间,将面分析掩膜用作范围环境设置,以确保立方体的范围与面分析掩膜的范围匹配。

  • 该工具可使用时空立方体中各位置的下列属性来创建新的输出要素类。 以下字段可用于自定义输出的可视化。 有关其他分析结果的详细信息,请参阅了解有关局部异常值分析工具的工作原理
    • Number of Outliers
    • Percentage of Outliers
    • Number of Low Clusters
    • Percentage of Low Clusters
    • Number of Low Outliers
    • Percentage of Low Outliers
    • Number of High Clusters
    • Percentage of High Clusters
    • Number of High Outliers
    • Percentage of High Outliers
    • 具有以下内容的位置 No Spatial Neighbors
    • 具有以下内容的位置 Outlier in the Most Recent Time Step
    • Cluster Outlier Type
    • 和其他汇总统计
  • Cluster Outlier Type 将始终指示置信度为 95% 的统计显著性聚类和异常值,并且仅具有统计显著性的条柱才能拥有此字段中的值。 该显著性可反映出错误发现率 (FDR) 校正

  • 输出要素类的默认渲染基于 CO_TYPE 字段,并会显示统计显著性的位置。 它将会显示作为显著性高-高聚类、高-低异常值、低-高异常值、低-低聚类中一部分的位置,或曾经归类为多种类型的位置。
  • 为确保每个位置至少有 1 个时态邻域,不会在第一个时间片中计算 Local Moran's 指数。 但是,第一个时间片中的条柱值将包含在全局平均值的计算中。

  • 通过运行局部异常值分析可将一些分析结果添加回 netCDF 输入时空立方体中。 在相邻条柱环境中分析各个条柱,以测量聚类的高值和低值,并识别出各个聚类中的所有空间和时间异常值。 该分析的结果为时空立方体中各条柱的 Local Moran's I 指数、伪 p 值(如果未使用排列,则为 p 值)以及聚类或异常值类型 (CO_TYPE)。

    添加到输入时空立方体的变量汇总如下:

    变量名称描述尺寸注记

    OUTLIER_{ANALYSIS_VARIABLE}_INDEX

    计算得出的 Local Moran's I 指数。

    三个维度:时空立方体中每个条柱对应一个 Local Moran's I 指数值。

    OUTLIER_{ANALYSIS_VARIABLE}_PVALUE

    Anselin Local Moran's I 统计伪 p 值或 p 值,用于测量 Local Moran's I 值的统计显著性。

    三个维度:时空立方体中每个立方图格对应一个 p 值或伪 p 值

    OUTLIER_{ANALYSIS_VARIABLE}_TYPE

    结果类别类型,可区分具有统计显著性的高值(高-高)聚类、低值(低-低)聚类、高值主要由低值围绕的异常值(高-低)以及低值主要由高值围绕的异常值(低-高)。

    三个维度:时空立方体中每个条柱对应一个聚类或异常值类型。 立方图格基于 FDR 校正

    OUTLIER_{ANALYSIS_VARIABLE}

    _HAS_SPATIAL_NEIGHBORS

    表示具有空间邻域以及只依赖于时态邻域的位置。

    两个维度:每个位置对应一个分类。 对不具有空间邻域的位置进行分析将致使计算仅依赖于时态邻域。

参数

标注说明数据类型
输入时空立方体

包含要分析的变量的时空立方体。 时空立方体具有 .nc 文件扩展名,是使用时空模式挖掘工具箱中的各种工具创建的。

File
分析变量

要分析的 netCDF 文件中的数值变量。

String
输出要素

输出要素类,包含被视为统计显著性聚类或异常值的位置。

Feature Class
邻域距离
(可选)

分析邻域的空间范围。 该值用于确定应将哪些要素一起分析以便访问本地时空聚类。

Linear Unit
邻域时间步长

包含在分析邻域中的时间步长间隔数。 该值用于确定应将哪些要素一起分析以便访问本地时空聚类。

Long
置换检验次数
(可选)

伪 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
面分析掩膜
(可选)

具有用于定义分析研究区域的一个或多个面的面要素图层。 例如,可使用面分析掩膜将大湖从分析中排除。 在输入时空立方体中定义并落在掩膜外的立方图格将不包括在分析中。

此参数仅适用于格网立方体。

Feature Layer
空间关系的概念化
(可选)

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

  • 固定距离对邻近条柱环境内的每个条柱进行分析。 在指定临界距离(邻域距离)内的邻近条柱将分配值为 1 的权重,并对目标条柱的计算产生影响。 在指定临界距离外的邻近条柱将分配值为零的权重,并且不会对目标条柱的计算产生任何影响。
  • K - 最近邻将最近的 k 条柱包含在目标条柱的分析中;k 是指定的数字参数。
  • 仅邻接边只有共用边的邻近条柱会影响目标面条柱的计算。
  • 邻接边拐角共用边或节点的条柱会影响目标面条柱的计算。
String
空间邻域数
(可选)

用于指定邻域的最小数目或精确数目以包括在目标条柱的计算中的整数。 对于 K 最近邻,每个条柱的相邻要素数正好等于这个指定数目。 对于固定距离,每个条柱将至少具有这么多的相邻要素(如有必要,邻域距离将临时增大以确保达到这么多的相邻要素)。 选中一个邻接概念化后,将向每个条柱分配至少该最小数目的相邻要素。 对于具有少于此相邻要素数目的条柱,将根据要素质心邻近性获得附加相邻要素。

Long
定义全局窗口
(可选)

Anselin Local Moran's I 统计数据工作原理为对根据每个条柱的邻域计算的局部统计数据与全局值进行比较。 可以使用此参数来控制用于计算全局值的条柱。

  • 整个立方体将对每个邻域进行分析,与整个立方体进行比较。 这是默认设置。
  • 邻域时间步长将对每个邻域进行分析,与邻域时间步长内包含的条柱进行比较。
  • 单一时间步长将每个邻域进行分析,与相同时间步长内的条柱进行比较。
String

arcpy.stpm.LocalOutlierAnalysis(in_cube, analysis_variable, output_features, {neighborhood_distance}, neighborhood_time_step, {number_of_permutations}, {polygon_mask}, {conceptualization_of_spatial_relationships}, {number_of_neighbors}, {define_global_window})
名称说明数据类型
in_cube

包含要分析的变量的时空立方体。 时空立方体具有 .nc 文件扩展名,是使用时空模式挖掘工具箱中的各种工具创建的。

File
analysis_variable

要分析的 netCDF 文件中的数值变量。

String
output_features

输出要素类,包含被视为统计显著性聚类或异常值的位置。

Feature Class
neighborhood_distance
(可选)

分析邻域的空间范围。 该值用于确定应将哪些要素一起分析以便访问本地时空聚类。

Linear Unit
neighborhood_time_step

包含在分析邻域中的时间步长间隔数。 该值用于确定应将哪些要素一起分析以便访问本地时空聚类。

Long
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
polygon_mask
(可选)

具有用于定义分析研究区域的一个或多个面的面要素图层。 例如,可使用面分析掩膜将大湖从分析中排除。 在 in_cube 中定义并落在掩膜外的条柱将不包括在分析中。

此参数仅适用于格网立方体。

Feature Layer
conceptualization_of_spatial_relationships
(可选)

指定条柱空间关系的定义方式。

  • FIXED_DISTANCE对邻近条柱环境内的每个条柱进行分析。 在指定临界距离 (neighborhood_distance) 内的邻近条柱将分配值为 1 的权重,并对目标条柱的计算产生影响。 在指定临界距离外的邻近条柱将分配值为零的权重,并且不会对目标条柱的计算产生任何影响。
  • K_NEAREST_NEIGHBORS将最近的 k 条柱包含在目标条柱的分析中;k 是指定的数字参数。
  • CONTIGUITY_EDGES_ONLY只有共用边的邻近条柱会影响目标面条柱的计算。
  • CONTIGUITY_EDGES_CORNERS共用边或节点的条柱会影响目标面条柱的计算。
String
number_of_neighbors
(可选)

用于指定邻域的最小数目或精确数目以包括在目标条柱的计算中的整数。 对于 K_NEAREST_NEIGHBORS,每个条柱的相邻要素数目正好等于这个指定数目。 对于 FIXED_DISTANCE,每个条柱将至少具有这么多的相邻要素(如有必要,neighborhood_distance 将临时增大以确保达到这么多的相邻要素)。 选中一个邻接概念化后,将向每个条柱分配至少该最小数目的相邻要素。 对于具有少于此相邻要素数目的条柱,将根据要素质心邻近性获得附加相邻要素。

Long
define_global_window
(可选)

Anselin Local Moran's I 统计数据工作原理为对根据每个条柱的邻域计算的局部统计数据与全局值进行比较。 可以使用此参数来控制用于计算全局值的条柱。

  • ENTIRE_CUBE将对每个邻域进行分析,与整个立方体进行比较。 这是默认设置。
  • NEIGHBORHOOD_TIME_STEP将对每个邻域进行分析,与邻域时间步长内包含的条柱进行比较。
  • INDIVIDUAL_TIME_STEP将每个邻域进行分析,与相同时间步长内的条柱进行比较。
String

代码示例

LocalOutlierAnalysis 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用 LocalOutlierAnalysis 函数。


# LocalOutlierAnalysis of homicides in a metropolitan area
import arcpy
arcpy.env.workspace = r"C:\STPM"
arcpy.stpm.LocalOutlierAnalysis("Homicides.nc", "COUNT", "LOA_Homicides.shp", "5 Miles", 2, 499, "#", "FIXED_DISTANCE", "3", "NEIGHBORHOOD_TIME_STEP")
LocalOutlierAnalysis 示例 2(独立脚本)

以下独立 Python 窗口脚本演示了如何使用 LocalOutlierAnalysis 功能。

# Create Space Time Cube by aggregating homicide incidents in a metropolitan area

# Import system modules
import arcpy

# Set overwriteOutput property to overwrite existing output, by default
arcpy.env.overwriteOutput = True

# Local variables...
workspace = r"C:\STPM"

try:
    # Set the current workspace (to avoid having to specify the full path to the feature 
    # classes each time)
    arcpy.env.workspace = workspace

    # Create Space Time Cube by aggregating homicide incident data with 3 months and 3 miles settings
    # Process: Create Space Time Cube By Aggregating Points
    cube = arcpy.stpm.CreateSpaceTimeCube("Homicides.shp", "Homicides.nc", "MyDate", "#", 
                                          "3 Months", "End time", "#", "3 Miles", "Property MEDIAN SPACETIME; Age STD ZEROS", "HEXAGON_GRID")

    # Create a polygon that defines where incidents are possible  
    # Process: Minimum Bounding Geometry of homicide incident data
    arcpy.management.MinimumBoundingGeometry("Homicides.shp", "bounding.shp", "CONVEX_HULL",
                                             "ALL", "#", "NO_MBG_FIELDS")

    # Local Outlier Analysis of homicide incident cube using 5 Miles neighborhood 
    # distance and 2 neighborhood time step with 499 permutations to detect outliers
    # Process: Local Outlier Analysis
    loa = arcpy.stpm.LocalOutlierAnalysis("Homicides.nc", "COUNT", "LOA_Homicides.shp", "5 Miles",
                                          2, 499, "bounding.shp", "FIXED_DISTANCE")
except arcpy.ExecuteError:
    # If any error occurred when running the tool, print the messages
    print(arcpy.GetMessages())

环境

特殊情况

随机数生成器

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