多距离空间聚类分析 (Ripley's K 函数) (空间统计)

摘要

确定要素(或与要素相关联的值)是否显示某一距离范围内具有统计显著性的聚类或离散。

了解有关“多距离空间聚类分析”工作原理的详细信息

插图

多距离空间聚类分析工具图示
在一定距离范围内测量空间聚集/分散。

使用情况

  • 此工具需要使用投影数据来准确测量距离。

  • 工具输出是一个包含字段的表格:ExpectedKObservedK 分别包含预期和观察到的 K 值。 由于应用了 L(d) 变换,因此 ExpectedK 值始终与距离值相匹配。 DiffK 字段包含 K 观测值与 K 预期值的差值。 如果指定了置信区间选项,则附加字段 LwConfEnvHiConfEnv 也将包含在输出表中。 这些字段包含工具的每个迭代(由距离段数量参数指定)的置信区间信息。

  • 如果特定距离的 K 观测值大于 K 预期值,则与该距离(分析尺度)的随机分布相比,该分布的聚类程度更高。 如果 K 观测值小于 K 预期值,则与该距离的随机分布相比,该分布的离散程度更高。 如果 K 观测值大于 HiConfEnv 值,则该距离的空间聚类具有统计显著性。 如果 K 观测值小于 LwConfEnv 值,则该距离的空间离散具有统计显著性。 有关解释的其他信息,请参考多距离空间聚类分析(Ripley's K 函数)的工作原理

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

  • 权重字段最适用于表示事件数或计数。

  • 如果未指定权重字段,则最大的 DiffK 值表示促进空间聚类的过程最明显的距离。

  • 下面将介绍如何计算置信区间

    • 权重字段

      如果未指定权重字段,则可通过在研究区域中随机分布点并计算该分布的 L(d) 来构建置信区间。 点的每个随机分布称为一次“置换”。 例如,如果选择了 99 次置换,则在每次迭代时,该工具均会将一组点随机分布 99 次。 将这些点分布 99 次之后,该工具会对每个距离选择相对 k 观察值向上和向下偏离最大的 k 预期值;这些值将成为置信区间。

    • 包含权重字段

      指定了权重字段时,仅会对权重值进行随机重新分配来计算置信区间;点位置则保持固定。 其实,指定“权重字段”时,位置会保持固定,并且该工具会评估空间中要素值的聚类。 但如果未指定权重字段,则工具将分析要素位置的聚类/离散。

  • 因为置信区间通过随机置换构建,所以定义置信区间的值将随着不同的随机置换而改变,甚至当参数相同时也是如此。 但是,对于随机数生成器地理处理环境来说,如果设置一个种子值,重复分析将产生一致的结果。

  • 计算置信区间参数选择的置换检验次数可以不受限制地转换为置信度:9 转换为 90%,99 转换为 99%,999 转换为 99.9%。

  • 如果未指定研究区域,此工具会使用最小外接矩形作为研究区域面。 与范围不同,最小外接矩形不一定必须与 x 轴和 y 轴对齐。

  • K 函数统计对研究区域的大小非常敏感。 根据点所在研究区域大小的不同,相同的点置换可以表现为聚类或离散。 因此,认真考虑研究区域的边界非常有必要。 下图为经典示例,说明如何根据指定的研究区域分散或聚集相同的要素分布。

    要素分布可根据研究区域的大小进行聚类或分散。

  • 如果研究区域方法参数选择了用户提供的研究区域要素类,则研究区域要素类为必填项。

  • 如果指定了研究区域要素类,则应只具有一个单部分要素(研究区域面)。

  • 如果未指定开始距离距离增量,则将基于输入要素类的范围计算默认值。

  • K 函数对位于研究区域边界附近的要素具有统计缺漏偏差。 边界校正方法参数提供了解决这一偏差的方法。

    • 不应用任何特定的边界校正。 但是,落在用户指定的研究区域外的输入要素类中的点计入相邻要素计数。 如果您收集数据的研究区域非常之大,但只需在数据收集范围内分析较小的区域,则此方法是合适的。

    • 模拟外边界值

      此方法在研究区域边界外创建边界内所发现点的镜像点,以便校正边附近的低估现象。 将镜像与研究区域的边的最大距离范围相等的距离内的点。 使用已镜像的点会使边点的相邻要素估计更加精确。 下图说明了计算中将使用哪些点,以及哪些点仅用于边缘校正。

      模拟外边界值边校正方法
    • 缩小分析区域

      此边校正技术将分析区域的大小收缩一定的距离,此距离与将在分析中使用的最大距离范围相等。 收缩研究区域后,仅在为仍处于研究区域内的点评估相邻要素数目时,才会考虑新研究区域外发现的点。 K 函数计算期间,不会以任何其他方式使用这些点。 下图说明了计算中将使用哪些点,以及哪些点仅用于边缘校正。

      区域减少边校正方法
    • Ripley 边校正公式

      此方法检查每个点与研究区域的边的距离以及这个点到其各相邻要素的距离。 如果有的相邻要素与所涉及点的距离比与研究区域的边的距离更远,则所有这类相邻要素都将被指定额外权重。 此边校正方法仅适用于形状为正方形或矩形的研究区域,或者当为研究区域方法参数选择最小外接矩形时才适用。

  • 如果未应用边界校正,则统计缺漏偏差会随分析距离的增加而增加。

  • 从数学上说,“多距离空间聚类分析”工具使用 Ripley's k 函数的常用变换,其中带有随机点集的预期结果与输入距离相等。 变换 L(d) 如下所示:

    K 函数变换方程

    其中 A 表示区域,N 表示点数,d 表示距离而 k(i, j) 表示权重,当 i 和 j 之间的距离小于或等于 d 时,如果无边界校正,权重为 1,当 i 和 j 之间的距离大于 d 时,权重为 0。 应用边校正后,k(i, j) 的权重略有变化。

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

  • 警告:

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

参数

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

将要执行分析的要素类。

Feature Layer
输出表

将写入分析结果的表。

Table
距离段数量

针对聚类而递增邻域大小和分析数据集的次数。 分别在开始距离距离增量参数中指定的增量的起点和大小。

Long
计算置信区间
(可选)

置信区间通过将要素点(或要素值)随机放在研究区域中计算。 随机放置的点/值的数量与要素类中的点的数量相同。 每组随机放置都称为一次“置换”,置信区间就通过这些置换创建。 使用此参数,可选择创建置信区间的置换检验次数。

  • 0 次置换 - 无置信区间未创建置信区间。
  • 9 次置换随机放置了 9 组点/值。
  • 置换检验次数为 99随机放置了 99 组点/值。
  • 999 次置换随机放置了 999 组点/值。
String
以图形方式显示结果
(可选)

该参数无效,但仍支持向后兼容。

Boolean
权重字段
(可选)

数值字段,包含代表每个位置的要素/事件数量的权重。

Field
开始距离
(可选)

开始聚类分析的距离及开始增量的距离。 为此参数输入的值应使用输出坐标系的单位。

Double
距离增量
(可选)

每次迭代过程中要递增的距离。 分析中使用的距离于开始距离处开始,以距离增量中指定的数量增加。 为此参数输入的值应使用输出坐标系环境设置的单位。

Double
边界校正方法
(可选)

对于研究区域的边附近要素的相邻要素数目低估情况进行校正所采用的方法。

  • 不应用边校正。 但是,如果输入要素类已经有位于研究区域边界之外的点,则这些点将用于边界附近要素的邻域计数。
  • 模拟外边界值此方法模拟研究区域外的点,以便边附近的相邻要素数目不被低估。 所模拟点是研究区域边界内的边附近的点“镜像”。
  • 缩小分析区域此方法收缩研究区域,以便某些点可在研究区域边界外被发现。 在研究区域外发现的点用于计算相邻要素数目,但不可用于聚类分析自身。
  • Ripley 边校正公式对于点 i 附近的所有点 (j),此方法检查研究区域的边缘是否更靠近 i,或者 j 是否更靠近 i。 如果 j 更接近,则对点 j 赋予额外的权重。 此边校正方法仅适用于形状为正方形或矩形的研究区域。
String
研究区域方法
(可选)

指定要用于研究区域的区域。 K 函数对研究区域大小的变化很敏感,因此仔细选择该值很重要。

  • 最小外接矩形表示将使用包含所有点的最小可能矩形。
  • 用户提供的研究区域要素类表示将在“研究区域要素类”参数中提供定义研究区域的要素类。
String
研究区域要素类
(可选)

描绘应在其中分析输入要素类的区域的要素类。 仅在研究区域方法参数选择了用户提供的研究区域要素类时需要指定。

Feature Layer

派生输出

标注说明数据类型
结果图表

汇总工具结果的折线图。

Graph

arcpy.stats.MultiDistanceSpatialClustering(Input_Feature_Class, Output_Table, Number_of_Distance_Bands, {Compute_Confidence_Envelope}, {Display_Results_Graphically}, {Weight_Field}, {Beginning_Distance}, {Distance_Increment}, {Boundary_Correction_Method}, {Study_Area_Method}, {Study_Area_Feature_Class})
名称说明数据类型
Input_Feature_Class

将要执行分析的要素类。

Feature Layer
Output_Table

将写入分析结果的表。

Table
Number_of_Distance_Bands

针对聚类而递增邻域大小和分析数据集的次数。 分别在 Beginning_DistanceDistance_Increment 参数中指定的增量的起点和大小。

Long
Compute_Confidence_Envelope
(可选)

置信区间通过将要素点(或要素值)随机放在研究区域中计算。 随机放置的点/值的数量与要素类中的点的数量相同。 每组随机放置都称为一次“置换”,置信区间就通过这些置换创建。 使用此参数,可选择创建置信区间的置换检验次数。

  • 0_PERMUTATIONS_-_NO_CONFIDENCE_ENVELOPE未创建置信区间。
  • 9_PERMUTATIONS随机放置了 9 组点/值。
  • 99_PERMUTATIONS随机放置了 99 组点/值。
  • 999_PERMUTATIONS随机放置了 999 组点/值。
String
Display_Results_Graphically
(可选)

该参数无效,但仍支持向后兼容。

  • NO_DISPLAY不会创建图形汇总(默认)。
  • DISPLAY_IT图形汇总将创建为图形图层。
Boolean
Weight_Field
(可选)

数值字段,包含代表每个位置的要素/事件数量的权重。

Field
Beginning_Distance
(可选)

开始聚类分析的距离及开始增量的距离。 为此参数输入的值应使用输出坐标系的单位。

Double
Distance_Increment
(可选)

每次迭代过程中要递增的距离。 分析中使用的距离于 Beginning_Distance 处开始,以 Distance_Increment 中指定的数量增加。 为此参数输入的值应使用输出坐标系环境设置的单位。

Double
Boundary_Correction_Method
(可选)

对于研究区域的边附近要素的相邻要素数目低估情况进行校正所采用的方法。

  • NONE不应用边校正。 但是,如果输入要素类已经有位于研究区域边界之外的点,则这些点将用于边界附近要素的邻域计数。
  • SIMULATE_OUTER_BOUNDARY_VALUES此方法模拟研究区域外的点,以便边附近的相邻要素数目不被低估。 所模拟点是研究区域边界内的边附近的点“镜像”。
  • REDUCE_ANALYSIS_AREA此方法收缩研究区域,以便某些点可在研究区域边界外被发现。 在研究区域外发现的点用于计算相邻要素数目,但不可用于聚类分析自身。
  • RIPLEY_EDGE_CORRECTION_FORMULA对于点 i 附近的所有点 (j),此方法检查研究区域的边缘是否更靠近 i,或者 j 是否更靠近 i。 如果 j 更接近,则对点 j 赋予额外的权重。 此边校正方法仅适用于形状为正方形或矩形的研究区域。
String
Study_Area_Method
(可选)

指定要用于研究区域的区域。 K 函数对研究区域大小的变化很敏感,因此仔细选择该值很重要。

  • MINIMUM_ENCLOSING_RECTANGLE表示将使用包含所有点的最小可能矩形。
  • USER_PROVIDED_STUDY_AREA_FEATURE_CLASS表示将在“研究区域要素类”参数中提供定义研究区域的要素类。
String
Study_Area_Feature_Class
(可选)

描绘应在其中分析输入要素类的区域的要素类。 仅在 Study_Area_Method = "USER_PROVIDED_STUDY_AREA_FEATURE_CLASS" 时指定。

Feature Layer

派生输出

名称说明数据类型
Result_Image

汇总工具结果的折线图。

Graph

代码示例

MultiDistanceSpatialClustering 示例 1(Python 窗口)

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

import arcpy
arcpy.env.workspace = r"C:\data"
arcpy.stats.MultiDistanceSpatialClustering("911Calls.shp","kFunResult.dbf", 11,
                                           "0_PERMUTATIONS_-_NO_CONFIDENCE_ENVELOPE",
                                           "NO_DISPLAY", "#", 1000, 200, "REDUCE_ANALYSIS_AREA",
                                           "MINIMUM_ENCLOSING_RECTANGLE", "#")
MultiDistanceSpatialClustering 示例 2(独立脚本)

以下独立 Python 脚本演示了如何使用 MultiDistanceSpatialClustering 函数。

# Use Ripley's K-Function to analyze the spatial distribution of 911
# calls in Portland Oregon 

# Import system modules
import arcpy

# Set property to overwrite existing outputs
arcpy.env.overwriteOutput = True

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

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

    # Set Distance Band Parameters: Analyze clustering of 911 calls from
    # 1000 to 3000 feet by 200 foot increments
    numDistances = 11
    startDistance = 1000.0
    increment = 200.0

    # Process: Run K-Function...
    kFun = arcpy.stats.MultiDistanceSpatialClustering("911Calls.shp",
                        "kFunResult.dbf", numDistances,
                        "0_PERMUTATIONS_-_NO_CONFIDENCE_ENVELOPE", 
                        "NO_DISPLAY", "#", startDistance, increment,
                        "REDUCE_ANALYSIS_AREA",
                        "MINIMUM_ENCLOSING_RECTANGLE", "#")

except:
    # If an error occurred when running the tool, print out the error message.
    print(arcpy.GetMessages())

环境

特殊情况

输出坐标系

在分析之前,会将要素几何投影到“输出坐标系”,因此为开始距离距离增量参数输入的值与“输出坐标系”中指定的值一致。 所有数学计算都基于输出坐标系空间参考