地理聚合(监狱人口)
澳大利亚监狱人口数据的地理分层预测
在许多应用中,时间序列集合是按层级组织的。例如,存在地理级别、产品或类别定义了不同类型的聚合。在这种场景下,预测人员通常需要为所有分解序列和聚合序列提供预测。一个自然的要求是这些预测必须是“一致的”,也就是说,最低层序列的预测总和必须与聚合序列的预测精确相等。
在本笔记本中,我们将展示一个示例,说明如何使用 HierarchicalForecast
在地理级别之间生成一致的预测。我们将使用澳大利亚监狱人口数据集。
我们将首先加载数据集,并使用 StatsForecast
中的 ETS
模型生成基础预测,然后使用 HierarchicalForecast
中的几种协调算法对预测进行协调。最后,我们展示其性能与Forecasting: Principles and Practice一书报告的结果相当,该书使用了 R 包 fable。
您可以使用 Google Colab 通过 CPU 或 GPU 运行这些实验。
1. 加载并处理数据
数据集只包含最低层的时间序列,因此我们需要为所有层级创建时间序列。
国家 | 州 | 性别 | 法律状态 | 原住民 | ds | y | |
---|---|---|---|---|---|---|---|
0 | 澳大利亚 | ACT | 女性 | 还押 | ATSI | 2005-04-01 | 0 |
1 | 澳大利亚 | ACT | 女性 | 还押 | 非 ATSI | 2005-04-01 | 2 |
2 | 澳大利亚 | ACT | 女性 | 已判刑 | ATSI | 2005-04-01 | 0 |
3 | 澳大利亚 | ACT | 女性 | 已判刑 | 非 ATSI | 2005-04-01 | 5 |
4 | 澳大利亚 | ACT | 男性 | 还押 | ATSI | 2005-04-01 | 7 |
数据集可以按照以下分组结构进行分组。
使用 HierarchicalForecast
中的 aggregate
函数,我们可以获得完整的时间序列集合。
unique_id | ds | y | |
---|---|---|---|
0 | 澳大利亚 | 2005-04-01 | 24.296 |
1 | 澳大利亚 | 2005-07-01 | 24.643 |
2 | 澳大利亚 | 2005-10-01 | 24.511 |
3 | 澳大利亚 | 2006-01-01 | 24.393 |
4 | 澳大利亚 | 2006-04-01 | 24.524 |
unique_id | Australia/ACT/Female/Remanded | Australia/ACT/Female/Sentenced | Australia/ACT/Male/Remanded | Australia/ACT/Male/Sentenced | |
---|---|---|---|---|---|
0 | 澳大利亚 | 1.0 | 1.0 | 1.0 | 1.0 |
1 | Australia/ACT | 1.0 | 1.0 | 1.0 | 1.0 |
2 | Australia/NSW | 0.0 | 0.0 | 0.0 | 0.0 |
3 | Australia/NT | 0.0 | 0.0 | 0.0 | 0.0 |
4 | Australia/QLD | 0.0 | 0.0 | 0.0 | 0.0 |
划分训练/测试集
我们使用最后两年(8个季度)作为测试集。
2. 计算基础预测
以下单元格使用 ETS
模型计算 Y_df
中每个时间序列的基础预测。请注意,Y_hat_df
包含预测结果,但它们不一致。
unique_id | ds | y | |
---|---|---|---|
40 | 澳大利亚 | 2015-04-01 | 35.271 |
41 | 澳大利亚 | 2015-07-01 | 35.921 |
42 | 澳大利亚 | 2015-10-01 | 36.067 |
43 | 澳大利亚 | 2016-01-01 | 36.983 |
44 | 澳大利亚 | 2016-04-01 | 37.830 |
… | … | … | … |
2155 | Australia/WA/Male/Sentenced | 2016-01-01 | 3.894 |
2156 | Australia/WA/Male/Sentenced | 2016-04-01 | 3.876 |
2157 | Australia/WA/Male/Sentenced | 2016-07-01 | 3.969 |
2158 | Australia/WA/Male/Sentenced | 2016-10-01 | 4.076 |
2159 | Australia/WA/Male/Sentenced | 2017-01-01 | 4.088 |
unique_id | ds | y | |
---|---|---|---|
0 | 澳大利亚 | 2005-04-01 | 24.296 |
1 | 澳大利亚 | 2005-07-01 | 24.643 |
2 | 澳大利亚 | 2005-10-01 | 24.511 |
3 | 澳大利亚 | 2006-01-01 | 24.393 |
4 | 澳大利亚 | 2006-04-01 | 24.524 |
… | … | … | … |
2147 | Australia/WA/Male/Sentenced | 2014-01-01 | 3.614 |
2148 | Australia/WA/Male/Sentenced | 2014-04-01 | 3.635 |
2149 | Australia/WA/Male/Sentenced | 2014-07-01 | 3.692 |
2150 | Australia/WA/Male/Sentenced | 2014-10-01 | 3.726 |
2151 | Australia/WA/Male/Sentenced | 2015-01-01 | 3.780 |
3. 协调预测
以下单元格使用 HierarchicalReconciliation
类使之前的预测保持一致。由于层级结构并非严格,我们无法使用诸如 TopDown
或 MiddleOut
之类的方法。在本例中,我们使用 BottomUp
和 MinTrace
。
数据框 Y_rec_df
包含协调后的预测。
unique_id | ds | AutoETS | AutoETS/BottomUp | AutoETS/MinTrace_method-mint_shrink | |
---|---|---|---|---|---|
0 | 澳大利亚 | 2015-04-01 | 34.799497 | 34.946476 | 34.923548 |
1 | 澳大利亚 | 2015-07-01 | 35.192638 | 35.410342 | 35.432421 |
2 | 澳大利亚 | 2015-10-01 | 35.188216 | 35.580849 | 35.473386 |
3 | 澳大利亚 | 2016-01-01 | 35.888628 | 35.951878 | 35.939526 |
4 | 澳大利亚 | 2016-04-01 | 36.045437 | 36.416829 | 36.245158 |
4. 评估
HierarchicalForecast
包包含 HierarchicalEvaluation
类,用于评估不同的层级,并且能够计算与基准模型相比的缩放指标。
级别 | 指标 | 基础 | AutoETS/BottomUp | AutoETS/MinTrace_method-mint_shrink | |
---|---|---|---|---|---|
0 | 总计 | mase | 1.36 | 1.07 | 1.17 |
1 | 州 | mase | 1.53 | 1.55 | 1.59 |
2 | 法律状态 | mase | 2.40 | 2.48 | 2.38 |
3 | 性别 | mase | 1.08 | 0.82 | 0.93 |
4 | 最低层 | mase | 2.16 | 2.16 | 2.14 |
5 | 总体 | mase | 1.99 | 1.98 | 1.98 |
与 Fable 比较
请注意,我们可以重现由 Forecasting: Principles and Practice 一书报告的结果。原始结果是使用 R 包 fable 计算的。
参考文献
- Hyndman, R.J., & Athanasopoulos, G. (2021). “Forecasting: principles and practice, 3rd edition: Chapter 11: Forecasting hierarchical and grouped series.”. 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.