地理加权回归 (GWR) (GeoAnalytics)

摘要

执行“地理加权回归 (GWR)”,这是一种用于建模空间变化关系的线性回归的局部形式。

注:

该工具是添加到 ArcGIS Pro 2.3 中引入的地理加权回归 (GWR) 工具中的子功能。

要了解该工具的算法,请参阅“地理加权回归 (GWR)”工作原理。 本主题描述了空间统计工具箱工具;目前,并非所有功能均已包含在 GeoAnalytics Server 工具箱工具中。

使用情况

  • 此地理处理工具适用于 ArcGIS Enterprise 10.8.1 或更高版本。

  • 此工具将执行地理加权回归 (GWR),这是一种用于建模空间变化关系的回归的局部形式。 通过使回归方程适合数据集中的每个要素,GWR 工具可为您要尝试了解或预测的变量或过程提供局部模型。 地理加权回归 (GWR) 工具构建这些独立方程的方法是:将每个目标要素的邻域范围内的要素的因变量和解释变量进行合并。 所分析的每个邻域的形状和范围取决于邻域类型邻域选择方法参数的输入。

  • 为了获得最佳结果,可将 GWR 应用于包含数百个要素的数据集。 该工具不适用于小型数据集。 而且,此工具不能用于处理多点数据。

  • 此工具不支持包含仅日期或仅时间字段的输入。

  • 可以将输入要素参数与表示正在进行建模的现象的字段(因变量)以及表示解释变量参数值的一个或多个字段结合使用。 这些字段必须为数值型且具有值范围。 因变量或解释变量中包含缺失值的要素将从分析中排除。 您可以使用计算字段工具来修改值。 如果您的数据可用于 ArcGIS Pro,则使用填充缺失值工具在运行地理加权回归 (GWR) 工具之前将缺失值添加到数据集中。

  • 地理加权回归 (GWR) 工具还将生成输出要素并添加报告本地诊断值的字段。 输出要素参数值和关联图表会自动添加至内容列表中,并会对模型残差应用热/冷渲染方案。 地理加权回归 (GWR) 的工作原理中提供了每个输出的完整说明。

    注:

    地理加权回归 (GWR) 工具会生成各种输出。 在工具执行期间,GWR 模型的汇总以消息形式显示在地理处理窗格底部。 可将鼠标悬停在进度条上、单击弹出按钮或展开地理处理窗格中的消息部分来访问消息。 您还可以通过地理处理历史访问之前运行地理加权回归 (GWR) 工具的消息。

  • 您必须使用投影数据。

  • 通常的做法是,在使用地理加权回归 (GWR) 工具于本地探索数据之前,首先使用广义线性回归工具在全球范围内探索数据。

  • 因变量解释变量必须是包含各种值的数值型字段。 这些值应在全球和本地范围内变化。 请勿使用哑元解释变量来表示 GWR 模型中的不同空间组织(例如,向城镇中心外的人口普查区赋予值 1,而向其他区域赋予值 0)。 由于地理加权回归 (GWR) 工具允许解释变量系数发生变化,这些空间组织解释变量并不必要,并且如果包含了这些变量,则会产生局部多重共线性问题。

  • 在全局回归模型(如广义线性回归)中,当两个或更多变量具有多重共线性时(当存在两个或更多冗余变量或者这些变量共同提供同一信息时),结果并不可靠。 地理加权回归 (GWR) 工具为数据集中的各要素构建了一个局部回归方程。 如果用于特定解释变量的值出现空间聚类,则可能存在局部多重共线性问题。 输出要素类中的调整条件数字段 (COND_ADJ) 可指明回归结果由于局部多重共线性而出现不稳定性的时期。 通常,如果要素的调整条件数大于 30、等于“空”或者等于 -1.7976931348623158e+308(对于 shapefile 来说),则结果是不可靠的。

  • 如果在 GWR 模型中包含名目数据或分类数据,则需谨慎操作。 在类别出现空间聚类的地方,存在局部多重共线性的风险。 GWR 输出中包含的调整条件数指明了局部共线性何时会导致问题(条件数小于 0、大于 30 或设置为“空”)。 存在局部多重共线性的结果是不稳定的。

  • 如果回归模型缺少关键解释变量,则会导致回归模型的指定错误。 如果回归残差的空间自相关具有统计学上的显著性,或者在一个或多个解释变量的系数当中发生了非期望的空间变化,则表明错误指定了您的模型。 您应该尽一切努力(例如,通过 GLR 残差分析和 GWR 系数变化分析)来查找这些丢失的关键变量,以便将其包含在模型中。

  • 时刻关注解释变量的不稳定性是否会出现问题。 例如,假设您正将特殊植物种类的密度构建为若干变量(包括 ASPECT)的函数。 如果发现在整个研究区域中 ASPECT 变量的系数发生了更改,则可能要查看是否有缺少关键解释变量的迹象(例如,可能存在大量竞争植被)。 您应该尽一切努力在回归模型中包含所有关键的解释变量。

  • 当计算结果无限大或未定义时,非 shapefile 的结果将为“空”。

  • 严重模型设计错误或用于表明局部方程未包含足够多相邻要素的错误,通常表示回归存在全局或局部多重共线性问题。 要确定出现问题的位置,请使用广义线性回归运行全局模型,然后检查每个解释变量的 VIF 值。 如果某些 VIF 值较大(例如,大于 7.5),则全局多重共线性会阻止 GWR 解决问题。 但是,更有可能是局部多重共线性所导致的问题。 请尝试为各解释变量创建一个专题地图。 如果在地图上出现相同值的空间聚类,考虑将这些变量从模型中移除,或将这些变量与其他解释变量合并以便加大值的变化性。 例如,如果要对房屋价格进行建模且具有卧室和浴室变量,则可以将其合并以加大值的变化性,或将其表示为浴室/卧室的建筑面积。 在构造 GWR 模型时,要避免使用空间组织哑元变量、空间聚类名目或数值变量或者几乎不可能具有值的变量。

  • 地理加权回归是与广义线性回归符合相同要求的线性模型。 要确保正确指定您的 GWR 模型,请参阅地理加权回归 (GWR) 的工作原理中介绍的诊断。 并非所描述的所有诊断在 GeoAnalytics Desktop 工具箱中都可用。 回归分析基础知识主题中的回归模型失效方式部分还包含用于确保您的模型准确的信息。

  • 您可以执行以下下一个或多个操作,来提升地理加权回归 (GWR) 工具的性能:

    • 设置范围环境,以便仅分析感兴趣的数据。
    • 减少计算中的相邻要素数。
    • 邻域类型参数(Python 中的 neighborhood_type = "NUMBER OF NEIGHBORS")中使用相邻要素的数目选项,而非距离波段选项。
    • 请尽可能使用较少的解释变量。
    • 本地数据用于分析运行的位置。

  • 此地理处理工具由 ArcGIS GeoAnalytics Server 作为支持。 分析将在 GeoAnalytics Server 上完成,且结果将存储在 ArcGIS Enterprise 的内容中。

  • GeoAnalytics Server 工具运行时,GeoAnalytics Server 上的分析已完成。 要获得最佳性能,通过 ArcGIS Enterprise 门户上托管的要素图层或通过大数据文件共享,可以将数据用于 GeoAnalytics Server。 在分析开始之前,非 GeoAnalytics Server 本地数据将被转移到您的 GeoAnalytics Server。 这意味着运行工具需要更长时间,并且在某些情况下,从 ArcGIS ProGeoAnalytics Server 移动数据可能会失败。 失败的阈值取决于网络速度,以及数据的大小和复杂性。 建议您始终共享数据或创建大数据文件共享。

    了解有关将数据共享至您的门户的详细信息。

    了解有关通过 Server Manager 创建大数据文件共享的详细信息

  • 类似的分析也可使用“空间统计”工具箱中的地理加权回归工具来完成。 要完成以下工作流,请使用“空间统计”工具箱中的工具:

    • 使用 ArcGIS Pro 计算机的本地图层(例如文件地理数据库中的要素类)。
    • 预测至另一图层或创建栅格系数图层。
    • 为二进制(逻辑)变量或计数(泊松值)变量建模。
    • 使用黄金搜索或手动间隔来定义邻域搜索。

