时间序列平滑 (空间统计)

摘要

使用居中、前移和后移平均值以及基于局部线性回归的自适应方法对一个或多个时间序列的数字变量进行平滑处理。 对短期波动进行平滑处理后,较长期的趋势或周期通常会变得明显。

了解有关时间序列平滑工作原理的详细信息

插图

时间序列平滑工具图示
平滑时间序列的值。

使用情况

  • 您可以使用将字段追加到输入数据参数将平滑值字段追加到输入要素或表。 如果您将字段追加到输入,则会忽略输出坐标系环境。 如果输入要素或表具有连接字段,则无法追加到输入数据且必须创建一个新输出。

  • 时间字段参数指定每个输入记录的时间。 在同一时间序列中,同一时间不能具有多个值。

  • 分析字段参数指定要进行平滑处理的值。 当对分析字段的值进行平滑处理时,仅使用时间窗内的非空值。 如果在一个时间窗内,分析字段的所有值均为空,则平滑值将为空。

  • 可以使用分组方法参数指定多个时间序列。 您可以将同一位置的所有值分组到同一时间序列中、使用 ID 字段分组值或将所有值(不考虑位置)分组到同一时间序列中。 如果对值进行分组,需确保所有组均有多个不同时间的记录,以便可以在每个组内执行平滑处理。

  • 由于存在闰年且各月份天数不同,如果时间窗参数的单位是年或月,则时间值必须是整数。 例如,根据月份的不同,1.5 个月会产生不同的时间窗。 对于前移和后移的平均值,时间窗可以是任何正整数。 对于居中移动的平均值和自适应带宽的局部线性回归,时间窗必须是正的偶数整数,这样,当该整数被分到记录的每一侧时,每侧的的结果都是正整数。

  • 选中启用时间序列弹出窗口参数后,该工具将为每个时间序列创建一个图表,并将该图表添加至每个时间序列的第一个要素记录。 在 2D 地图上,选择要素可以在弹出窗口中查看图表。 在 3D 场景中,选择时间序列中的第一个要素可以在弹出窗口中查看图表。

    注:

    如果使用分组方法,则可能不会在地图中首先绘制每个时间序列中的第一个要素。 要访问这些要素的弹出窗口,请右键单击属性表中的记录。

参数

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

包含时间序列数据和要平滑的字段的要素或表。

Feature Layer; Table View
时间字段

包含每条记录的时间的字段。

Field
分析字段

包含要平滑的值的字段。

Field
分组方法
(可选)

指定用于将记录分组至不同时间序列的方法。 每个时间序列都会单独进行平滑处理。

  • 按位置同一位置的要素将被分组到同一时间序列。 这是默认设置。
  • 按 ID 字段ID 字段值相同的记录将被分组到同一时间序列。
  • 所有记录都将位于相同的时间序列中。
String
平滑方法
(可选)

指定将要使用的平滑方法。

  • 后移平均值平滑值是在时间窗范围内记录及其之前的值的平均值。 这是默认设置。
  • 居中移动平均值平滑值是记录及其之前和之后的值的平均值。 时间窗的一半用于记录的时间之前,另一半用于之后。
  • 前移平均值平滑值是在时间窗范围内记录及其之后的值的平均值。
  • 自适应带宽局部线性回归平滑值是以记录为中心的局部线性回归的结果。 时间窗的大小将针对每条记录进行优化。
String
时间窗
(可选)

时间窗的长度。 可以以秒、分钟、小时、天、周、月或年为单位提供该值。 对于后移、前移和居中移动平均值,必须提供值和单位。 对于自适应带宽局部线性回归,值可以留空,将会为每个值单独估计时间窗。 处于时间窗边界上的值将包含在时间窗内。 例如,如果您具有每日数据并使用时间窗为四天的后移平均值,则在平滑记录时,时间窗内将包含五个值:记录的值和前四天的值。

Time Unit
将字段追加到输入数据
(可选)

指定是将输出字段追加到输入数据集还是将其另存为新的输出表或要素类。 如果您将字段追加到输入,则会忽略输出坐标系环境。

  • 选中 - 输出字段将被追加到输入要素。 此选项会修改输入数据。
  • 未选中 - 输出字段将不会追加到输入。 将创建包含输出字段的输出表或要素类。 这是默认设置。

Boolean
输出要素
(可选)

包含平滑值和时间窗的字段以及相邻要素数目的输出要素。

Feature Class; Table
ID 字段
(可选)

包含每个时间序列的唯一 ID 的整数或文本字段。 所有此字段值相同的记录都是同一时间序列的一部分。

Field
在开始和结束位置应用较短的时间窗
(可选)

指定是否在每个时间序列的开始和结束位置缩短时间窗。

  • 选中 - 将在时间序列的开始和结束位置缩短时间窗,从而使时间窗不会在时间序列开始前或结束后延伸。
  • 未选中 - 时间窗不会缩短。 如果时间窗在时间序列开始前或结束后延伸,平滑值将为空。 这是默认设置。

