从字段中过滤空间自相关 (空间统计)

摘要

创建输入字段的空间过滤版本。 过滤后的变量将不具有统计显著的空间聚类,但将保留该字段的核心统计属性。 然后,可以在分析工作流程(例如相关性或回归分析)中使用该字段的空间过滤版本,假设每个位置的值在空间上是独立的(而不是空间聚类的)。

该工具通过将字段分割为非空间分量(已过滤字段)和一组空间分量(称为 Moran 特征向量)来过滤空间自相关。 当输入字段是预测或回归模型的残差或标准化残差字段时,将空间分量作为解释变量纳入模型中(除了原有的解释变量)将减少或消除残差项的空间自相关性,这是各种预测模型的假设。

了解有关 Moran 特征向量的详细信息

插图

从字段中过滤空间自相关工具图示

使用情况

  • 输出要素类将包含空间过滤的输入变量的字段以及用于过滤它的空间分量的字段。 在活动地图中运行时,输出要素图层将根据空间过滤的输入字段绘制。

  • 地理处理消息包括以下两个表,总结了用于空间过滤输入字段的空间分量的选择:

    • 邻域搜索历史记录 - 对于经过测试的 28 个空间权重矩阵 (SWM) 中的每一个,都会显示 SWM 的详细信息(例如相邻要素的数量和加权方案)、原始输入变量的 Moran's I p 值、空间过滤输入变量的 Moran's I 值和 p 值以及消除空间自相关所需的分量数量。 选择用来过滤输入字段的 SWM 以粗体文本和星号表示。
    • 空间分量搜索历史记录 - 对于选定的 SWM,显示每个分量的 ID 值(例如,ID 4 表示它是第四个空间分量)、该分量的 Moran's I 值以及空间滤波输入变量的 Moran's I 值和 p 值。 行按照所选分量的顺序排列,因此 p 值会在每一行上增加,直到超过 0.05(不具有统计意义)。

  • 该工具将为输入要素选择一个 SWM(除非在输入空间权重矩阵文件参数中提供了 SWM),并使用以下步骤选择能够最有效地从输入字段中移除空间自相关的分量:

    1. 对于每个 SWM,使用 Moran's I 置换检验来测试输入字段的统计显著空间自相关性。 如果所有 SWM 的空间自相关都不具有统计学显著性(p 值大于 0.05),则该工具将失败,并且不会对输入字段进行空间过滤。 这表明该字段在空间上不相关,不需要进行过滤。 使用 Šidák 校正来调整测试的 p 值,考虑所测试的 SWM 的数量。
    2. 对于每个具有统计显著自相关的 SWM,空间分量会按顺序添加并用作解释变量来预测输入字段。 对于每个新的空间分量,对残差项的空间自相关性进行统计显著性检验,当残差的自相关性不再具有统计显著性(p 值大于 0.05)时,每个 SWM 都会停止添加分量。 每个新分量都是根据残差项自相关的 p 值的最大增幅来选择的(表示最低的空间自相关性)。
    3. 选择需要最少数量的分量来产生不显著自相关的残差的 SWM。 如果最少数量的分量存在多个,则选择 p 值最大的分量。
    4. 所选分量和残差将作为输出要素类的字段返回。 残差是输入字段的空间过滤版本。

    该过程被称为 MIR(最小化残差中的自相关)选择方法,在以下参考文献中有完整描述:

参数

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

包含将进行空间过滤的字段的输入要素。

Feature Layer
输入字段

将进行空间过滤的输入字段。

Field
输出要素

输出要素包含空间过滤的输入字段的字段以及用于过滤它的空间分量的字段。

Feature Class
从输入要素追加所有字段
(可选)

指定是否将所有字段从输入要素复制到输出要素类。

  • 选中 - 输入要素的所有字段都将复制到输出要素类。 这是默认设置。
  • 未选中 - 仅将输入字段复制到输出要素。
Boolean
输入空间权重矩阵文件
(可选)

输入 SWM 文件 (.swm). 如果提供了值,该文件将用于定义输入要素的相邻要素和权重。 如果未提供任何值,该工具将测试 28 个不同的邻域,并使用最有效地从输入字段中过滤空间自相关的邻域。

File
输出空间权重矩阵文件
(可选)

工具选择的相邻要素和权重的输出 SWM 文件 (.swm)。 如果您提供输入 .swm 文件,则此参数不适用。

File
唯一 ID 字段
(可选)

输出 .swm 文件的唯一 ID 字段。 该字段必须是整数,并且每个输入要素必须具有唯一的值。

Field

arcpy.stats.FilterSpatialAutocorrelationFromField(in_features, input_field, out_features, {append_all_fields}, {in_swm}, {out_swm}, {id_field})
名称说明数据类型
in_features

包含将进行空间过滤的字段的输入要素。

Feature Layer
input_field

将进行空间过滤的输入字段。

Field
out_features

输出要素包含空间过滤的输入字段的字段以及用于过滤它的空间分量的字段。

Feature Class
append_all_fields
(可选)

指定是否将所有字段从输入要素复制到输出要素类。

  • ALL输入要素的所有字段都将复制到输出要素类。 这是默认设置。
  • NO_FIELDS仅将输入字段复制到输出要素。
Boolean
in_swm
(可选)

输入 SWM 文件 (.swm). 如果提供了值,该文件将用于定义输入要素的相邻要素和权重。 如果未提供任何值,该工具将测试 28 个不同的邻域,并使用最有效地从输入字段中过滤空间自相关的邻域。

File
out_swm
(可选)

工具选择的相邻要素和权重的输出 SWM 文件 (.swm)。 如果您提供输入 .swm 文件,则此参数不适用。

File
id_field
(可选)

输出 .swm 文件的唯一 ID 字段。 该字段必须是整数,并且每个输入要素必须具有唯一的值。

Field

代码示例

FilterSpatialAutocorrelationFromField 示例 1(Python 窗口)

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

# Filter spatial autocorrelation from a field.
arcpy.env.workspace = r"c:\data\project_data.gdb"
arcpy.stats.FilterSpatialAutocorrelationFromField(
    in_features="myFeatureClass",
    input_field="myAnalysisField",
    out_features=r"myOutputFeatureClass",
    append_all_fields="ALL",
    in_swm=None,
    out_swm=None,
    id_field=None
)
FilterSpatialAutocorrelationFromField 示例 2(独立脚本)

以下独立脚本演示了如何使用 FilterSpatialAutocorrelationFromField 函数:

# Run Generalized Linear Regression, then filter spatial autocorrelation from residuals.

import arcpy

# Set the current workspace
arcpy.env.workspace = r"c:\data\project_data.gdb"


# Run the regression tool.
arcpy.stats.GeneralizedLinearRegression(
    in_features=r"myFeatureClass",
    dependent_variable="myDependentField",
    model_type="CONTINUOUS",
    output_features=r"myOutputFeatureClass",
    explanatory_variables="myExplanatoryField1;myExplanatoryField2",
    distance_features=None,
    prediction_locations=None,
    explanatory_variables_to_match=None,
    explanatory_distance_matching=None,
    output_predicted_features=None,
    output_trained_model=None
)

arcpy.stats.FilterSpatialAutocorrelationFromField(
    in_features="myOutputFeatureClass",
    input_field="RESIDUAL",
    out_features=r"myFilteredOutputFeatureClass",
    append_all_fields="ALL",
    in_swm=None,
    out_swm=None,
    id_field=None
)

# Print the messages.
print(arcpy.GetMessages())

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题