曲线拟合预测 (时空模式挖掘)

摘要

用于通过曲线拟合来预测时空立方体每个位置的值。

此工具将参数曲线拟合到输入时空立方体参数中的各个位置,并通过将该曲线外推到未来时间步长来预测时间序列。曲线可以是线型、抛物线型、S 型(龚珀兹)或指数型。可以在时空立方体的每个位置使用相同的曲线类型,或者允许该工具设置最适合每个位置的曲线类型。

了解有关“曲线拟合预测”工作原理的详细信息

插图

曲线类型
显示了四种曲线类型。

使用情况

  • 此工具接受通过聚合点创建时空立方体通过已定义要素创建时空立方体以及通过多维栅格图层创建时空立方体工具创建的 netCDF 文件

  • 时间序列预测工具集中的其他预测工具相比,此工具最简单易懂,并且最适用于遵循可预测趋势且未显示明显季节性的时间序列。如果您的数据遵循复杂趋势或显示明显的季节性周期,请使用其他预测工具。

  • 可以使用按位置评估预测工具来比较和合并多个预测的时空立方体。由此即可使用不同的预测工具和参数来创建多个预测立方体,并且该工具将使用“预测均方根误差 (RMSE)”或“验证 RMSE”值来识别每个位置的最佳预测。

  • 对于输入时空立方体参数中的每个位置,该工具会构建两个用于不同目的的模型。

    • 预测模型 - 通过将曲线拟合到时间序列的值并将曲线外推到未来时间步长,来预测时空立方体的值。预测模型与时空立方体的值的拟合度将通过“预测 RMSE”值进行度量。
    • 验证模型 - 此模型用于验证预测模型并测试其预测值的准确性。如果为为进行验证排除的时间步长数参数指定了大于 0 的数字,则此模型将拟合到包含的时间步长并用于预测已排除的时间步长值。这将允许您查看模型预测值的准确程度。预测值与排除值的拟合度将通过“验证 RMSE”值进行度量。

    了解有关预测模型、验证模型和 RMSE 统计数据的详细信息

  • 曲线类型参数中的自动检测选项将拟合各个位置的全部四种曲线类型,并确定具有最小“验证 RMSE”值的类型。如果未为进行验证排除时间步长,则将使用“预测 RMSE”值最小的曲线。

  • 输出要素参数值将添加到基于最终预测时间步进行渲染的内容窗格中。

  • 该工具会创建地理处理消息和弹出图表,以帮助您了解和可视化预测结果。这些消息将包含有关时空立方体结构以及 RMSE 值的汇总统计数据的信息。使用浏览导航工具单击一个要素将在弹出窗格中显示一个折线图,图中会显示该时空立方体的值、预测所使用的曲线和该位置的预测值。

  • 可使用异常值选项参数检测每个位置的时间序列值中具有统计意义的异常值。

    了解有关检测时间序列异常值的详细信息

  • 确定针对验证排除的时间步长数是一项重要选择。排除的时间步长越多,则用于评估验证模型的时间步长越少。但是,如果排除的时间步长过少,则将使用少量数据来评估“验证 RMSE”,并且可能会产生误导。建议您排除尽可能多的时间步长,同时保持足够的时间步来估计验证模型。如果时空立方体具有足够的时间步长来执行此操作,则建议您至少保留与预测时间步长相同数量的验证时间步长。

参数

标注说明数据类型
输入时空立方体

netCDF 立方体包含用于预测未来时间步的变量。此文件必须具有 .nc 文件扩展名,并且必须使用通过聚合点创建时空立方体通过已定义位置创建时空立方体通过多维栅格图层创建时空立方体工具进行创建。

File
分析变量

netCDF 文件中的数值变量,用于预测未来时间步长。

String
输出要素

时空立方体中所有位置的输出要素类,其中的预测值将存储为字段。该图层显示对最后的时间步长的预测,并包含弹出图表,其中显示每个位置的时间序列和预测。

Feature Class
输出时空立方体
(可选)

新的时空立方体(.nc 文件),其中包含输入时空立方体的值,并追加了预测时间步长。可视化 3D 时空立方体工具可用于同时查看所有观测值和预测值。

File
预测时间步长数
(可选)

正整数,用于指定预测时间步长数。此值不能大于输入时空立方体中的时间步长数的百分之五十。默认值为一个时间步长。

Long
曲线类型
(可选)

指定曲线类型以用于预测输入时空立方体的值。

  • 线性时间序列随时间呈线性增加或减少。
  • 抛物线时间序列随时间呈抛物线或二次曲线变化。
  • 指数时间序列随时间呈指数性增加或减少。
  • S 型 (Gompertz)时间序列随时间呈 S 型增加或减少。
  • 自动检测在各个位置运行所有四种曲线类型,随后模型将提供最小“验证 RMSE”值。如果未为进行验证排除任何时间片,则使用“预测 RMSE”值最小的模型。这是默认设置。
String
为进行验证排除的时间步长数
(可选)

