空间自回归 (空间统计)

摘要

估计点或面要素类的全局空间回归模型。

使用空间数据时,传统线性回归模型的假设通常会被违反。 当数据集中存在空间自相关时,系数估计值可能会有偏差,导致推论过于自信。 本工具旨在构建一个在存在空间依赖性和异方差性的情况下依然稳健的回归模型,并能用于衡量空间溢出效应。 该工具借助拉格朗日乘数 (LM) 诊断(也称为 Rao 得分)来确定最适合数据的模型。 基于 LM 诊断的结果,可以选择估计普通最小二乘法 (OLS) 模型、空间滞后模型 (SLM)、空间误差模型 (SEM) 或空间自回归组合模型 (SAC)。

深入了解空间自回归的工作原理

插图

空间自回归工具图示

使用情况

  • 该工具仅接受点和面类型的输入要素。

  • 因变量必须为连续变量(非二元变量或类别变量)。

  • 解释变量必须为连续变量(非二元变量或类别变量)。 切勿使用二元变量(仅包含 0 和 1 两种取值),因为它们可能违反模型假设,导致错误发生。

  • 工具的输出结果包含残差的莫兰散点图,可用于评估模型残差中是否存在空间自相关。

  • 所使用的空间权重矩阵的连通性不应超过 30%。 如果达到这一阈值,工具会报错,避免产生存在偏差的估计结果。

  • 在使用 K 近邻方法进行局部加权时,如果未指定带宽,系统将自动计算自适应带宽。

  • 可以通过拟合 SLM 模型,并包含每个解释变量及其空间滞后项,来估计空间杜宾模型。 可以使用邻域汇总统计工具计算空间滞后项。

  • 模型估计采用以下与异方差性和正态性相关的特定方法:

    • SLM 模型采用空间二阶段最小二乘回归 (S2SLS) 方法。
    • SEM 模型采用广义矩方法 (GMM)。
    • SAC 模型采用广义 S2SLS (GS2SLS) 方法。

参数

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

包含因变量和解释变量的输入要素。

Feature Layer
因变量

回归模型中需要预测的数值字段。

Field
解释变量

用于预测回归模型中因变量的字段列表。

Field
输出要素

包含因变量预测值和残差的输出要素数据集。

Feature Class
模型类型

用于进行估计的模型类型。 默认情况下,工具将使用 LM 诊断测试来自动选择最适合输入数据的模型。

  • 自动检测使用 LM 诊断测试来确定应估计 OLS、SLM、SEM 还是 SAC 模型。 这是默认设置。
  • 空间误差模型 (SEM)强制估计 SEM 模型,无论 LM 诊断结果如何。
  • 空间滞后模型 (SLM)强制估计 SLM 模型,无论 LM 诊断结果如何。
  • 空间自回归组合 (SAC)强制估计 SAC 模型,无论 LM 诊断结果如何。
String
邻域类型
(可选)

指定如何为每个输入要素选择相邻要素。 为了识别局部空间模式,必须为每个输入要素确定其相邻要素。

  • 固定距离范围将指定距离范围内的要素视为相邻要素。
  • K 最近邻最近的 k 个要素将被视为相邻要素。 相邻要素数由相邻要素数参数指定。
  • 仅邻接边共享边的面要素将作为相邻要素包含在内。
  • 邻接边拐角共享边或拐角的面要素将作为相邻要素包含在内。 这是面要素的默认选项。
  • Delaunay 三角测量其 Delaunay 三角测量共享边或角的要素将作为相邻要素包含在内。 这是点要素的默认选项。
  • 通过文件获取空间权重将由指定空间权重文件定义相邻要素和权重。 使用权重矩阵文件参数指定该文件。
String
距离范围
(可选)

此距离内的要素都将作为相邻要素包含在内。 如果未提供任何值,则将在处理过程中估算一个值,并将其作为地理处理消息包含在内。

Linear Unit
相邻要素数
(可选)

要包含的相邻要素的数量。 该数值不包含焦点要素。 默认值为 8。

Long
权重矩阵文件
(可选)

定义要素间空间关系的空间权重矩阵文件的路径和文件名。

File
局部权重方案
(可选)

指定将应用于相邻要素的加权方案。 除非提供空间权重矩阵文件,否则始终对权重进行行标准化处理。

  • 未加权为每个相邻要素分配权重 1。这是默认设置。
  • 双平方将使用双平方核(四次式)对相邻要素进行加权。
  • 高斯使用高斯(正态分布)核函数对相邻要素进行加权。
String
核带宽
(可选)