参数

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

包含因变量和解释变量的点要素类。

Feature Set
因变量

包含将进行建模的观测值的数值字段。

Field
模型类型

用于指定将进行建模的数据类型。

  • 连续(高斯)因变量值是连续的。 将使用高斯模型,并且工具将执行普通最小二乘法回归。
String
解释变量

表示回归模型中的解释变量或自变量的字段列表。

Field
输出要素

输出要素服务的名称。

String
邻域类型

指定是将使用的邻域构造为固定距离,还是允许根据要素的密度在空间范围内变化。

  • 相邻要素的数目邻域大小是每个要素的计算中包括的指定相邻要素数目的函数。 在要素密集的位置,邻域的空间范围较小;在要素稀疏的位置,邻域的空间范围较大。
  • 距离范围邻域大小是每个要素的恒定或固定距离。
String
邻域选择方法

指定将如何确定邻域大小。

  • 用户定义邻域大小将由相邻要素的数目距离范围参数确定。
String
相邻要素的数目
(可选)

将要考虑的各要素的最近相邻要素数目(最多 1000)。 该数值必须是介于 2 到 1000 之间的整数。

Long
距离范围
(可选)

邻域的空间范围。

Linear Unit
局部权重方案
(可选)

用于指定将用于在模型中提供空间权重的核类型。 核将定义每个要素与其邻域内其他要素相关的方式。

  • 双平方权重 0 将会分配给指定邻域外的任何要素。 这是默认设置。
  • 高斯函数所有要素都将获得权重,但是距离目标要素越远,则权重将以指数方式变小。