为进行验证,在每个时间序列末尾排除的时间步长数。默认值为输入时间步长的 10%(向下舍入),且该值不能大于时间步长的 25%。要不排除任何时间步长,请提供值 0。

Long
异常值选项
(可选)

指定是否将识别具有统计意义的时间序列异常值。

  • 不会识别异常值。这是默认设置。
  • 识别异常值将使用广义 ESD 测试来识别异常值。
String
置信度级别
(可选)

指定时间序列异常值测试的置信度。

  • 90%测试置信度为 90%。这是默认设置。
  • 95%测试置信度为 95%。
  • 99%测试置信度为 99%。
String
最大异常值数

每个位置可以声明为异常值的最大时间步数。默认值对应于输入时空立方体的时间步数的 5%(向下舍入)(将始终使用至少为 1 的值)。该值不能超过时间步数的 20%。

Long

arcpy.stpm.CurveFitForecast(in_cube, analysis_variable, output_features, {output_cube}, {number_of_time_steps_to_forecast}, {curve_type}, {number_for_validation}, {outlier_option}, {level_of_confidence}, maximum_number_of_outliers)
名称说明数据类型
in_cube

netCDF 立方体包含用于预测未来时间步的变量。此文件必须具有 .nc 文件扩展名,并且必须使用通过聚合点创建时空立方体通过已定义位置创建时空立方体通过多维栅格图层创建时空立方体工具进行创建。

File
analysis_variable

netCDF 文件中的数值变量,用于预测未来时间步长。

String
output_features

时空立方体中所有位置的输出要素类,其中的预测值将存储为字段。该图层显示对最后的时间步长的预测,并包含弹出图表,其中显示每个位置的时间序列和预测。

Feature Class
output_cube
(可选)

新的时空立方体(.nc 文件),其中包含输入时空立方体的值,并追加了预测时间步长。可视化 3D 时空立方体工具可用于同时查看所有观测值和预测值。

File
number_of_time_steps_to_forecast
(可选)

正整数,用于指定预测时间步长数。此值不能大于输入时空立方体中的时间步长数的百分之五十。默认值为一个时间步长。

Long
curve_type
(可选)

指定曲线类型以用于预测输入时空立方体的值。

  • LINEAR时间序列随时间呈线性增加或减少。
  • PARABOLIC时间序列随时间呈抛物线或二次曲线变化。
  • EXPONENTIAL时间序列随时间呈指数性增加或减少。
  • GOMPERTZ时间序列随时间呈 S 型增加或减少。
  • AUTO_DETECT在各个位置运行所有四种曲线类型,随后模型将提供最小“验证 RMSE”值。如果未为进行验证排除任何时间片,则使用“预测 RMSE”值最小的模型。这是默认设置。
String
number_for_validation
(可选)

为进行验证,在每个时间序列末尾排除的时间步长数。默认值为输入时间步长的 10%(向下舍入),且该值不能大于时间步长的 25%。要不排除任何时间步长,请提供值 0。

Long
outlier_option
(可选)

指定是否将识别具有统计意义的时间序列异常值。

  • NONE不会识别异常值。这是默认设置。
  • IDENTIFY将使用广义 ESD 测试来识别异常值。
String
level_of_confidence
(可选)

指定时间序列异常值测试的置信度。

  • 90%测试置信度为 90%。这是默认设置。
  • 95%测试置信度为 95%。
  • 99%测试置信度为 99%。
String
maximum_number_of_outliers

每个位置可以声明为异常值的最大时间步数。默认值对应于输入时空立方体的时间步数的 5%(向下舍入)(将始终使用至少为 1 的值)。该值不能超过时间步数的 20%。

Long

代码示例

CurveFitForecast 示例 1(Python 窗口)

以下 Python 脚本演示了如何使用 CurveFitForecast 工具。

import arcpy
arcpy.env.workspace = "C:/Analysis"
# Forecast four time steps using a linear curve.
arcpy.stpm.CurveFitForecast("Population.nc", "Pop_NONE_ZEROS", 
                            "Analysis.gdb/Forecasts", 
                            "outForecastCube.nc", 4, 
                            "LINEAR", 5)
CurveFitForecast 示例 2(独立脚本)

以下 Python 脚本演示了如何使用 CurveFitForecast 工具以预测人口:

# Forecast population levels using curve fitting.
# Import system modules.
import arcpy
# Set property to overwrite existing output.
arcpy.env.overwriteOutput = True
# Set workspace.
workspace = r"C:\Analysis"
arcpy.env.workspace = workspace
# Forecast three time steps using auto-detect.
arcpy.stpm.CurveFitForecast("Population.nc", "Pop_NONE_ZEROS", 
                            "Analysis.gdb/Forecasts", "outForecastCube.nc"
                            3, "AUTO_DETECT", 5, "IDENTIFY", "90%", 4)
# Create a feature class visualizing the forecasts.
# Output can only be viewed in a Scene view.
arcpy.stpm.VisualizeSpaceTimeCube3D("outForecastCube.nc", "Pop_NONE_ZEROS", 
                                    "VALUE", "Analysis.gdb/ForecastsFC")