加权核的带宽。 如果未提供值,则将采用自适应核函数。 自适应核函数使用相邻要素到焦点要素的最大距离作为带宽。

Linear Unit

arcpy.stats.SAR(in_features, dependent_variable, explanatory_variables, out_features, model_type, {neighborhood_type}, {distance_band}, {number_of_neighbors}, {weights_matrix_file}, {local_weighting_scheme}, {kernel_bandwidth})
名称说明数据类型
in_features

包含因变量和解释变量的输入要素。

Feature Layer
dependent_variable

回归模型中需要预测的数值字段。

Field
explanatory_variables
[explanatory_variables,...]

用于预测回归模型中因变量的字段列表。

Field
out_features

包含因变量预测值和残差的输出要素数据集。

Feature Class
model_type

用于进行估计的模型类型。 默认情况下,工具将使用 LM 诊断测试来自动选择最适合输入数据的模型。

  • AUTO使用 LM 诊断测试来确定应估计 OLS、SLM、SEM 还是 SAC 模型。 这是默认设置。
  • ERROR强制估计 SEM 模型,无论 LM 诊断结果如何。
  • LAG强制估计 SLM 模型,无论 LM 诊断结果如何。
  • COMBINED强制估计 SAC 模型,无论 LM 诊断结果如何。
String
neighborhood_type
(可选)

指定如何为每个输入要素选择相邻要素。 为了识别局部空间模式,必须为每个输入要素确定其相邻要素。

  • DISTANCE_BAND将指定距离范围内的要素视为相邻要素。
  • K_NEAREST_NEIGHBORS最近的 k 个要素将被视为相邻要素。 相邻要素数由 number_of_neighbors 参数指定。
  • CONTIGUITY_EDGES_ONLY共享边的面要素将作为相邻要素包含在内。
  • CONTIGUITY_EDGES_CORNERS共享边或拐角的面要素将作为相邻要素包含在内。 这是面要素的默认选项。
  • DELAUNAY_TRIANGULATION其 Delaunay 三角测量共享边或角的要素将作为相邻要素包含在内。 这是点要素的默认选项。
  • GET_SPATIAL_WEIGHTS_FROM_FILE将由指定空间权重文件定义相邻要素和权重。 使用 weights_matrix_file 参数指定该文件。
String
distance_band
(可选)

此距离内的要素都将作为相邻要素包含在内。 如果未提供任何值,则将在处理过程中估算一个值,并将其作为地理处理消息包含在内。

Linear Unit
number_of_neighbors
(可选)

要包含的相邻要素的数量。 该数值不包含焦点要素。 默认值为 8。

Long
weights_matrix_file
(可选)

定义要素间空间关系的空间权重矩阵文件的路径和文件名。

File
local_weighting_scheme
(可选)

指定将应用于相邻要素的加权方案。 除非提供空间权重矩阵文件,否则始终对权重进行行标准化处理。

  • UNWEIGHTED为每个相邻要素分配权重 1。这是默认设置。
  • BISQUARE将使用双平方核(四次式)对相邻要素进行加权。
  • GAUSSIAN使用高斯(正态分布)核函数对相邻要素进行加权。
String
kernel_bandwidth
(可选)

加权核的带宽。 如果未提供值,则将采用自适应核函数。 自适应核函数使用相邻要素到焦点要素的最大距离作为带宽。

Linear Unit

代码示例

SAR 示例 1(Python 窗口)

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

# Fit SAR model and auto-detect the regression model.
arcpy.stats.SAR(
    in_features=r"C:\data\data.gdb\house_price",
    dependent_variable="price",
    explanatory_variables=["crime", "income", "school_rate"],
    out_features=r"C:\data\data.gdb\house_price_SAR",
    model_type="AUTO",
    neighborhood_type="DELAUNAY_TRIANGULATION",
    distance_band=None,
    number_of_neighbors=None,
    weights_matrix_file=None,
    local_weighting_scheme="UNWEIGHTED",
    kernel_bandwidth=None
)
SAR 示例 2(独立脚本)

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

# Fit SAR model using SLM.  

# Import modules
import arcpy

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


# Run SAR tool with Spatial Lag model
arcpy.stats.SAR(
    in_features=r"health_factors_CA",
    dependent_variable="Diabetes",
    explanatory_variables=["Drink", "Inactivity"],
    out_features=r"Diabetes_SAR",
    model_type="LAG",
    neighborhood_type="CONTIGUITY_EDGES_CORNERS",
    distance_band=None,
    number_of_neighbors=None,
    weights_matrix_file=None,
    local_weighting_scheme="UNWEIGHTED",
    kernel_bandwidth=None
)

相关主题