描述
执行“地理加权回归 (GWR)”,这是一种用于建模空间变化关系的线性回归的局部形式。
注:
ArcGIS Pro 2.3 中已添加此工具,以替换类似但现已弃用的地理加权回归 (GWR) 工具。此新工具包括对过去几年开发的方法的改进,并支持其他模型。
插图
使用方法
此工具将执行地理加权回归 (GWR),这是一种用于建模空间变化关系的回归的局部形式。通过使回归方程适合数据集中的每个要素,GWR 工具可为您要尝试了解或预测的变量或过程提供局部模型。地理加权回归 (GWR) 工具构建这些独立方程的方法是:将每个目标要素的邻域范围内的要素的因变量和解释变量进行合并。分析的每个邻域的形状和范围基于输入的邻域类型和邻域选择方法参数,但也存在一条限制:如果相邻要素的数目超过 1000,则仅将最相邻的 1000 个要素合并到各个局部方程中。
为了获得最佳结果,可将 GWR 应用于包含数百个要素的数据集。GWR 不适用于小型数据集。而且,此工具不能用于处理多点数据。
可以将输入要素参数与表示正在进行建模的现象的字段(因变量)以及表示解释变量的一个或多个字段结合使用。这些字段必须为数字且具有值范围。因变量或解释变量中包含缺失值的要素将从分析中排除;但是,在运行地理加权回归 (GWR) 工具之前,可以使用填充缺失值工具完成数据集。
- GWR 工具还将生成输出要素并添加报告本地诊断值的字段。输出要素和关联图表会自动添加至内容列表中,并会对模型残差应用热/冷渲染方案。有关每个输出和图表的完整说明,请参阅地理加权回归的工作原理。
注:
地理加权回归 (GWR) 工具会生成各种输出。在工具执行期间,GWR 模型的汇总以消息形式显示在地理处理窗格底部。可将鼠标悬停在进度条上、单击弹出按钮或展开地理处理窗格中的消息部分来访问消息。您还可以通过地理处理历史访问之前运行地理加权回归 (GWR) 工具的消息。
指定的模型类型取决于正在进行建模的数据。要获得准确的回归分析结果,必须使用正确的模型进行分析。
建议您使用投影数据。这一点在距离成为分析的一部分时尤其重要,因为将邻域类型参数设置为距离范围时,会对 GWR 使用投影数据。建议您使用投影坐标系(而非地理坐标系)对数据进行投影。
由地理加权回归 (GWR) 工具执行的某些计算会利用多个 CPU 以提高性能,并会自动使用多达 8 条线程/CPU 进行处理。
通常的做法是,使用 GWR 工具在本地探索数据之前,首先使用广义线性回归工具在全球范围内探索数据。
因变量和解释变量应该是包含各种值的数值型字段。这些值应在全球和本地范围内变化。请勿使用哑元解释变量来表示 GWR 模型中的不同空间组织(例如,向城镇中心外的人口普查区赋予值 1,而向其他区域赋予值 0)。由于 GWR 工具允许解释变量系数发生变化,这些空间组织解释变量并不必要,并且如果包含了这些变量,则会产生局部多重共线性问题。
在全局回归模型(如广义线性回归)中,当两个或更多变量具有多重共线性时(当存在两个或更多冗余变量或者这些变量共同提供同一信息时),结果并不可靠。GWR 工具为数据集中的各要素构建了一个局部回归方程。如果用于特定解释变量的值出现空间聚类,则可能存在局部多重共线性问题。输出要素类中的条件数字段 (COND) 可指明回归结果由于局部多重共线性而出现不稳定性的时期。通常,如果要素的条件数大于 30、等于“空”或者等于 -1.7976931348623158e+308(对于 shapefile 来说),则结果是不可靠的。需要对条件数进行比例调整,才能校正模型中的解释变量数。这样可以使用不同数量的解释变量直接比较模型之间的条件数。
如果在 GWR 模型中包含名目数据或分类数据,则需谨慎操作。在类别出现空间聚类的地方,存在局部多重共线性的风险。GWR 输出中包含的条件数指明了局部共线性何时会导致问题(条件数小于 0、大于 30 或设置为“空”)。存在局部多重共线性的结果是不稳定的。
要更好地了解解释变量系数当中的区域变化,请检查由 GWR 工具创建的可选栅格系数表面。如果指定,则将在系数栅格工作空间参数的其他选项下创建这些栅格表面。对于面数据,您可以对输出要素中的每个系数字段使用渐变色彩或由冷色到暖色的渲染以检查整个研究区域的更改。
通过提供预测位置(通常此要素类与输入要素相同)、匹配解释变量以及指定输出预测要素,可以使用 GWR 工具进行预测。如果输入要素中的要匹配的解释变量字段与预测位置中的字段字段匹配,则其将自动进行填充。否则,请指定正确字段。
如果回归模型缺少关键解释变量,则会导致回归模型的指定错误。如果回归残差的空间自相关具有统计学上的显著性,或者在一个或多个解释变量的系数当中发生了非期望的空间变化,则表明错误指定了您的模型。您应该尽一切努力(例如,通过 GLR 残差分析和 GWR 系数变化分析)来查找这些丢失的关键变量,以便在模型中包含这些变量。
时刻关注解释变量的不稳定性是否会出现问题。例如,假设您正将特殊植物种类的密度构建为若干变量(包括 ASPECT)的函数。如果发现在整个研究区域中 ASPECT 变量的系数发生了更改,则可能要查看是否有缺少关键解释变量的迹象(例如,可能存在大量竞争植被)。应该尽一切努力将所有关键解释变量包含到回归模型中。
当计算结果无限大或未定义时,非 shapefile 的结果将为“空”;而 shapefile 的结果将是 -DBL_MAX = -1.7976931348623158e+308。
警告:
在使用 shapefile 时,请注意 shapefile 无法存储空值。因此,用来根据非 shapefile 输入创建 shapefile 的工具或其他程序可能会将空值存储为零或某些非常小的负数 (-DBL_MAX = -1.7976931348623158e+308)。这会产生意外的结果。有关详细信息,请参阅 shapefile 输出的地理处理注意事项。
邻域选择方法参数存在以下三个选项: 如果选择黄金搜索,则工具将使用黄金分割搜索方法查找距离范围或相邻要素数参数的最佳值。手动间隔选项将测试指定距离之间相应增量中的邻域。无论哪种情况,使用的邻域大小是最小化 Akaike 信息准则 (AICc) 值的邻域大小。但是,局部多重共线性问题将会阻止两种方法解析最佳距离范围或相邻要素的数目。如果出现错误或遇到严重的模型设计问题,您可以尝试使用用户定义选项来指定特定距离或邻域计数。然后检查输出要素类中的条件数,以查看哪些要素与局部共线性问题相关联。
严重模型设计错误或用于表明局部方程未包含足够多相邻要素的错误,通常表示回归存在全局或局部多重共线性问题。要确定出现问题的位置,请使用广义线性回归运行全局模型,然后检查每个解释变量的 VIF 值。如果某些 VIF 值较大(例如,大于 7.5),则全局多重共线性会阻止 GWR 解决问题。但是,更有可能是局部多重共线性所导致的问题。请尝试为各解释变量创建一个专题地图。如果在地图上出现相同值的空间聚类,考虑将这些变量从模型中移除,或将这些变量与其他解释变量合并以便加大值的变化性。例如,如果要对房屋价格进行建模且具有卧室和浴室变量,则可以将其合并以加大值的变化性,或将其表示为浴室/卧室的建筑面积。在构造 GWR 模型时,要避免使用空间组织哑元变量、空间聚类名目或数值变量或者几乎不可能具有值的变量。
地理加权回归是与广义线性回归符合相同要求的线性模型。要确保正确指定您的 GWR 模型,请查看地理加权回归的工作原理中介绍的诊断。“回归分析基础知识”主题中的回归模型失效方式部分还包含用于确保您的模型准确的信息。
语法
arcpy.stats.GWR(in_features, dependent_variable, model_type, explanatory_variables, output_features, neighborhood_type, neighborhood_selection_method, {minimum_number_of_neighbors}, {maximum_number_of_neighbors}, {minimum_search_distance}, {maximum_search_distance}, {number_of_neighbors_increment}, {search_distance_increment}, {number_of_increments}, {number_of_neighbors}, {distance_band}, {prediction_locations}, {explanatory_variables_to_match}, {output_predicted_features}, {robust_prediction}, {local_weighting_scheme}, {coefficient_raster_workspace})
参数 | 说明 | 数据类型 |
in_features | 包含因变量和解释变量的要素类。 | Feature Layer |
dependent_variable | 包含将进行建模的观测值的数值字段。 | Field |
model_type | 用于指定将进行建模的数据类型。
| String |
explanatory_variables [explanatory_variables,...] | 表示回归模型中的解释变量或自变量的字段列表。 | Field |
output_features | 包含因变量的估计数和残差的新要素类。 | Feature Class |
neighborhood_type | 指定是将使用的邻域构造为固定距离,还是允许根据要素的密度在空间范围内变化。
| String |
neighborhood_selection_method | 指定将如何确定邻域大小。使用 GOLDEN_SEARCH 和 MANUAL_INTERVALS 选项选择的邻域基于最小化 AICc 值。
| String |
minimum_number_of_neighbors (可选) | 每个要素的最小相邻要素的数目将包含在其计算中。建议至少使用 30 个相邻要素。 | Long |
maximum_number_of_neighbors (可选) | 每个要素的最大相邻要素的数目(最多 1000 个)将包含在其计算中。 | Long |
minimum_search_distance (可选) | 最小邻域搜索距离。建议使用每个要素至少有 30 个相邻要素的距离。 | Linear Unit |
maximum_search_distance (可选) | 最大邻域搜索距离。如果距离导致要素具有超过 1000 个相邻要素,则该工具将在目标要素的计算中使用前 1000 个相邻要素。 | Linear Unit |
number_of_neighbors_increment (可选) | 将针对每个邻域测试增加手动间隔的相邻要素的数目。 | Long |
search_distance_increment (可选) | 将针对每个邻域测试增加手动间隔的距离。 | Linear Unit |
number_of_increments (可选) | 要从 minimum_number_of_neighbors 或 minimum_search_distance 参数开始测试的邻域大小的数量。 | Long |
number_of_neighbors (可选) | 将要考虑的各要素的最近相邻要素数目(最多 1000)。数量应该为介于 2 到 1000 之间的整数。 | Long |
distance_band (可选) | 邻域的空间范围。 | Linear Unit |
prediction_locations (可选) | 一种要素类,包含表示将计算评估值的位置的要素。此数据集中的每个要素都应包含指定的所有解释变量的值。将使用针对输入要素类数据进行校准的模型来评估这些要素的因变量。需要预测的是,这些要素位置应该位于与 in_features 相同的研究区域内,或接近该研究区域(位于 +15% 范围内)。 一种要素类,包含表示将计算评估值的位置的要素。此数据集中的每个要素都应包含指定的所有解释变量的值。将使用针对输入要素类数据进行校准的模型来评估这些要素的因变量。需要预测的是,这些要素位置应该位于与输入要素相同的研究区域内,或接近该研究区域(位于 +15% 范围内)。 | Feature Layer |
explanatory_variables_to_match [explanatory_variables_to_match,...] (可选) | prediction_locations 参数中与 in_features 参数中的相应解释变量匹配的解释变量。[["LandCover2000", "LandCover2010"], ["Income", "PerCapitaIncome"]] 为示例。 | Value Table |
output_predicted_features (可选) | 将接收每个 prediction_location 的因变量估计数的输出要素类。 | Feature Class |
robust_prediction (可选) | 用于指定将在预测计算中使用的要素。
| Boolean |
local_weighting_scheme (可选) | 用于指定将用于在模型中提供空间权重的核类型。核将定义每个要素与其邻域内其他要素相关的方式。
| String |
coefficient_raster_workspace (可选) | 将创建系数栅格的工作空间。如果提供了此工作空间,则会为截距及各解释变量创建栅格。 | Workspace |
派生输出
名称 | 说明 | 数据类型 |
coefficient_raster_layers | 输出系数栅格。 | 栅格图层 |
代码示例
以下 Python 窗口脚本演示了如何使用 GWR 工具。
import arcpy
arcpy.env.workspace = r"c:\data\project_data.gdb”
arcpy.stats.GWR("US_Counties", "Diabetes_Percent", "CONTINUOUS",
"Inactivity_Percent;Obesity_Percent", "out_features",
"NUMBER_OF_NEIGHBORS", "GOLDEN_SEARCH", None, None, None,
None, None, None, None, None, None, None, None, None, "ROBUST",
"BISQUARE")
以下独立 Python 脚本演示了如何使用 GWR 工具。
# Linear regression using a count model to predict the number of crimes.
# The depend variable (total number of crimes) is predicted using total
# population, the median age of housing, and average household income.
import arcpy
# Set the current workspace (to avoid having to specify the full path to
# the feature classes each time)
arcpy.env.workspace = r"c:\data\project_data.gdb"
arcpy.stats.GWR("crime_counts", "total crimes", "COUNT", "YRBLT;TOTPOP;AVGHINC",
"out_features", "NUMBER_OF_NEIGHBORS", "GOLDEN_SEARCH", 30, None, None, None,
None, None, None, None, None, "prediction_locations",
"YRBLT YRBLT;TOTPOP TOTPOP;AVGHINC AVGHINC", "predicted_counts",
"NON_ROBUST", "BISQUARE", r"c:\data\out_rasters")
许可信息
- Basic: 受限
- Standard: 受限
- Advanced: 是