Boolean
启用时间序列弹出窗口
(可选)

指定输出要素或表是否包括弹出图表,以显示时间序列的原始和平滑值。

  • 选中 - 输出将包括弹出图表。 这是默认设置。
  • 未选中 - 输出将不包括弹出图表。

Boolean

派生输出

标注说明数据类型
更新的要素或表

追加输出字段后的已更新输入表或要素类。

Feature Class, Table

arcpy.stats.TimeSeriesSmoothing(in_features, time_field, analysis_field, {group_method}, {method}, {time_window}, {append_to_input}, {output_features}, {id_field}, {apply_shorter_window}, {enable_time_series_popups})
名称说明数据类型
in_features

包含时间序列数据和要平滑的字段的要素或表。

Feature Layer; Table View
time_field

包含每条记录的时间的字段。

Field
analysis_field

包含要平滑的值的字段。

Field
group_method
(可选)

指定用于将记录分组至不同时间序列的方法。 每个时间序列都会单独进行平滑处理。

  • LOCATION同一位置的要素将被分组到同一时间序列。 这是默认设置。
  • ID_FIELDID 字段值相同的记录将被分组到同一时间序列。
  • NONE所有记录都将位于相同的时间序列中。
String
method
(可选)

指定将要使用的平滑方法。

  • BACKWARD平滑值是在时间窗范围内记录及其之前的值的平均值。 这是默认设置。
  • CENTERED平滑值是记录及其之前和之后的值的平均值。 时间窗的一半用于记录的时间之前,另一半用于之后。
  • FORWARD平滑值是在时间窗范围内记录及其之后的值的平均值。
  • ADAPTIVE平滑值是以记录为中心的局部线性回归的结果。 时间窗的大小将针对每条记录进行优化。
String
time_window
(可选)

时间窗的长度。 可以以秒、分钟、小时、天、周、月或年为单位提供该值。 对于后移、前移和居中移动平均值,必须提供值和单位。 对于自适应带宽局部线性回归,值可以留空,将会为每个值单独估计时间窗。 处于时间窗边界上的值将包含在时间窗内。 例如,如果您具有每日数据并使用时间窗为四天的后移平均值,则在平滑记录时,时间窗内将包含五个值:记录的值和前四天的值。

Time Unit
append_to_input
(可选)

指定是将输出字段追加到输入数据集还是将其另存为新的输出表或要素类。 如果您将字段追加到输入,则会忽略输出坐标系环境。

  • APPEND_TO_INPUT输出字段将被追加到输入要素。 此选项会修改输入数据。
  • NEW_OUTPUT输出字段将不会追加到输入。 将创建包含输出字段的输出表或要素类。 这是默认设置。
Boolean
output_features
(可选)

包含平滑值和时间窗的字段以及相邻要素数目的输出要素。

Feature Class; Table
id_field
(可选)

包含每个时间序列的唯一 ID 的整数或文本字段。 所有此字段值相同的记录都是同一时间序列的一部分。

Field
apply_shorter_window
(可选)

指定是否在每个时间序列的开始和结束位置缩短时间窗。

  • APPLY_SHORTER_WINDOW将在时间序列的开始和结束位置缩短时间窗,从而使时间窗不会在时间序列开始前或结束后延伸。
  • NOT_APPLY_SHORTER_WINDOW时间窗不会缩短。 如果时间窗在时间序列开始前或结束后延伸,平滑值将为空。 这是默认设置。
Boolean
enable_time_series_popups
(可选)

指定输出要素或表是否包括弹出图表,以显示时间序列的原始和平滑值。

  • CREATE_POPUP输出将包括弹出图表。 这是默认设置。
  • NO_POPUP输出将不包括弹出图表。
Boolean

派生输出

名称说明数据类型
updated_features

追加输出字段后的已更新输入表或要素类。

Feature Class, Table

代码示例

TimeSeriesSmoothing 示例 1(Python 窗口)

以下 Python 脚本演示了如何使用 TimeSeriesSmoothing 函数。

import arcpy
arcpy.stats.TimeSeriesSmoothing("temperature_CA", "START_DATE", "VALUE", 
            "LOCATION", "BACKWARD", "1 Months", "NEW_OUTPUT", "temperature_smoothed", 
            None, "NOT_APPLY_SHORTER_WINDOW", "CREATE_POPUP")
TimeSeriesSmoothing 示例 2(独立脚本)

以下 Python 脚本演示了如何使用 TimeSeriesSmoothing 函数来预测人口:

import arcpy
arcpy.env.workspace = "C:/Analysis/data.gdb"

# Smooth temperature data using adaptive method by ID Field and revise input 
arcpy.stats.TimeSeriesSmoothing("temperature_CA", "START_DATE", "VALUE", 
            "ID_FIELD", "ADAPTIVE", None, "APPEND_TO_INPUT", None, "FIPS", 
            "NOT_APPLY_SHORTER_WINDOW", "NO_POPUP")