描述
假设存在事件点或加权要素(点或面),可以使用 Anselin Local Moran's I 统计数据创建具有统计显著性的热点、冷点和空间异常值。它通过评估输入要素类的特征来生成可优化结果。
插图
使用方法
此工具用于识别具有统计显著性的高值(热点)和低值(冷点)的空间聚类以及您的数据集范围内的高异常值和低异常值。它自动聚合事件数据,识别适当的分析范围,并纠正多重测试和空间依赖性。该工具对数据进行查询,以确定用于生成可优化聚类和异常值分析结果的设置。如果要完全控制这些设置,可以改用聚类和异常值分析工具。
用于生成可优化聚类和异常值分析结果的计算设置报告在结果窗口中。相关工作流和算法在优化的异常值分析工作原理中进行了详细说明。
此工具使用 Local Moran's I 指数 (LMiIndex)、z 得分、伪 p 值和聚类/异常值类型 (COType) 为输入要素类中的每一个要素创建一个新的输出要素类。还包括具有相邻要素数的字段 (NNeighbors),每个要素在进行计算的过程中都会涉及到这些相邻要素数。
COType 字段可以识别统计显著性高低聚类(HH 和 LL)以及高低异常值(HL 和 LH),利用错误发现率 (FDR) 校正方法纠正了多重测试和空间依赖性。
z 得分和 p 值都是统计显著性的度量,用于逐要素地判断是否拒绝零假设。实际上,它们可指明是表面相似性(高值或低值的空间聚类)还是表面相异性(空间异常值)比我们在随机分布中预期的更加明显。输出要素类中的 z 得分和 p 值不反映任何类型的 FDR(错误发现率)校正。有关 z 得分和 p 值的详细信息,请参阅什么是 z 得分? 什么是 p 值?
如果要素的 z 得分是一个较高的正值,则表示周围的要素拥有相似值(高值或低值)。输出要素类中的 COType 字段会将具有统计显著性的高值聚类表示为 HH,将具有统计显著性的低值聚类表示为 LL。
如果要素的 z 得分是一个较低的负值(如,小于 -3.96),则表示有一个具有统计显著性的空间数据异常值。输出要素类中的 COType 字段将指明要素是否是高值要素而四周围绕的是低值要素 (HL),或者要素是否是低值要素而四周围绕的是高值要素 (LH)。
COType 字段将始终根据错误发现率校正指明置信度为 95% 的统计显著性聚类和异常值。只有统计显著性要素在 COType 字段中具有值。
如果未投影输入要素类(即,坐标单位为度、分和秒),或者将输出坐标系设置为地理坐标系,则采用弦测量方法计算距离。使用弦距离测量法是因为此方法不仅计算速度快,而且提供真实测地线距离的良好估测,至少对于彼此 30 度以内的点是这样。弦距离以扁椭圆体为基础。给定地球表面上的任意两点,两点之间的弦距离是从三维地球穿过然后连接该两点的一条线的长度。弦距离以米为单位输出。
输入要素可以是点或面。对于面要素,则需要分析字段。
如果具有分析字段,则应包含不同值。此统计数学方法要求待分析的变量存在一定程度的变化;例如,如果所有输入都是 1 便无法求解。
借助分析字段,该工具适合包括采样数据在内的所有数据(点或面)。实际上,即使存在过采样,该工具依然有效、可靠。存在很多要素(过采样)时,该工具拥有更多信息用以计算准确、可靠的结果。存在很少要素(欠采样)时,该工具依然尽可能生成准确、可靠的结果,但可用信息大大减少。
对于点数据,您可能对分析每个点要素相关的数据值感兴趣,因此将提供一个分析字段。其他情况下,您会对评估点位置或点事件的空间模式(聚类)感兴趣。是否提供分析字段取决于您提出的问题。
- 通过分析字段分析点要素时,您可以回答诸如“高值和低值会聚集在哪里”一类的问题。
- 所选的分析字段可代表下列各项:
- 计数(如街道十字路口处发生的交通事故数)
- 比率(如城市失业率,各城市以点要素表示)
- 平均值(如学校间数学测验的平均得分)
- 指数(如国家汽车经销商的消费者满意度得分)
- 在无分析字段的情况下分析点要素时,您可以识别点聚类异常(统计显著性)强烈或稀疏之处。可通过此类分析回答诸如“何处存在很多点”一类的问题。何处存在很少点?
如果没有提供分析字段,工具将聚合所有点以获得点计数,从而用作分析字段。存在三种可能的聚合方案:
- 对于 COUNT_INCIDENTS_WITHIN_FISHNET_POLYGONS 和 COUNT_INCIDENTS_WITHIN_HEXAGON_POLYGONS,计算合适的面像元大小,并利用所得结果创建渔网面网格或六边形面网格,该网格将固定在事件点上方,并将计算每个面像元内的点数。如果未提供定义事件潜在发生位置的边界面要素图层,则会删除不含点的像元,而仅分析剩余像元。如果提供边界面要素图层,则保留并分析边界面范围内的所有像元。每个面像元的点计数都将用作分析字段。
- 对于 COUNT_INCIDENTS_WITHIN_AGGREGATION_POLYGONS 和 COUNT_INCIDENTS_WITHIN_HEXAGON_POLYGONS,您需要提供 用于将事件聚合到计数的面要素图层。将计算每个面内的点事件数,然后对这些面及其相关计数进行分析。当点与行政单位(如普查区、县或学区)相关联时,COUNT_INCIDENTS_WITHIN_AGGREGATION_POLYGONS 是一项合适的聚合策略。如果要保持研究区域在多项分析中固定以增强比较,也可以使用该选项。
- 对于 SNAP_NEARBY_INCIDENTS_TO_CREATE_WEIGHTED_POINTS,将计算捕捉距离并使用该距离聚合附近的事件点。将为每个聚合点提供一个计数,该计数反映捕捉到一起的事件数量。然后将此事件计数用作分析字段来分析这些聚合点。如果您有许多重合点或接近重合的点,并且希望维护原始点数据空间模式的各个方面,则 SNAP_NEARBY_INCIDENTS_TO_CREATE_WEIGHTED_POINTS 选项是一项合适的聚合策略。在很多情况下,您可能需要尝试 SNAP_NEARBY_INCIDENTS_TO_CREATE_WEIGHTED_POINTS、COUNT_INCIDENTS_WITHIN_FISHNET_POLYGONS 和 COUNT_INCIDENTS_WITHIN_HEXAGON_POLYGONS 的策略,来比较哪种方法更能反映原始点数据的空间模式。渔网和六边形解决方案均可以人工分离点事件聚类,但对于有些人而言,其输出比加权点输出更容易解释。
如果为事件数据聚合方法选择 COUNT_INCIDENTS_WITHIN_FISHNET_POLYGONS 或 COUNT_INCIDENTS_WITHIN_HEXAGON_POLYGONS,则可以选择性地提供定义事件潜在发生位置的边界面要素图层。如果未提供任何边界面,工具将无法确定不含事件的位置是否应当为零,进而无法指示该位置是否可能存在事件但事件未发生;也无法确定因该位置不可能发生事件,是否应从分析中将其移除。因此,如果未提供边界面,则仅保留至少含一个事件的像元进行分析。如果这不是您需要的行为,您可以提供定义事件潜在发生位置的边界面要素图层,以确保保留边界面内的所有位置。不含基础事件的渔网或六边形像元的事件计数将为零。
将从分析中排除定义事件潜在发生位置的边界面或用于将事件聚合到计数的面范围之外的所有事件。
性能调整参数指定分析中使用排列的数量。选择排列数时需要兼顾精度和所需增加的处理时间。增加排列数将凭借扩大伪 p 值的可能值范围而提高精度。
排列可用于确定找到您所分析值的实际空间分布的可能性。对于各个排列而言,各要素周围的邻域值将随机进行重新排列,并会计算出 Local Moran's I 值。结果即为值的参考分布,随后会将该参考分布与实际观测到的 Moran's I 进行比较,以确定在随机分布中查找到观测值的可能性。默认为 199 次排列;然而,随机样本分布会随着排列的增加而改进,进而提高伪 p 值的精度。
该工具可以根据您数据的特征计算最佳的分析比例,或者您可以通过覆盖设置中的距离范围参数来设置分析比例。若要素在此距离内没有邻域,则距离范围会扩展以使每个要素都至少有一个邻域。
如果不使用工具选择最佳的格网像元大小和分析比例的默认设置,可以使用覆盖设置用于分析的像元大小或距离范围。
像元大小选项可以使您能够设置用于聚合点数据的格网的大小。例如,您可决定使每个渔网格网中的像元大小为 50 米乘 50 米。如果聚合到六边形,则像元大小为每个六边形的高度,而所生成六边形的宽度为高度除以根号 3 再乘以 2。
若要识别空间 - 时间热点,您需要使用时空模式挖掘工具或生成空间权重矩阵和聚类和异常值分析工具。有关空间-时间聚类分析的详细信息,请参阅时空模式挖掘文档或空间 - 时间聚类分析主题。
-
地图图层可用于定义输入要素类。在使用带有选择内容的图层时,分析只会包括所选的要素。
-
输出要素图层会自动添加到内容列表中,同时对 COType 字段应用默认渲染。渲染由 <ArcGIS>\Desktop10.x\ArcToolbox\Templates\Layers 路径下的图层文件定义。如有必要,可通过导入模板图层符号系统重新应用默认渲染。
语法
arcpy.stats.OptimizedOutlierAnalysis(Input_Features, Output_Features, {Analysis_Field}, {Incident_Data_Aggregation_Method}, {Bounding_Polygons_Defining_Where_Incidents_Are_Possible}, {Polygons_For_Aggregating_Incidents_Into_Counts}, {Performance_Adjustment}, {Cell_Size}, {Distance_Band})
参数 | 说明 | 数据类型 |
Input_Features | 将要执行聚类和异常值分析的点或面要素类。 | Feature Layer |
Output_Features | 用于接收结果字段的输出要素类。 | Feature Class |
Analysis_Field (可选) | 要评估的数值字段(事件数、犯罪率和测试得分等)。 | Field |
Incident_Data_Aggregation_Method (可选) | 用于创建加权要素以通过事件点数据进行分析的聚合方法。
| String |
Bounding_Polygons_Defining_Where_Incidents_Are_Possible (可选) | 面要素类定义可能会发生 Input_Features 事件的区域。 | Feature Layer |
Polygons_For_Aggregating_Incidents_Into_Counts (可选) | 用于聚合 Input_Features 事件以获得各面要素的事件计数的面。 | Feature Layer |
Performance_Adjustment (可选) | 该分析利用了排列来创建参考分布。选择排列数时需要兼顾精度和所需增加的处理时间。根据您的偏好选择速度或精度。结果越可靠越精确计算所花费的时间就会越长。
| String |
Cell_Size (可选) | 用于聚合 Input_Features 的格网像元的大小。当聚合到六边形格网时,该距离用作构建六边形面的高度。 该工具仅支持千米、米、英里和英尺。 | Linear Unit |
Distance_Band (可选) | 分析邻域的空间范围。该值用于确定应将哪些要素一起分析以便访问本地聚类。 该工具仅支持千米、米、英里和英尺。 | Linear Unit |
代码示例
OptimizedOutlierAnalysis 示例 1(Python 窗口)
下面的 Python 窗口脚本演示了如何使用 OptimizedOutlierAnalysis 工具。
import arcpy
arcpy.env.workspace = r"C:\OOA"
arcpy.OptimizedOutlierAnalysis_stats("911Count.shp", "911OptimizedOutlier.shp", "#", "SNAP_NEARBY_INCIDENTS_TO_CREATE_WEIGHTED_POINTS", "#", "#", "BALANCED_499", "#", "#")
OptimizedOutlierAnalysis 示例 2(独立 Python 脚本)
以下独立 Python 脚本演示了如何使用 OptimizedOutlierAnalysis 工具。
# Analyze the spatial distribution of 911 calls 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:\OOA\data.gdb"
try:
# Set the current workspace (to avoid having to specify the full path to the feature classes each time)
arcpy.env.workspace = workspace
# Create a polygon that defines where incidents are possible
# Process: Minimum Bounding Geometry of 911 call data
arcpy.MinimumBoundingGeometry_management("Calls911", "Calls911_MBG", "CONVEX_HULL", "ALL",
"#", "NO_MBG_FIELDS")
# Optimized Outlier Analysis of 911 call data using fishnet aggregation method with a bounding polygon of 911 call data
# Process: Optimized Outlier Analysis
ooa = arcpy.OptimizedOutlierAnalysis_stats("Calls911", "Calls911_ohsaFishnet", "#", "COUNT_INCIDENTS_WITHIN_FISHNET_POLYGONS",
"Calls911_MBG", "#", "BALANCED_499", , "#", "#")
except arcpy.ExecuteError:
# If any error occurred when running the tool, print the messages
print(arcpy.GetMessages())
环境
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是