地理聚合 (旅游)
澳大利亚旅游数据的地理层级预测
在许多应用中,时间序列集合是分层组织的。示例包括定义不同类型聚合的地理级别、产品或类别。在这种情况下,通常要求预测者为所有分解和聚合序列提供预测。一个自然而然的需求是这些预测必须是“一致的”,即底层序列的预测值精确地加总到聚合序列的预测值。
在本笔记本中,我们演示了如何使用 HierarchicalForecast
在地理级别之间生成一致的预测。我们将使用经典的澳大利亚国内旅游 (Tourism
) 数据集,该数据集包含澳大利亚每个州游客数量的月度时间序列。
我们将首先加载 Tourism
数据,并使用 StatsForecast
中的 AutoETS
模型生成基础预测,然后使用 HierarchicalForecast
中的几种协调算法对预测进行协调。最后,我们将展示其性能与 预测:原理与实践 中报告的结果相当,该书使用了 R 包 fable。
您可以使用 CPU 或 GPU 在 Google Colab 上运行这些实验。
1. 加载和处理数据
在本例中,我们将使用 Tourism 数据集,该数据集来自 预测:原理与实践 一书。
该数据集仅包含最低级别的时间序列,因此我们需要为所有层级创建时间序列。
国家 | 地区 | 州 | 目的 | ds | y | |
---|---|---|---|---|---|---|
0 | 澳大利亚 | 阿德莱德 | 南澳大利亚 | 商务 | 1998-01-01 | 135.077690 |
1 | 澳大利亚 | 阿德莱德 | 南澳大利亚 | 商务 | 1998-04-01 | 109.987316 |
2 | 澳大利亚 | 阿德莱德 | 南澳大利亚 | 商务 | 1998-07-01 | 166.034687 |
3 | 澳大利亚 | 阿德莱德 | 南澳大利亚 | 商务 | 1998-10-01 | 127.160464 |
4 | 澳大利亚 | 阿德莱德 | 南澳大利亚 | 商务 | 1999-01-01 | 137.448533 |
该数据集可以按以下非严格层级结构进行分组。
使用 HierarchicalForecast
中的 aggregate
函数,我们可以获取完整的时间序列集合。
unique_id | ds | y | |
---|---|---|---|
0 | 澳大利亚 | 1998-01-01 | 23182.197269 |
1 | 澳大利亚 | 1998-04-01 | 20323.380067 |
2 | 澳大利亚 | 1998-07-01 | 19826.640511 |
3 | 澳大利亚 | 1998-10-01 | 20830.129891 |
4 | 澳大利亚 | 1999-01-01 | 22087.353380 |
unique_id | Australia/ACT/Canberra/Business | Australia/ACT/Canberra/Holiday | Australia/ACT/Canberra/Other | Australia/ACT/Canberra/Visiting | |
---|---|---|---|---|---|
0 | 澳大利亚 | 1.0 | 1.0 | 1.0 | 1.0 |
1 | Australia/ACT | 1.0 | 1.0 | 1.0 | 1.0 |
2 | Australia/New South Wales | 0.0 | 0.0 | 0.0 | 0.0 |
3 | Australia/Northern Territory | 0.0 | 0.0 | 0.0 | 0.0 |
4 | Australia/Queensland | 0.0 | 0.0 | 0.0 | 0.0 |
划分训练/测试集
我们将最后两年(8个季度)用作测试集。
2. 计算基础预测
以下单元格使用 ETS
模型计算 Y_df
中每个时间序列的基础预测。请注意,Y_hat_df
包含预测结果,但它们不是一致的。
3. 协调预测
以下单元格使用 HierarchicalReconciliation
类使之前的预测保持一致。由于层级结构不是严格的,我们无法使用 TopDown
或 MiddleOut
等方法。在本例中,我们使用 BottomUp
和 MinTrace
。
数据框 Y_rec_df
包含协调后的预测结果。
unique_id | ds | AutoETS | AutoETS/自下而上 | AutoETS/MinTrace_method-mint_shrink | AutoETS/MinTrace_method-ols | |
---|---|---|---|---|---|---|
0 | 澳大利亚 | 2016-01-01 | 25990.068004 | 24381.911737 | 25428.089783 | 25894.399067 |
1 | 澳大利亚 | 2016-04-01 | 24458.490282 | 22903.895964 | 23914.271400 | 24357.301898 |
2 | 澳大利亚 | 2016-07-01 | 23974.055984 | 22412.265739 | 23428.462394 | 23865.910647 |
3 | 澳大利亚 | 2016-10-01 | 24563.454495 | 23127.349578 | 24089.845955 | 24470.782393 |
4 | 澳大利亚 | 2017-01-01 | 25990.068004 | 24518.118006 | 25545.358678 | 25901.362283 |
4. 评估
HierarchicalForecast
包包含一个 evaluate
函数,用于评估不同的层级,并且能够计算相对于基准模型的缩放指标。
RMSE
下表显示了使用 RMSE 衡量的不同层级下每种协调方法的性能。
层级 | 指标 | 基础 | 自下而上 | MinTrace(mint_shrink) | MinTrace(ols) | |
---|---|---|---|---|---|---|
0 | 总计 | rmse | 1743.29 | 3028.62 | 2112.73 | 1818.94 |
2 | 目的 | rmse | 534.75 | 791.19 | 577.14 | 515.53 |
4 | 州 | rmse | 308.15 | 413.39 | 316.82 | 287.32 |
6 | 地区 | rmse | 51.66 | 55.13 | 46.55 | 46.28 |
8 | 底层 | rmse | 19.37 | 19.37 | 17.80 | 18.19 |
10 | 整体 | rmse | 41.12 | 49.82 | 40.47 | 38.75 |
MASE
下表显示了使用 MASE 衡量的不同层级下每种协调方法的性能。
层级 | 指标 | 基础 | 自下而上 | MinTrace(mint_shrink) | MinTrace(ols) | |
---|---|---|---|---|---|---|
1 | 总计 | mase | 1.59 | 3.16 | 2.06 | 1.67 |
3 | 目的 | mase | 1.32 | 2.28 | 1.48 | 1.25 |
5 | 州 | mase | 1.39 | 1.90 | 1.40 | 1.25 |
7 | 地区 | mase | 1.12 | 1.19 | 1.01 | 0.99 |
9 | 底层 | mase | 0.98 | 0.98 | 0.94 | 1.01 |
11 | 整体 | mase | 1.02 | 1.06 | 0.97 | 1.02 |
与 fable 对比
请注意,我们可以重现 预测:原理与实践 中报告的结果。原始结果是使用 R 包 fable 计算的。
参考文献
- Hyndman, R.J., & Athanasopoulos, G. (2021). “预测:原理与实践, 第3版: 第11章: 预测层级和分组系列”. OTexts: Melbourne, Australia. OTexts.com/fpp3 Accessed on July 2022.
- Rob Hyndman, Alan Lee, Earo Wang, Shanika Wickramasuriya, and Maintainer Earo Wang (2021). “hts: 层级和分组时间序列”. URL https://CRAN.R-project.org/package=hts. R package version 0.3.1.
- Mitchell O’Hara-Wild, Rob Hyndman, Earo Wang, Gabriel Caceres, Tim-Gunnar Hensel, and Timothy Hyndman (2021). “fable: 整洁时间序列的预测模型”. URL https://CRAN.R-project.org/package=fable. R package version 6.0.2.