标注 | 说明 | 数据类型 |
输入要素 | 输入要素包含将在预测模型中使用的解释变量和因变量的字段。 | Feature Layer |
输入字段 | 将在预测模型中使用的解释变量和因变量的输入字段。 | Field |
输出要素 | 输出要素将包含可在预测模型中用作附加解释变量的空间分量的字段。 | Feature Class |
从输入要素追加所有字段 (可选) | 指定是否将所有字段从输入要素复制到输出要素类。
| Boolean |
输入空间权重矩阵文件 (可选) |
将用作候选 SWM 的输入 SWM 文件 (.swm) 列表,这些 SWM 将用于创建空间分量解释变量。 如果未提供任何文件,该工具将测试 28 个不同的邻域。 | File |
输出空间权重矩阵文件 (可选) | 工具选择的相邻要素和权重的输出 SWM 文件 (.swm)。 如果您提供输入 .swm 文件,则此参数不适用。 | File |
唯一 ID 字段 (可选) | 输出 .swm 文件的唯一 ID 字段。 该字段必须是整数,并且每个输入要素必须具有唯一的值。 | Field |
仅比较输入空间权重矩阵 (可选) | 指定是仅测试输入空间权重矩阵文件参数中提供的 .swm 文件,还是同时测试另外 28 个邻域。 该工具将使用创建空间分量的 SWM,这些空间分量可以最准确地预测输入字段的值。 此参数仅在提供了至少一个输入 SWM 时适用。
| Boolean |
摘要
用于创建一组空间分量字段,这些字段很好地描述了一个或多个数值字段的空间模式,并在预测或回归模型中用作有用的解释变量。
输入字段应该为将在预测模型中使用的解释变量和因变量。 生成的空间分量字段(称为 Moran 特征向量)可用作解释变量(除了原始解释变量之外),通过考虑其他变量的空间模式,通常可提高模型的预测能力。
插图

