标注 | 说明 | 数据类型 |
输入要素 | 要执行聚类和异常值分析的点或面要素类。 | Feature Layer |
输出要素 | 用于接收结果字段的输出要素类。 | Feature Class |
分析字段 (可选) | 要评估的数值字段(事件数、犯罪率和测试得分等)。 | Field |
事件数据聚合方法 (可选) | 用于创建加权要素以从事件点数据进行分析的聚合方法。
| String |
边界面定义可能发生事件的区域 (可选) | 面要素类定义可能会发生输入要素事件的区域。 | Feature Layer |
用于将事件聚合到计数的面 (可选) | 用于聚合输入要素事件以获得各面要素的事件计数的面。 | Feature Layer |
性能调整 (可选) | 该分析利用了置换来创建参考分布。 选择置换检验次数时,需要兼顾精度和所需增加的处理时间。 根据您的偏好选择速度或精度。 结果越可靠越精确计算所花费的时间就会越长。
| String |
像元大小 (可选) | 用于聚合输入要素的格网像元的大小。 当聚合到六边形网格时,该距离用作构建六边形面的高度。 | Linear Unit |
距离范围 (可选) | 分析邻域的空间范围。 该值用于确定将哪些要素一起用于分析以便访问局部聚类。 | Linear Unit |
摘要
假设存在事件点或加权要素(点或面),可以使用 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 得分的详细信息,请参阅什么是 z 得分? 什么是 p 值?
如果要素的 z 得分是一个较高的正值,则表示周围的要素拥有相似值(高值或低值)。 输出要素类中的 COType 字段会将具有统计显著性的高值聚类表示为 HH,将具有统计显著性的低值聚类表示为 LL。
如果要素的 z 得分是一个较低的负值(如,小于 -3.96),则表示有一个具有统计显著性的空间数据异常值。 输出要素类中的 COType 字段将指明要素是否是高值要素而四周围绕的是低值要素 (HL),或者要素是否是低值要素而四周围绕的是高值要素 (LH)。
COType 字段将始终根据错误发现率 (FDR) 校正指明置信度为 95% 的统计显著性聚类和异常值。 只有统计显著性要素在 COType 字段中具有值。
如果未投影输入要素类(即,坐标单位为度、分和秒),或者将输出坐标系设置为地理坐标系,则采用弦测量方法计算距离。 使用弦距离测量法是因为此方法不仅计算速度快,而且提供真实测地线距离的良好估测,至少对于彼此 30 度以内的点是这样。 弦距离是基于扁椭球体计算的。 给定地球表面上的任意两点,两点之间的弦距离是从三维地球穿过然后连接该两点的一条线的长度。 弦距离报表将以米为单位。
警告:
如果您的研究区域超过 30 度,则请确保投影数据。 弦距离无法准确估算超出 30 度的测地线距离。
输入要素可以是点或面。 对于面要素,则需要分析字段。
如果具有分析字段,则应包含不同值。 此统计数学方法要求待分析的变量存在一定程度的变化;例如,如果所有输入都是 1 便无法求解。
借助分析字段,该工具适合包括采样数据在内的所有数据(点或面)。 实际上,即使存在过采样,该工具依然有效、可靠。 存在很多要素(过采样)时,该工具拥有更多信息用以计算准确、可靠的结果。 由于要素很少(欠采样),该工具会尽力生成准确可靠的结果,但可以使用的信息较少。
对于点数据,您可能对分析每个点要素相关的数据值感兴趣,因此将提供一个分析字段。 其他情况下,您会对评估点位置或点事件的空间模式(聚类)感兴趣。 是否提供分析字段取决于您提出的问题。
- 通过分析字段分析点要素时,您可以回答诸如“高值和低值会聚集在哪里?”一类的问题。
- 所选的分析字段可代表下列各项:
- 计数(如街道十字路口处发生的交通事故数)
- 比率(如城市失业率,各城市以点要素表示)
- 平均值(如学校间数学测验的平均得分)
- 指数(如国家汽车经销商的消费者满意度得分)
- 在无分析字段的情况下分析点要素时,您可以识别点聚类异常(统计显著性)强烈或稀疏之处。 可通过此类分析回答诸如“何处存在很多点?”一类的问题。 何处存在很少点?
如果没有提供分析字段,工具将聚合所有点以获得点计数,从而用作分析字段。 存在三种可能的聚合方案:
- 对于在渔网格网内计数事件和在六边形格网内计数事件,计算合适的面像元大小,并利用所得结果创建渔网面格网或六边形面格网,该格网将固定在事件点上方,并将计算每个面像元内的点数。 如果未提供定义事件潜在发生位置的边界面要素图层,则会删除不含点的像元,而仅分析剩余像元。 如果提供边界面要素图层,则保留并分析边界面范围内的所有像元。 每个面像元的点计数都将用作分析字段。
注:
虽然渔网格网是更常用的聚合形状,但在某些分析中,六边形可能是更好的选择。
- 对于在聚合面内计数事件,您需要提供用于将事件聚合到计数的面要素图层。 将计算每个面内的点事件数,然后对这些面及其相关计数进行分析。 当点与行政单位(如普查区、县或学区)相关联时,在聚合面内计数事件选项是一项合适的聚合策略。 如果要保持研究区域在多项分析中固定以增强比较,也可以使用该选项。
- 对于捕捉附近事件以创建加权点,将计算捕捉距离并使用该距离聚合附近的事件点。 将为每个聚合点提供一个计数,该计数反映捕捉到一起的事件数量。 然后将此事件计数用作分析字段来分析这些聚合点。 如果您有许多重合点或接近重合的点,并且希望维护原始点数据空间模式的各个方面,则捕捉附近事件以创建加权点选项是一项合适的聚合策略。
注:
在很多情况下,您可能需要尝试捕捉附近事件以创建加权点、在渔网格网内计数事件和在六边形格网内计数事件的策略,来比较哪种方法更能反映原始点数据的空间模式。 渔网和六边形解决方案均可以人工分离点事件聚类,但对于有些人而言,其输出比加权点输出更容易解释。 虽然渔网格网趋近于最常用的聚合形状,但在某些分析中,六边形可能是更好的选择。警告:
仅当拥有所有已知点事件并且确定当前分析的点分布中没有任何偏差时,才能在不指定分析字段的情况下分析点数据。 对于采样数据,通常都会提供分析字段(除非您对采样方案的空间模式特别感兴趣)。
- 对于在渔网格网内计数事件和在六边形格网内计数事件,计算合适的面像元大小,并利用所得结果创建渔网面格网或六边形面格网,该格网将固定在事件点上方,并将计算每个面像元内的点数。 如果未提供定义事件潜在发生位置的边界面要素图层,则会删除不含点的像元,而仅分析剩余像元。 如果提供边界面要素图层,则保留并分析边界面范围内的所有像元。 每个面像元的点计数都将用作分析字段。
如果为事件数据聚合方法选择在渔网格网内计数事件或在六边形格网内计数事件,则可以选择性地提供限定可能发生事件的区域的边界面要素图层。 如果未提供任何边界面,工具将无法确定不含事件的位置是否应当为零,进而无法指示该位置是否可能存在事件,但事件未发生;也无法确定因该位置不可能发生事件,是否应从分析中将其移除。 因此,如果未提供边界面,则仅保留至少含一个事件的像元进行分析。 如果这不是您需要的行为,您可以提供定义事件潜在发生位置的边界面要素图层,以确保保留边界面内的所有位置。 不含基础事件的渔网或六边形像元的事件计数将为零。
将从分析中排除限定可能发生事件的区域的边界面或事件聚合面范围之外的所有事件。
性能调整参数指定分析中使用置换的数量。 选择置换检验次数时,需要兼顾精度和所需增加的处理时间。 增加置换检验次数将凭借扩大伪 p 值的可能值范围而提高精度。
置换可用于确定找到您所分析值的实际空间分布的可能性。 对于各个置换而言,各要素周围的邻域值将随机进行重新排列,并会计算出 Local Moran's I 值。 结果即为值的参考分布,随后会将该参考分布与实际观测到的 Moran's I 进行比较,以确定在随机分布中查找到观测值的可能性。 默认为 199 次置换;然而,随机样本分布会随着置换次数的增加而改进,进而提高伪 p 值的精度。
该工具可以根据您数据的特征计算最佳的分析比例,或者您可以通过覆盖设置中的距离范围参数来设置分析比例。 若要素在此距离内没有邻域,则距离范围会扩展以使每个要素都至少有一个邻域。
如果不使用工具选择最佳的格网像元大小和分析比例的默认设置,可以使用覆盖设置来设置用于分析的像元大小或距离范围。
像元大小选项可以使您能够设置用于聚合点数据的格网的大小。 例如,您可决定使每个渔网格网中的像元大小为 50 米乘 50 米。 如果聚合到六边形,则像元大小为每个六边形的高度,而所生成六边形的宽度为高度除以根号 3 再乘以 2。
若要识别空间 - 时间热点,您需要使用时空模式挖掘工具或生成空间权重矩阵和聚类和异常值分析工具。 有关空间-时间聚类分析的详细信息,请参阅时空模式挖掘文档和空间 - 时间聚类分析主题。
-
地图图层可用于定义输入要素类。在使用带有选择内容的图层时,分析只会包括所选的要素。
输出要素图层会自动添加到内容列表中,同时对 COType 字段应用默认渲染。 渲染由 <ArcGIS Pro>\Resources\ArcToolBox\Templates\Layers 路径下的图层文件定义。 需要时,可使用应用图层的符号设置工具重新应用默认渲染。
警告:
在使用 shapefile 时,请注意 shapefile 无法存储空值。根据非 shapefile 输入创建 shapefile 的工具或其他过程可能会将空值存储(或解释)为零。某些情况下,空值则以极大的负值储存于 shapefile 中。这会产生意外的结果。有关详细信息,请参阅 shapefile 输出的地理处理注意事项。
参数
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 |
代码示例
以下 Python 窗口脚本演示了如何使用 OptimizedOutlierAnalysis 函数。
import arcpy
arcpy.env.workspace = r"C:\OOA"
arcpy.stats.OptimizedOutlierAnalysis("911Count.shp", "911OptimizedOutlier.shp",
"#", "SNAP_NEARBY_INCIDENTS_TO_CREATE_WEIGHTED_POINTS",
"#", "#", "BALANCED_499")
以下独立 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.management.MinimumBoundingGeometry("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.stats.OptimizedOutlierAnalysis("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())