描述
标识出空间和时间环境中的统计显著性聚类和异常值。该工具是 Anselin Local Moran's I 统计的时空实现。
插图
使用方法
此工具仅接受由通过聚合点创建时空立方体工具创建的 netCDF 文件。
时空立方体中的每一个条柱都具有 LOCATION_ID、time_step_ID、COUNT 值以及创建立方体后汇总的所有汇总字段。与同一物理位置相关的条柱将共享同一位置 ID,这些条柱组合起来可表示时间序列。与同一时间步长间隔相关的条柱将共享同一时间步长 ID,这些条柱组合起来可构成时间片。每个条柱的计数值反映在相关时间步长间隔内出现在相关位置的点的数量。
此工具使用 Anselin Local Moran's I 统计的时空实现来分析 netCDF 输入时空立方体中的变量。
输出要素将添加到内容列表,并对所有分析位置的时空分析汇总结果进行渲染。如果指定面分析掩码,分析位置为落入分析掩膜范围内的位置;否则,分析位置为至少含有一个时间步长间隔的至少一个点的位置。
除了输出要素以外,还将分析汇总写入结果窗口中。右键单击结果窗口中的消息条目并选择查看后,将在消息对话框中显示分析汇总。分析汇总还将显示在进度对话框中。
局部异常值分析工具会标识出空间和时间环境中的统计显著性聚类和异常值。有关默认输出类别定义和此分析工具所采用算法的详细信息,请参阅了解有关局部异常值分析工具的工作原理。
为识别该时空立方体中的聚类和异常值,此工具使用了 Anselin Local Moran's I 统计的时空实现,该统计考虑了相邻条柱值环境中每个条柱的值。如果条柱的质心落在邻域距离范围内并且其时间间隔在指定的邻域时间步长范围内,条柱将视为邻域。如果未提供邻域距离值,将基于点数据的空间分布来计算邻域距离值。如果未提供邻域时间步长值,该工具将使用默认值,即 1 个时间步长间隔。
要确定每个分析邻域中将包括哪些条柱,工具首先要查找落在指定邻域距离范围内的相邻条柱。然后,对于这些条柱中的每个条柱,包括位于上 N 个时间步长的相同位置的条柱,其中 N 是指定的邻域时间步长值。
邻域时间步长值是分析邻域中包括的时间步长间隔的数量值。例如,如果立方体的时间步长间隔为三个月并且指定邻域时间步长为 2,则分析邻域中将包括邻域距离范围内的所有条柱计数和其上两个时间步长间隔(涵盖九个月的时间段)的所有相关条柱。
排列可用于确定找到您所分析值的实际空间分布的可能性。对于各个排列而言,各条柱周围的邻域值将随机进行重新排列,并会计算出 Local Moran's I 值。结果即为值的参考分布,随后会将该参考分布与实际观测到的 Moran's I 进行比较,以确定在随机分布中查找到观测值的可能性。默认为 499 次排列;然而,随机样本分布会随着排列的增加而改进,进而提高伪 p 值的精度。
如果将排列数参数设置为 0,则结果为传统 p 值而不是伪 p 值。
该工具所采用的排列可利用具有多个 CPU(或多核 CPU)的系统来提高性能。该工具会默认使用可用 CPU 最大数量的一半。在更大的时空立方体中或具有更大排列数目的工具运行中,处理速度的增量最为明显。所用的 CPU 数目可以通过使用并行处理因子环境增加或减少。
面分析掩膜要素图层可能包括一个或多个定义分析研究区域的面。这些面将指出点要素可能发生的位置,还应该排除不可能存在点的区域。例如,如果正在分析入室盗窃趋势,可以使用面分析掩码来排除没有任何家庭的大湖、国家公园或其他区域。
面分析掩码与输入时空立方体的范围相交并且不会扩展立方体的尺寸。
如果用于设置研究区域的面分析掩膜的覆盖范围超过最初创建立方体时所使用的输入要素范围,可以使用面分析掩膜作为输出范围环境来重新创建立方体。这将确保面分析掩膜所覆盖的全部区域都包括在局部异常值分析工具中。创建立方体期间,将面分析掩膜用作输出范围环境设置,以确保立方体的范围与面分析掩膜的范围匹配。
- 该工具可使用时空立方体中各位置的下列属性来创建新的输出要素类。以下字段可用于自定义输出的可视化。有关其他分析结果的详细信息,请参阅了解有关局部异常值分析工具的工作原理。
- 异常值数
- 异常值百分比
- 低聚类数
- 低聚类百分比
- 低异常值数
- 低异常值百分比
- 高聚类数
- 高聚类百分比
- 高异常值数
- 高异常值百分比
- 无空间领域的位置
- 最近时间步长内出现异常值的位置
- 聚类异常值类型
- 和其他汇总统计
聚类异常值类型将始终指示置信度为 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
表示具有空间邻域以及只依赖于时间邻域的位置。
两个维度:每个位置对应一个分类。对不具有空间邻域的位置进行分析将致使计算仅依赖于时态邻域。
语法
arcpy.stpm.LocalOutlierAnalysis(in_cube, analysis_variable, output_features, {neighborhood_distance}, neighborhood_time_step, {number_of_permutations}, {polygon_mask})
参数 | 说明 | 数据类型 |
in_cube | 要分析的 netCDF 立方体。此文件必须具有 (.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 值。
| Long |
polygon_mask (可选) | 具有用于定义分析研究区域的一个或多个面的面要素图层。例如,可使用面分析掩膜将大湖从分析中排除。在输入时空立方体中定义并落在掩码外的条柱将不包括在分析中。 | Feature Layer |
代码示例
LocalOutlierAnalysis 示例 1(Python 窗口)
以下 Python 窗口脚本演示了如何使用 LocalOutlierAnalysis 工具。
# LocalOutlierAnalysis of homicides in a metropolitan area
arcpy.env.workspace = r"C:\STPM"
arcpy.LocalOutlierAnalysis_stpm("Homicides.nc", "COUNT", "LOA_Homicides.shp", "5 Miles", 2, 499, "#")
LocalOutlierAnalysis example 示例 2(独立 Python 脚本)
以下独立 Python 窗口脚本演示了如何使用 LocalOutlierAnalysis 工具。
# Create Space Time Cube by aggregating homicide incidents in a metropolitan area
# Import system modules
import arcpy
# Set 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.CreateSpaceTimeCube_stpm("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.MinimumBoundingGeometry_management("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.LocalOutlierAnalysis_stpm("Homicides.nc", "COUNT", "LOA_Homicides.shp", "5 Miles",
2, 499, "bounding.shp")
except:
# If any error occurred when running the tool, print the messages
print(arcpy.GetMessages())
环境
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是