使用情况
该工具用于创建空间分量,这些空间分量可以最精确地预测输入字段的值。 每个分量代表一个空间模式,所选分量将为模式与输入字段的模式最相似的分量。 例如,如果字段具有广泛的西到东趋势,但也包含低值和高值的聚类,则可以通过组合两个分量来表示模式:一个表示西到东趋势,另一个表示聚类。 通过纳入与解释变量和因变量的空间模式相似的解释变量,可以在预测和回归工具(例如广义线性回归、基于森林的增强分类与回归)中考虑空间效应。 通过考虑空间效应,这些非空间预测模型通常将预测得更加精确,并且空间偏差(例如残差中的空间模式)通常会减小。 这一点非常重要,由此模型将不会系统地低估或高估某些区域。 此外,解释变量的系数更易于解释,因为它们将评估解释变量和因变量之间的直接关系,同时滤除空间效应引入的噪点。
此工具旨在创建可用于预测模型的解释变量;但是,通过从预测模型的残差或标准化残差字段中移除空间自相关,从字段中过滤空间自相关工具也可用于此目的。 可以有效过滤残差自相关的空间分量通常是有用的解释变量,并且通常可以使用更少的分量作为解释变量为该工具提供等效的模型改进。 建议您尝试这两种工具,并比较原始预测模型中包含每种工具的空间分量的结果(例如,通过比较校正 R 平方值或 AIC 值)。
空间分量将作为输出要素类中的字段返回,当该工具在活动地图中运行时,输出要素图层将基于第一个空间分量进行绘制。 输入字段也将包含在输出要素类中,由此原始解释变量和空间分量解释变量可用于在预测工具中预测因变量,而无需合并输入和输出要素类。
地理处理消息包括以下表,总结了用于空间过滤输入字段的空间分量的选择:
- 邻域搜索历史记录 - 对于每个经过测试的空间权重矩阵 (SWM),都会显示 SWM 的详细信息(例如相邻要素的数量和加权方案)、使用所有分量时的 p 值和校正 R 平方值、仅使用所选分量时的校正 R 平方值以及所选分量的数量。 使用所选分量并且具有最高校正 R 平方值的 SWM 将用于创建分量,并将以粗体文本和星号表示。
- 空间分量搜索历史记录 - 对于所选 SWM,将显示每个分量的 ID 值(例如,ID 4 表示它是第四个空间分量)、分量的 Moran's I 值和 p 值,以及分量的校正 R 平方值。 将按对输入字段进行最有效单独预测(最高 R 平方值)的分量对行进行排序。
要选择用于创建空间分量的 SWM,该工具会生成一个候选 SWM 列表,并测试哪个 SWM 创建的空间分量能够最准确地预测输入字段的值。 如果在输入空间权重矩阵文件参数中未提供任何 SWM 文件,则将创建 28 个 SWM 并将其包含在候选列表中(有关每个 SWM 的描述,请参见理解 Moran 特征向量)。 如果提供了任何输入 SWM,则可以使用仅比较输入空间权重矩阵参数来指定候选列表是否仅包含提供的 SWM,或者是否包含提供的 SWM 和该工具创建的 28 个 SWM。 例如,要使用单个指定的 SWM,请在输入空间权重矩阵文件参数中提供 SWM,并保持选中仅比较输入空间权重矩阵参数。
该工具使用以下过程在候选 SWM 中进行选择:
- 对于 28 个候选 SWM 中的每一个,可以通过使用所有空间分量作为解释变量预测输入字段来测试 SWM 的统计显著性。 显著性检验将使用所有输入字段的组合 R 平方,并对 p 值执行 Šidák 校正,以考虑已检验的 SWM 的数量。 将从候选项列表中移除任何不具有统计显著性的 SWM。
- 对于剩余的候选 SWM 中的每一个,将顺序添加空间分量作为解释变量,直到下一个分量单独不具有统计显著性(p 值大于 0.05),或者该分量(以及所有先前选择的分量)的校正 R 平方值超过使用 SWM 的所有分量时的校正 R 平方值为止。 当用于预测输入字段时,通过找到具有最高统计显著性(最低 p 值)的分量来选择每个新分量。
- 将选择具有最大校正 R 平方值的 SWM 作为最终 SWM,并返回相关联的一组所选空间分量作为输出要素类中的字段。
此过程称为 FWD(前向)选择方法,将在以下参考文献中详细介绍:
Blanchet, F. Guillaume, Pierre Legendre, and Daniel Borcard. 2008. "Forward selection of explanatory variables." Ecology 89, no. 9: 2623-2632. https://doi.org/10.1890/07-0986.1.
参数
arcpy.stats.CreateSpatialComponentExplanatoryVariables(in_features, input_fields, out_features, {append_all_fields}, {in_swm}, {out_swm}, {id_field}, {compare_only_inputs})
名称 | 说明 | 数据类型 |
in_features | 输入要素包含将在预测模型中使用的解释变量和因变量的字段。 | Feature Layer |
input_fields [input_fields,...] | 将在预测模型中使用的解释变量和因变量的输入字段。 | Field |
out_features | 输出要素将包含可在预测模型中用作附加解释变量的空间分量的字段。 | Feature Class |
append_all_fields (可选) | 指定是否将所有字段从输入要素复制到输出要素类。
| Boolean |
in_swm [in_swm,...] (可选) |
将用作候选 SWM 的输入 SWM 文件 (.swm) 列表,这些 SWM 将用于创建空间分量解释变量。 如果未提供任何文件,该工具将测试 28 个不同的邻域。 | File |
out_swm (可选) | 工具选择的相邻要素和权重的输出 SWM 文件 (.swm)。 如果您提供输入 .swm 文件,则此参数不适用。 | File |
id_field (可选) | 输出 .swm 文件的唯一 ID 字段。 该字段必须是整数,并且每个输入要素必须具有唯一的值。 | Field |
compare_only_inputs (可选) | 指定是仅测试 in_swm 参数中提供的 .swm 文件,还是同时测试另外 28 个邻域。 该工具将使用创建空间分量的 SWM,这些空间分量可以最准确地预测输入字段的值。 此参数仅在提供了至少一个输入 SWM 时适用。
| Boolean |
代码示例
以下 Python 窗口脚本演示了如何使用 CreateSpatialComponentExplanatoryVariables 函数。
# Create fields that describe the spatial patterns of POPULATION.
arcpy.env.workspace = r"c:\data\project_data.gdb"
arcpy.stats.CreateSpatialComponentExplanatoryVariables(
in_features="states",
input_fields="POPULATION",
out_features=r"myOutputFeatureClass",
append_all_fields="ALL",
in_swm=None,
out_swm=None,
id_field=None
)
以下独立脚本演示了如何使用 CreateSpatialComponentExplanatoryVariables 函数。
# Create fields that describe the spatial patterns of two analysis fields.
import arcpy
# Set the current workspace.
arcpy.env.workspace = r"c:\data\project_data.gdb"
# Run the tool.
arcpy.stats.CreateSpatialComponentExplanatoryVariables(
in_features="myFeatureClass",
input_fields="myAnalysisField1;myAnalysis Field2",
out_features=r"myOutputFeatureClass",
append_all_fields="ALL",
in_swm=None,
out_swm=None,
id_field=None
)
# Print the messages.
print(arcpy.GetMessages())