普通最小二乘法 (OLS) (空间统计)

摘要

执行全局普通最小二乘 (OLS) 线性回归以生成预测,或根据因变量与一组解释变量的关系对因变量进行建模。

注:

此工具的功能包含在 ArcGIS Pro 2.3 新增的广义线性回归工具中。 广义线性回归工具支持其他模型。

了解有关“普通最小二乘法”回归工作原理的详细信息

插图

OLS 工具图示
显示普通最小二乘法回归:预测值与观测值的关系。

使用情况

  • 此工具的主要输出形式为报表文件,在工具执行期间,该输出以消息形式在地理处理窗格底部写入。 可将鼠标悬停在进度条上、单击弹出按钮或展开地理处理窗格中的消息部分来访问消息。 您还可以通过地理处理历史访问之前运行探索性回归的消息。

  • OLS 工具也可生成一个输出要素类以及含有系数信息和诊断的可选表。 所有这些都可以通过地理处理窗格底部的消息进行访问。 输出要素类会自动添加到内容列表中,并会对模型残差应用热/冷渲染方案。 OLS 回归的工作原理中提供了每个输出的完整说明。

  • 仅当数据和回归模型满足该方法固有要求的所有假定条件时,OLS 回归得出的结果才可信。 可查阅回归分析基础知识中的常见回归问题、后果和解决方案表来确保指定的模型是正确的。

  • 因变量和解释变量应该是包含各种值的数值型字段。 如果变量值均相等(例如,某字段的所有值均为 9.0),OLS 将无法求解。 线性回归方法(如 OLS)不适于预测二进制结果(例如,因变量的所有值不是 1 就是 0)。

  • Unique ID 字段用于将模型预测连接到各个要素。 因此,每个要素的 Unique ID 值都必须唯一,而且通常应该是一个与要素类一同保留的永久性字段。 如果没有 Unique ID 字段,则可以创建一个,方法是向要素类表添加一个整型字段,然后将此字段的值计算为与 FID/OID 字段的值相等。 您无法将 FID/OID 字段直接用于唯一 ID 参数。

  • 只要回归残差在统计上具有明显的空间自相关,便认为指定的 OLS 模型是错误。 因此,OLS 回归的结果不可靠。 请确保对回归残差运行空间自相关工具以便对此潜在问题进行评估。 统计上明显的回归残差空间自相关性几乎始终表示模型缺少一个或多个关键解释变量。

  • 目视检查回归残差中明显的预测过度和预测不足,从而挖掘出回归模型中是否可能发生变量丢失的线索。 这可能有助于通过对残差运行热点分析来查看预测过度和预测不足的空间聚类。

  • 如果指定错误是设法使用全局模型(OLS 属于一种全局模型)为不稳定变量建模产生的后果,则可使用地理加权回归改进预测并更好地了解解释变量中固有的不稳定性(局部变化)。

  • 当计算结果为无限大或未定义时,非 shapefile 的输出将为“空”;而 shapefile 的输出将为 -DBL_MAX(例如,-1.7976931348623158e+308)。

  • 模型汇总诊断会写入 OLS 汇总报表和可选的诊断输出表。 它们都包括“修正的 Akaike 信息准则 (AICc)”诊断、判决系数诊断、联合 F 统计量诊断、卡方统计量诊断、Koenker 的 Breusch-Pagan 统计量诊断以及 Jarque-Bera 统计量诊断。 诊断表还包括未校正的 AIC 和 Sigma 平方值。

  • 如果已经存在可选系数和诊断输出表,则当选中允许地理处理工具覆盖现有数据集选项时,将覆盖这些表。

  • 在配置了阿拉伯语或其他从右向左书写语言的 ArcGIS 语言包的计算机上,您可能会发现 PDF 输出报表文件中存在丢失文本或格式化问题。这篇文章会解决这些问题。

  • 地图图层可用于定义输入要素类。在使用带有选择内容的图层时,分析只会包括所选的要素。

  • 警告:

    在使用 shapefile 时,请注意 shapefile 无法存储空值。根据非 shapefile 输入创建 shapefile 的工具或其他过程可能会将空值存储(或解释)为零。某些情况下,空值则以极大的负值储存于 shapefile 中。这会产生意外的结果。有关详细信息,请参阅 shapefile 输出的地理处理注意事项

