标注 | 说明 | 数据类型 |
输入要素 | 包含因变量和自变量的图层。 | Table View |
因变量 | 包含要进行建模的观测值的数值字段。 | Field |
模型类型 | 用于指定将进行建模的数据类型。
| String |
解释变量 | 表示回归模型中的解释变量或自变量的字段列表。 | Field |
输出要素 | 将创建的包含因变量的估计数和残差的要素类的名称。 | Table; Feature Class |
输入预测要素 (可选) | 一个图层,包含表示将计算评估值的位置的要素。 此数据集中的每个要素都应包含指定的所有解释变量的值。 将使用针对输入图层数据进行校准的模型来评估这些要素的因变量。 | Table View |
匹配解释变量 (可选) | 将输入预测要素参数中的解释变量与输入要素参数中的相应解释变量进行匹配。 | Value Table |
映射因变量 (可选) | 表示用于映射到二元回归的 0(不存在)和 1(存在)的值的两个字符串。 默认情况下将使用 0 和 1。 例如,要预测一次具有“逮捕”和“未逮捕”字段值的逮捕,您需要为 False Value (0) 输入 No Arrest,并为 True Value (1) 输入 Arrest。 | Value Table |
输出预测要素 (可选) | 带有每个输入预测要素值的因变量估计数的输出要素类。 | Table; Feature Class |
输出系数表 (可选) | 包含模型拟合系数的输出表。 | Table |
摘要
执行广义线性回归 (GLR) 以生成预测,或对因变量与一组解释变量的关系进行建模。 此工具可用于拟合连续 (OLS)、二进制(逻辑)和计数(泊松)模型。
使用情况
可以在两种操作模式下使用此工具。 探索不同的解释变量和工具设置时,您可以评估不同模型的性能。 找到合适的模型后,您可以将模型拟合到新数据集。
可以将输入要素参数与表示正在进行建模的现象的字段(因变量参数值)以及表示解释变量的一个或多个字段结合使用。
广义线性回归工具还会生成输出要素和诊断信息。 输出要素图层会自动添加到地图中,并会对模型残差应用渲染方案。 下面提供了有关各输出的说明。
要获得准确的回归分析结果,必须使用正确的模型类型参数选项(连续、二进制和计数)进行分析。
模型汇总结果和诊断将写入消息窗口,并将在输出要素类下创建图表。 已报告的诊断将取决于模型类型参数值。 这三种模型类型选项如下所示:
- 如果因变量可接受温度或总销售额等大范围的值,则请使用连续(高斯)模型类型。 理想情况下,因变量将是正态分布的。
如果因变量可接受两个可能值中的一个(如成功和失败,或者存在和不存在),则请使用二进制(逻辑)模型类型。 包含因变量的字段必须是数字字段或文本字段。 如果该字段是数字字段,则应仅包含 1 和 0。 如果该字段是文本字段,则应仅包含两个不同的值。 如果您使用的是文本字段,则必须使用映射因变量参数,以将不同的文本值映射为一和零。 数据中不同文本值的 1 和 0 必须存在变化。
如果因变量是离散的,并且表示事件的出现次数(如犯罪数量),则请使用计数(泊松)模型类型。 如果因变量表示一个比率,并且该比率的分母是固定值(如每月销售额或每 10,000 人口中患癌症的人数),则也可以使用计数模型。 计数模型假设因变量的均值和方差相等,并且因变量的值不能为负数或包含小数。
因变量和解释变量参数值应为包含值范围的数值型字段。 如果变量值均相等(例如,如果某字段的所有值均为 9.0),则此工具将无法求解。
在预测或解释字段中具有一个或多个空值或空字符串值的要素将从输出中排除。 如有必要,您可以使用计算字段工具来修改值。
查看回归残差中明显的预测过度和预测不足,从而挖掘出回归模型中是否可能发生变量丢失的信息。
您可以使用已创建的回归模型对其他要素进行预测。 要创建这些预测,每个预测要素都应包含每个所提供的解释变量的对应值。 如果输入要素和预测位置参数中的字段名称不匹配,则将提供变量匹配参数。 当匹配解释变量时,输入要素和输入预测要素参数中的字段必须属于同一类型(例如,双精度字段必须与双精度字段匹配)。
您可以通过以下一个或多个操作来提升广义线性回归工具的处理速度:
- 设置分析的处理范围,以便仅分析感兴趣的数据。
- 不输出系数表。
- 将本地数据用于分析运行的位置。
此地理处理工具由 Spark 支持。 分析在您的台式计算机上使用多核并行完成。 有关运行分析的详细信息,请参阅 GeoAnalytics Desktop 工具的注意事项。
运行 GeoAnalytics Desktop 工具时,分析在您的台式计算机上完成。 为获得最佳性能,应在台式计算机上提供数据。 如果使用的是托管要素图层,则建议您使用 ArcGIS GeoAnalytics Server。 如果数据不是本地数据,则工具需要更长的运行时间。 要使用 ArcGIS GeoAnalytics Server 执行分析,请参阅 GeoAnalytics Tools。
GLR 的 GeoAnalytics 实施具有以下限制:
- 它是一种全局回归模型,不考虑数据的空间分布。
- 分析不适用于将 Moran's I 检验应用于残差。
- 支持将要素数据集(点、线、面和表)作为输入;栅格则不在支持之列。
- 您无法将值分类为多个类。
参数
arcpy.geoanalytics.GeneralizedLinearRegression(input_features, dependent_variable, model_type, explanatory_variables, output_features, {input_features_to_predict}, {explanatory_variables_to_match}, {dependent_variable_mapping}, {output_predicted_features}, {coefficient_table})
名称 | 说明 | 数据类型 |
input_features | 包含因变量和自变量的图层。 | Table View |
dependent_variable | 包含要进行建模的观测值的数值字段。 | Field |
model_type | 用于指定将进行建模的数据类型。
| String |
explanatory_variables [explanatory_variables,...] | 表示回归模型中的解释变量或自变量的字段列表。 | Field |
output_features | 将创建的包含因变量的估计数和残差的要素类的名称。 | Table; Feature Class |
input_features_to_predict (可选) | 一个图层,包含表示将计算评估值的位置的要素。 此数据集中的每个要素都应包含指定的所有解释变量的值。 将使用针对输入图层数据进行校准的模型来评估这些要素的因变量。 | Table View |
explanatory_variables_to_match [[Field from Prediction Locations, Field from Input Features],...] (可选) | 将 input_features_to_predict 参数中的解释变量与 input_features 参数中的相应解释变量进行匹配 - 例如 [["LandCover2000", "LandCover2010"], ["Income", "PerCapitaIncome"]]。 | Value Table |
dependent_variable_mapping [dependent_variable_mapping,...] (可选) | 表示用于映射到二元回归的 0(不存在)和 1(存在)的值的两个字符串。 默认情况下将使用 0 和 1。 例如,要预测一次具有“逮捕”和“未逮捕”字段值的逮捕,您需要为 False 值 (0) 输入 No Arrest,并为 True 值 (1) 输入 Arrest。 | Value Table |
output_predicted_features (可选) | 带有每个 input_features_to_predict 值的因变量估计数的输出要素类。 带有每个输入预测要素值的因变量估计数的输出要素类。 | Table; Feature Class |
coefficient_table (可选) | 包含模型拟合系数的输出表。 | Table |
代码示例
以下独立脚本演示了如何使用 GeneralizedLinearRegression 函数。
在此脚本中,您将创建一个模型并预测是否针对犯罪报告实施了逮捕。
# Description: Run GLR on crime data and predict if an arrest was made for a crime reporting.
#
# Requirements: Advanced License
# Import system modules
import arcpy
arcpy.env.workspace = "c:/data/city.gdb"
# Set local variables
trainingDataset = "old_crimes"
predictionDataset = "new_crimes"
outputTrainingName = "training"
outputPredictedName = "predicted"
# Run Generalized Linear Regression
arcpy.geoanalytics.GeneralizedLinearRegression(
trainingData, "ArrestMade", "BINARY", ["CRIME_TYPE", "WARD", "DAY_OF_MONTH"],
outputTrainingName, None, outputPredictedName,
[["CRIME_TYPE", "CRIME_TYPE"], ["WARD", "WARD"], ["DAY_OF_MONTH", "DAY_OF_MON"]],
[["Arrest", "NoArrest"]])