String
数据存储
(可选)

指定将用于保存输出的 ArcGIS Data Store。 默认设置为时空大数据存储。 在时空大数据存储中存储的所有结果都将存储在 WGS84 中。 在关系数据存储中存储的结果都将保持各自的坐标系。

  • 时空大数据存储输出将存储在时空大数据存储中。 这是默认设置。
  • 关系数据存储输出将存储在关系数据存储中。
String

派生输出

标注说明数据类型
输出

输出要素。

Record Set

arcpy.geoanalytics.GWR(in_features, dependent_variable, model_type, explanatory_variables, output_features, neighborhood_type, neighborhood_selection_method, {number_of_neighbors}, {distance_band}, {local_weighting_scheme}, {data_store})
名称说明数据类型
in_features

包含因变量和解释变量的点要素类。

Feature Set
dependent_variable

包含将进行建模的观测值的数值字段。

Field
model_type

用于指定将进行建模的数据类型。

  • CONTINUOUSdependent_variable 值是连续的。 将使用高斯模型,并且工具将执行普通最小二乘法回归。
String
explanatory_variables
[explanatory_variables,...]

表示回归模型中的解释变量或自变量的字段列表。

Field
output_features

输出要素服务的名称。

String
neighborhood_type

指定是将使用的邻域构造为固定距离,还是允许根据要素的密度在空间范围内变化。

  • NUMBER_OF_NEIGHBORS邻域大小是每个要素的计算中包括的指定相邻要素数目的函数。 在要素密集的位置,邻域的空间范围较小;在要素稀疏的位置,邻域的空间范围较大。
  • DISTANCE_BAND邻域大小是每个要素的恒定或固定距离。
String
neighborhood_selection_method

指定将如何确定邻域大小。

  • USER_DEFINED邻域大小将由 number_of_neighborsdistance_band 参数确定。
String
number_of_neighbors
(可选)

将要考虑的各要素的最近相邻要素数目(最多 1000)。 该数值必须是介于 2 到 1000 之间的整数。

Long
distance_band
(可选)

邻域的空间范围。

Linear Unit
local_weighting_scheme
(可选)

用于指定将用于在模型中提供空间权重的核类型。 核将定义每个要素与其邻域内其他要素相关的方式。

  • BISQUARE权重 0 将会分配给指定邻域外的任何要素。 这是默认设置。
  • GAUSSIAN所有要素都将获得权重,但是距离目标要素越远,则权重将以指数方式变小。
String
data_store
(可选)

指定将用于保存输出的 ArcGIS Data Store。 默认为 SPATIOTEMPORAL_DATA_STORE。 在时空大数据存储中存储的所有结果都将存储在 WGS84 中。 在关系数据存储中存储的结果都将保持各自的坐标系。

  • SPATIOTEMPORAL_DATA_STORE输出将存储在时空大数据存储中。 这是默认设置。
  • RELATIONAL_DATA_STORE输出将存储在关系数据存储中。
String

派生输出

名称说明数据类型
output

输出要素。

Record Set

代码示例

GeographicallyWeightedRegression 示例(独立脚本)

下面的 Python 窗口脚本演示了如何使用 GWR 工具。

在此脚本中您将创建一个模型,以确定哪些环境变量会对森林火灾频发产生影响。


# Name: GWR.py
# Description: Run GWR on forest fire occurrence report data to understand 
#              which variables explain reoccurring forest fires
#
# Requirements: ArcGIS GeoAnalytics Server

# Import system modules
import arcpy

# Set local variables
inputFeatures = "https://analysis.org.com/server/rest/services/DataStoreCatalogs/bigDataFileShares_EcoData/BigDataCatalogServer/fireLocations"
outputLayerName = "GWR_ForestFireFrequency"
dependentVariable = "Fire_Frequency"
explanatoryVariables = "GroundCover, TreeCover, SoilMoisture, slope"
distanceValue = "5 Miles"

# Execute GWR
arcpy.geoanalytics.gwr(inputFeatures, dependentVariable, 
                                                    "CONTINUOUS", explanatoryVariables, 
                                                    outputLayerName, "DISTANCE_BAND", 
                                                    "USER_DEFINED", None, distanceValue, 
                                                    "GAUSSIAN", "SPATIOTEMPORAL_DATA_STORE"))

环境

特殊情况

输出坐标系

将用于分析的坐标系。 除非由该参数进行指定,否则将基于输入坐标系完成分析。 对于 GeoAnalytics Tools,最终结果将存储于 WGS84 中的时空数据存储之内。

许可信息

  • Basic: 需要 ArcGIS GeoAnalytics Server
  • Standard: 需要 ArcGIS GeoAnalytics Server
  • Advanced: 需要 ArcGIS GeoAnalytics Server

相关主题