指数平滑预测工具使用霍尔特-温特指数平滑方法将时空立方体中每个位置的时间序列分解为季节和趋势分量,从而有效地预测每个位置的未来时间步长。主要输出是最终预测时间步长的地图以及信息性消息和弹出图表。您还可以创建一个新的时空立方体,其中包含来自原始立方体的数据以及追加的预测值。此外,您还可以选择检测每个时间序列中的异常值,以识别与时间序列其余部分的模式和趋势显著不同的位置和时间。
潜在的应用
指数平滑是最古老且研究最多的时间序列预测方法之一。当时间序列的值遵循渐进趋势并显示季节性行为时(即在给定数量的时间步长上这些值遵循重复的周期性模式时),此方法最为有效。
例如,您可以在以下应用程序中使用此工具:
- 城市卫生规划者可以使用此工具来预测热浪来袭期间市中心的每小时温度,以预防由高温引发的相关疾病。
- 连锁零售店可以使用此工具来预测接下来的一周中每天对各个商品的需求。
预测和验证
该工具在预测每个时间序列时均会构建两个模型。第一个是预测模型,用于预测未来时间步长的值。第二个是验证模型,用于验证预测值。
预测模型
预测模型将通过对时空立方体每个位置的时间序列值执行指数平滑来进行构造。随后,该模型即可用于预测未来时间步长。指数平滑模型对每个时间序列的拟合度均会通过预测均方根误差 (RMSE) 进行测量,该均方根误差等于指数平滑模型与时间序列值之间的均方差的平方根。
,其中 T 为时间步长数,ct 为来自指数平滑的拟合值,而 rt 为时间 t 处时间序列的原始值。
下图显示了时间序列的原始值和拟合至该时间序列的指数平滑模型,以及对两个未来时间步长的预测。预测 RMSE 将测量模型中的拟合值与原始时间序列值之间的差异程度。
预测 RMSE 仅会测量指数平滑模型对原始时间序列值的拟合程度。它无法测量预测模型对未来值的实际预测程度。常见的情况是,模型会紧密拟合时间序列,但在外推时无法提供准确的预测。验证模型可解决此问题。
验证模型
验证模型用于确定预测模型对每个时间序列的未来值的预测程度。该模型需通过排除每个时间序列的部分最终时间步长并将指数平滑模型拟合到未排除的数据来进行构造。随后即可将该模型用于预测所保留数据的值,并将预测值与隐藏的原始值进行比较。默认情况下,系统将保留 10% 的时间步长用于验证,但是可以使用为进行验证排除的时间步长数参数来更改此数字。所排除的时间步长数不能超过时间步长数的 25%,且如果将其指定为 0,则系统将不执行任何验证。预测的精度需通过计算验证 RMSE 统计数据来进行测量,该统计数据等于所排除时间步长的预测值与原始值之间的均方差的平方根。
,其中 T 为时间步长数,m 是为验证保留的时间步长数,ct 为根据前 T-m 个时间步长预测的值,而 rt 是为在时间 t 处验证保留的时间序列的原始值。
下图显示了拟合至时间序列前半部分,然后用于预测时间序列后半部分的指数平滑模型。验证 RMSE 将测量所保留时间步长处的预测值与原始值之间的差异程度。
验证模型十分重要,因为它可以直接将预测值与原始值进行比较,以衡量指数平滑模型的预测能力。尽管它实际上并不用于预测,但可将其用于证明预测模型的合理性。
注:
时间序列预测中的验证与名为交叉验证的常用技术相似但不相同。两者的不同之处在于,预测验证始终排除用于验证的最终时间步长,而交叉验证要么排除数据的随机子集,要么按顺序排除每个值。
解释
在解释“预测 RMSE”和“验证 RMSE”值时,需要牢记一些注意事项。
- RMSE 值之间无法直接进行比较,因为它们测量的是不同的事物。预测 RMSE 测量的是模型对原始时间序列值的拟合度,而验证 RMSE 测量的是模型对未来值的预测能力。因为“预测 RMSE”使用的数据更多且不进行外推,所以它通常比“验证 RMSE”要小。
- 两种 RMSE 值均采用数据的单位。例如,如果您的数据是以摄氏度为单位的温度测量值,则验证 RMSE 50 将是非常高的值,因为这意味着预测值与真值平均相差大约 50 度。但是,如果您的数据是一家大型零售商店的日收入(以美元为单位),则相同的验证 RMSE 50 将会是很小的值,因为这意味着所预测日收入平均每天与真值的差仅为 50 美元。
构建指数平滑模型
尽管指数平滑分为很多种类,但它们都是通过将时间序列分成多个分量来运行的。每个分量的值将通过对来自先前时间步长的分量进行指数加权来进行估计,从而使每个时间步长的影响随着时间的推移呈指数减小。每个分量均需通过状态空间模型方法进行递归定义,且每个分量均依赖于所有其他分量。所有参数均使用最大似然估计来进行估计。
在此工具中,所有分量都将相加,因此预测模型将是各个分量的总和。如果使用了季节分量,则该工具将使用霍尔特-温特衰减季节性方法。如果未使用季节分量,则该工具将使用衰减趋势方法。您可以在教科书的其他参考部分中找到这些分量的详细信息以及定义状态空间模型的方程。
趋势分量
指数平滑模型的第一个分量是趋势分量。该分量用于对时间序列值中的平缓变化和系统性变化进行建模。该分量需通过以每个时间步长的值与前一个时间步长的值之间的差值作为权重依据来对每个时间步长的值进行指数加权来进行估计。使用模型检测到的最新趋势进行预测时,系统将直接使用趋势分量。但是,为了防止预测永远遵循最终趋势,系统会使该趋势衰减,从而使该趋势随着时间的推移逐渐趋于平缓。衰减可将每个时间步长的趋势值斜率乘以指数减小的值,从而使趋势趋于平缓。衰减水平将由模型进行估计,因此在进行未来长期预测时,某些模型的趋势平缓速度可能更快或更慢(或者在最极端的情况下根本不会趋于平缓)。
季节分量
指数平滑的第二个分量是季节分量,用于对在给定数量的时间步长上重复的数据模式进行建模。每个季节内模式的形状和量级均可随时间变化,但一个季节的持续时间在整个时间序列中必须相同。例如,温度可通过显示夜晚的最低温度和白天的最高温度来呈现与白天和夜晚相对应的季节性行为。尽管在全年中每天太阳升起的时间均不相同(从而改变了一天内温度模式的形状和量级),但一个季节的持续时间始终为一天。
与趋势分量一样,给定时间步长的季节分量也需通过对先前时间步长的季节值进行指数加权进行确定。但是,系统不会使用前方紧邻的时间步长,而是仅对与季节周期中同一点相对应的先前时间步长进行加权。例如,如果一个季节的长度是四个时间步长,则季节分量将对 4 个时间步长、8 个时间步长、12 个时间步长等等之前的值进行指数加权。
如果您知道数据中与一个季节相对应的时间步长数,则可以在季节长度参数中将其指定,随后该值将会被时空立方体中的每个位置使用。如果您不知道季节的长度,或如果不同位置的季节长度不同,则可以将该参数值留空,并使用频谱密度函数为每个位置估计最佳季节长度。有关此函数的详细信息,请参阅其他资源部分。
对于单个位置,如果通过频谱分析确定的最佳季节长度大于一且小于该位置处时间步长数的三分之一,则季节长度将被设置为该最佳值。否则,该位置不会使用季节分量。该位置处使用的季节长度将保存在输出要素的季节长度字段中。如果不使用季节分量,则此字段中的值为 1。下图是对此工作流的汇总:
水平分量
指数平滑的水平分量将表示考虑了季节性和趋势的时间序列基线值。将预测模型拟合到输入时空立方体时,系统将在考虑季节性和趋势的前提下,通过对先前的时间步长水平进行指数加权来计算时间步长水平。对未来进行预测时,水平分量将一直等于最后测量的时间步长的水平分量,而实际预测将改为由趋势分量和季节分量进行驱动。
残差分量和置信区间
最后一个分量为残差(或误差)分量。该分量为真值与其他所有分量所估计的值之间的差。它可代表趋势、季节和水平分量建模后数据中剩余的不确定性和误差。该分量将构成置信区间的基础,因此十分重要。
对于每个预测时间步长,该工具都会为预测值计算 90% 置信区间的上限和下限。每个时间步长的预测值均代表对未来值的唯一最优估计,但置信区间可用于可视化真实未来值的不确定性和可能范围。系统会将上限和下限另存为字段,并显示在输出要素的弹出图表中。
置信区间是在假设模型残差为独立且完全相同地正态分布的前提下进行估计的。 在此假设下,可以得出置信区间的公式。这些公式及其派生公式可以在教科书的其他参考部分中找到。
可视化分量
您可以通过创建输出时空立方体来可视化指数平滑模型的分量。可在在 3D 模式下显示时空立方体工具中将此立方体与显示主题参数的预测结果选项一起使用。系统将为输出要素创建一个图表,并且可以在图表属性窗格中打开和关闭指数平滑模型的各个分量。将这些分量加在一起后,即可将其用于构造预测模型以及对未来时间步长的预测。下图显示了该主题的第一张图所示的指数平滑模型的各个分量:
识别时间序列异常值
时间序列数据中的异常值是与时间序列中其他值的模式和趋势显著不同的值。例如,在假期前后的大量在线购物或暴雨期间的大量交通事故可能会被视为其时间序列中的异常值。简单数据输入错误(例如省略数字的小数)是异常值的另一个常见来源。确定时间序列预测中的异常值非常重要,因为异常值会影响用于预测未来值的预测模型,即使位置时间序列中的少量异常值也会大大降低预测的准确性和可靠性。具有异常值的位置,尤其是在时间序列开始或结束时出现异常值的位置,可能会产生误导性的预测,并且识别这些位置可以帮助您确定您应对每个位置的预测值有多大的信心。
异常值不是仅由其原始值确定,而是由其值与预测模型的拟合值相差多少来确定。这意味着,一个值是否被确定为异常值取决于上下文,并且取决于它的位置和时间。预测模型将基于整个时间序列定义期望值,而异常值是与该基准显著偏离的值。例如,考虑年平均温度的时间序列。由于过去几十年来平均温度升高,因此拟合的温度预测模型也将随着时间的推移而增加,以反映这种升高现象。这意味着,如果 2020 年的温度与 1950 年被视为典型且非异常值的温度值相同,则很可能被视为异常值。换句话说,按照 2020 年的标准,1950 年的典型温度将被视为非常低。
您可以选择在每个位置使用识别异常值参数来检测时间序列异常值。如果指定,则将对每个位置执行广义极值标准化偏差 (ESD) 测试,以测试时间序列异常值。可以使用置信度参数指定测试的置信度,默认情况下将使用 90% 的测试的置信度。广义 ESD 测试将在每个位置迭代测试单个异常值、两个异常值、三个异常值,依此类推,直到最大异常值数参数(默认为时间步长数的 5%,四舍五入),并且返回具有统计显著性数量的异常值。可以在输出要素的属性表中看到每个位置的异常值,而在下一部分中讨论的时间序列弹出图表中则可看到单个异常值。
工具输出
此工具的主要输出为 2D 要素类,其中显示了使用存储为字段的所有其他时间步长的预测,按最终预测时间步长符号化的输入时空立方体中的每个位置。虽然会独立预测每个位置,并且未考虑空间关系,但是对于具有类似时间序列的区域,地图可能会显示空间模式。
弹出图表
使用浏览导航工具单击地图上的任何要素将在弹出窗口窗格中显示一个图表,其中显示了时空立方体的值、拟合的指数平滑模型和预测值以及每个预测的 90% 置信区间。时空立方体的值将显示为蓝色,并通过蓝线进行连接。拟合的值将显示为橙色,并通过橙色虚线进行连接。预测的值将显示为橙色,并通过表示模型预测的橙色实线进行连接。每个预测值周围都将绘制出浅红色的置信界限。可以将鼠标悬停在图表中的任何点上,以查看该点的日期和值。此外,如果您选择检测时间序列中的异常值,则所有异常值都会显示为紫色大圆点。
注:
将输出要素另存为 shapefile (.shp) 时,将不会创建弹出图表。
地理处理消息
此工具将提供许多消息,其中包含有关工具执行的信息。消息具有三个主要部分。
输入时空立方体详细信息部分将显示输入时空立方体的属性以及有关时间步长数、位置数和时空立方图格数的信息。在第一部分中显示的属性取决于最初创建立方体的方式,因此该信息因立方体的不同而有所不同。
分析详细信息部分将显示预测结果的属性,其中包括预测的时间步长数、针对验证排除的时间步长数、带有季节性的位置的百分比以及有关预测的时间步长的信息。如果没有为季节长度参数提供值,则系统将显示所估计季节长度的汇总统计数据,其中包括最小值、最大值、平均值、中值和标准差。
各位置的精度汇总部分将显示所有位置之间的“预测 RMSE”和“验证 RMSE”的汇总统计数据。对于每个值,将显示最小值、最大值、平均值、中值和标准差。
如果您选择使用使用异常值选项参数来检测时间序列异常值,则会显示时间序列异常值汇总部分。此部分显示的信息包括异常值的位置数量和百分比、最多异常值的时间步长,以及按位置和时间步长计算的异常值数量的汇总统计数据。
输出要素的字段
除了对象 ID、几何字段以及包含弹出图表的字段之外,输出要素将具有以下字段:
- 位置 ID (LOCATION) - 时空立方体相应位置的位置 ID。
- (时间步长)中(分析变量)的预测(FCAST_1、FCAST_2,依此类推)- 每个未来时间步长的预测值。字段别名将显示分析变量的名称以及预测的日期。将为每个预测的时间步长创建此类型的字段。
- (时间步长)中(分析变量)的高区间(HIGH_1、HIGH_2,依此类推)- 每个未来时间步长预测值的 90% 置信区间上限。字段别名将显示分析变量的名称以及预测的日期。将为每个预测的时间步长创建此类型的字段。
- (时间步长)中(分析变量)的低区间(LOW_1、LOW_2,依此类推)- 每个未来时间步长预测值的 90% 置信区间下限。字段别名将显示分析变量的名称以及预测的日期。将为每个预测的时间步长创建此类型的字段。
- 预测均方根误差 (F_RMSE) - 预测 RMSE。
- 验证均方根误差 (V_RMSE) - 验证 RMSE。如果未针对验证排除任何时间步长,则不会创建此字段。
- 季节长度 (SEASON) - 对应于该位置一个季节的时间步长数。该字段中的值为 1 表示没有季节性。
- 预测方法 (METHOD) - 用于显示某位置处所使用模型的文本字段。对于此工具,该值始终为指数平滑。此字段使您可以确定按位置评估预测工具中使用了哪些模型。
- 模型拟合异常值数 (N_OUTLIERS) - 在该位置的时间序列中检测到的异常值数。仅当您选择使用异常值选项参数检测异常值时,才会创建此字段。
输出时空立方体
如果指定输出时空立方体,则输出立方体将包含输入时空立方体中的所有原始值以及附加的预测值。这一新建的时空立方体可以使用在 2D 模式下显示时空立方体或在 3D 模式下显示时空立方体工具进行显示,也可以用作时空模式挖掘工具箱中工具的输入,例如新兴热点分析和时间序列聚类。
可以使用按位置评估预测工具来比较和合并多个预测的时空立方体。由此即可使用不同的预测工具和参数来创建多个预测立方体,并且该工具可以使用“预测 RMSE”或“验证 RMSE”为每个位置标识最佳预测。
最佳做法和限制
在确定此工具是否适合您的数据以及应该选择的参数时,应考虑以下几点:
- 与时间序列预测工具集中的其他预测工具相比,建议将此工具用于趋势平缓且季节性行为强烈的数据。指数模型将假设季节性行为和趋势可以分开,因此对于趋势逐渐变化并随时间推移遵循一致季节性模式的数据而言,它是最有效的。该模型的季节分量为可选分量,因此该工具可用于不呈现季节性的数据,但对于强烈的季节性行为其使用效果最佳。
- 确定针对验证排除的时间步长数量非常重要。排除的时间步长越多,则用于评估验证模型的时间步长越少。但是,如果排除的时间步长过少,则将使用少量数据来评估“验证 RMSE”,并且可能会产生误导。建议您排除尽可能多的时间步长,同时仍保持足够的时间步长来估计验证模型。此外,建议您针对验证至少保留与要预测的时间步长数量相同的时间步长(如果时空立方体具有足够的时间步长以允许执行此操作)。
其他资源
有关使用状态空间方法进行指数平滑预测的详细信息,请参阅以下教科书:
- Hyndman R, Koehler A, Ord K, and Snyder R (2008). "Forecasting with Exponential Smoothing. The State Space Approach." https://doi.org/10.1007/978-3-540-71918-2
有关用于估计季节长度的频谱密度函数的详细信息,请参阅以下参考资料中的 findfrequency 函数:
- Hyndman R, Athanasopoulos G, Bergmeir C, Caceres G, Chhay L, O'Hara-Wild M, Petropoulos F, Razbash S, Wang E, and Yasmeen F (2019). "Forecasting functions for time series and linear models." R package version 8.7, https://pkg.robjhyndman.com/forecast.
- Hyndman RJ and Khandakar Y (2008). "Automatic time series forecasting: the forecast package for R." Journal of Statistical Software, 26(3), pp. 1–22. https://www.jstatsoft.org/article/view/v027i03.