参数

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

包含用于分析的因变量和自变量的要素类。

Feature Layer
唯一 ID 字段

包含输入要素类中每个要素不同值的整型字段。

Field
输出要素类

将接收因变量的估计数和残差的输出要素类。

Feature Class
因变量

包含尝试建模的值的数值字段。

Field
解释变量

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

Field
系数输出表
(可选)

可选表的完整路径,该表将接收每个解释变量的模型系数、标准化系数、标准误差和概率。

Table
诊断输出表
(可选)

将接收模型摘要诊断的可选表的完整路径。

Table
输出报表文件
(可选)

工具将创建的可选 PDF 文件的路径。 此报告文件包括模型诊断、图表和注释,以帮助您解释 OLS 结果。

File

arcpy.stats.OrdinaryLeastSquares(Input_Feature_Class, Unique_ID_Field, Output_Feature_Class, Dependent_Variable, Explanatory_Variables, {Coefficient_Output_Table}, {Diagnostic_Output_Table}, {Output_Report_File})
名称说明数据类型
Input_Feature_Class

包含用于分析的因变量和自变量的要素类。

Feature Layer
Unique_ID_Field

包含输入要素类中每个要素不同值的整型字段。

Field
Output_Feature_Class

将接收因变量的估计数和残差的输出要素类。

Feature Class
Dependent_Variable

包含尝试建模的值的数值字段。

Field
Explanatory_Variables
[Explanatory_Variables,...]

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

Field
Coefficient_Output_Table
(可选)

可选表的完整路径,该表将接收每个解释变量的模型系数、标准化系数、标准误差和概率。

Table
Diagnostic_Output_Table
(可选)

将接收模型摘要诊断的可选表的完整路径。

Table
Output_Report_File
(可选)

工具将创建的可选 PDF 文件的路径。 此报告文件包括模型诊断、图表和注释,以帮助您解释 OLS 结果。

File

代码示例

OrdinaryLeastSquares 示例 1(Python 窗口)

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

import arcpy
arcpy.env.workspace = r"c:\data"
arcpy.stats.OrdinaryLeastSquares("USCounties.shp", "MYID", "olsResults.shp", 
                                 "GROWTH","LOGPCR69;SOUTH;LPCR_SOUTH;PopDen69",
                                 "olsCoefTab.dbf", "olsDiagTab.dbf")
OrdinaryLeastSquares 示例 2(独立脚本)

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

# Analyze the growth of regional per capita incomes in US
# Counties from 1969 -- 2002 using Ordinary Least Squares Regression

# Import system modules
import arcpy

# Set property to overwrite existing outputs
arcpy.env.overwriteOutput = True

# Local variables...
workspace = r"C:\Data"

try:
    # Set the current workspace (to avoid having to specify the full path to the feature classes each time)
    arcpy.env.workspace = workspace

    # Growth as a function of {log of starting income, dummy for South
    # counties, interaction term for South counties, population density}
    # Process: Ordinary Least Squares... 
    ols = arcpy.stats.OrdinaryLeastSquares("USCounties.shp", "MYID", 
                        "olsResults.shp", "GROWTH",
                        "LOGPCR69;SOUTH;LPCR_SOUTH;PopDen69",
                        "olsCoefTab.dbf",
                        "olsDiagTab.dbf")

    # Create Spatial Weights Matrix (Can be based on input or output FC)
    # Process: Generate Spatial Weights Matrix... 
    swm = arcpy.stats.GenerateSpatialWeightsMatrix("USCounties.shp", "MYID",
                        "euclidean6Neighs.swm",
                        "K_NEAREST_NEIGHBORS",
                        "#", "#", "#", 6) 
                        
    # Calculate Moran's Index of Spatial Autocorrelation for 
    # OLS Residuals using a SWM File.  
    # Process: Spatial Autocorrelation (Morans I)...      
    moransI = arcpy.stats.SpatialAutocorrelation("olsResults.shp", "Residual",
                        "NO_REPORT", "GET_SPATIAL_WEIGHTS_FROM_FILE", 
                        "EUCLIDEAN_DISTANCE", "NONE", "#", 
                        "euclidean6Neighs.swm")

except:
    # If an error occurred when running the tool, print out the error message.
    print(arcpy.GetMessages())