入门
快速入门 (Polars)
使用 Polars 进行分层对齐的最小示例
组织成不同聚合级别结构的大量时间序列通常要求其预测遵循其聚合约束,这对创建能够进行一致预测的新颖算法提出了挑战。
HierarchicalForecast 包提供了广泛的经典分层对齐算法的 Python 实现。
在本 notebook 中,我们将展示如何使用 StatsForecast 库生成基础预测,并使用 HierarchicalForecast 包执行分层对齐。
您可以使用 Google Colab 在 CPU 或 GPU 上运行这些实验。
1. 库
2. 加载数据
在本示例中,我们将使用 TourismSmall 数据集。以下单元格获取层次结构中不同级别的时间序列、从底部层次结构恢复完整数据集的求和矩阵 S 以及由 tags 表示的每个层次结构的索引。
| unique_id | nsw-hol-city | nsw-hol-noncity | vic-hol-city | vic-hol-noncity | qld-hol-city | 
|---|---|---|---|---|---|
| str | f64 | f64 | f64 | f64 | f64 | 
| ”total” | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 
| ”hol” | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 
| ”vfr” | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 
| ”bus” | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 
| ”oth” | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 
| ”nsw-hol” | 1.0 | 1.0 | 0.0 | 0.0 | 0.0 | 
我们将数据帧分割成训练/测试集。
3. 基础预测
以下单元格使用 auto_arima 和 naive 模型计算每个时间序列的基础预测。请注意,Y_hat_df 包含预测结果,但它们并不一致。
4. 分层对齐
以下单元格使用 HierarchicalReconciliation 类使之前的预测结果保持一致。用于使预测结果一致的方法有
- BottomUp:该方法的对齐是对上层进行简单加总。
- TopDown:第二种方法将基础级别的预测约束到最顶层聚合级别的序列,然后通过比例将其分配给分解序列。
- MiddleOut:将基础预测固定在中间层。
5. 评估
HierarchicalForecast 包包含 evaluate 函数用于评估不同的层次结构,我们可以使用 utilsforecast 计算相对于基线模型的平均绝对误差。
| 级别 | 指标 | AutoARIMA | AutoARIMA/BottomUp | AutoARIMA/TopDown_method-forecast_proportions | 
|---|---|---|---|---|
| str | str | f64 | f64 | f64 | 
| ”国家" | ”mse-scaled” | 0.317897 | 0.226999 | 0.317897 | 
| ”国家/目的" | ”mse-scaled” | 0.323207 | 0.199359 | 0.251368 | 
| ”国家/目的/州" | ”mse-scaled” | 0.266118 | 0.305711 | 0.308241 | 
| ”国家/目的/州/城市非城… | “mse-scaled” | 0.305173 | 0.305173 | 0.305913 | 
| ”总体" | ”mse-scaled” | 0.311707 | 0.234934 | 0.289406 | 
参考文献
- Orcutt, G.H.、Watts, H.W. 和 Edwards, J.B.(1968)。数据聚合与信息损失。《美国经济评论》,58,773(787).
- 加快产品线预测的分解方法。《预测学报》,9,233–254。doi:10.1002/for.3980090304.
- 特定子聚合时间序列统计相关性的聚合变量时间序列预测策略研究。《计算机与运筹学》,26,1133–1149。doi:10.1016/S0305-0548(99)00017-9.
- Hyndman, R.J. 和 Athanasopoulos, G. (2021)。《预测:原理与实践,第3版:第11章:分层和分组序列预测》。OTexts:澳大利亚墨尔本。OTexts.com/fpp3 访问于 2022 年 7 月。

