一致性调整方法
在分层预测中,我们的目标是为许多时间序列同时创建预测,同时遵守时间序列之间预先指定的分层关系。我们可以通过对预测执行后处理一致性调整步骤来强制实现这种一致性。
HierarchicalForecast
包提供了最全面的分层预测算法 Python 实现集合,这些算法遵循经典的分层一致性调整方法。所有方法都有一个 reconcile
函数,能够使用 numpy
数组调整基础预测。
跨部门层次结构
传统上,分层预测方法调整跨部门聚合。例如,我们可能对单个产品的需求进行预测,但也对整个产品组、部门和商店进行预测,并且我们希望确保这些预测相互一致。这可以形式化为
其中 表示层次结构中所有 个时间序列的所有 个时间步的预测矩阵, 是一个矩阵,定义了 个底层时间序列与 个聚合之间的分层关系, 是一个矩阵,概括了每个预测对最终估计的贡献,而 是一致性调整后的预测矩阵。我们可以使用矩阵 来定义各种预测贡献情景。
跨部门一致性调整方法旨在找到最优的 矩阵。
时间层次结构
我们还可以执行时间一致性调整。例如,我们可能对每日需求、每周需求和每月需求进行预测,并且我们希望确保这些预测相互一致。我们将时间分层预测问题形式化为
其中 是一个矩阵,定义了 个底层时间步与 个聚合之间的层次关系,而 是一个矩阵,概括了每个预测对最终估计的贡献。我们可以使用矩阵 来定义各种预测贡献情景。
时间一致性调整方法旨在找到最优的 矩阵。
跨时间和跨部门一致性调整
我们可以通过两步过程执行跨部门一致性调整和时间一致性调整,将跨部门和时间分层预测结合起来。
参考文献
-Hyndman, Rob. Notation for forecast reconciliation.
1. 自下而上
source
BottomUp
*自下而上一致性调整类。最基本的分层一致性调整是使用自下而上策略执行的。它由 Orcutt 于 1968 年首次提出。相应的分层“投影”矩阵定义为:
参数
无
source
BottomUp.fit
*Bottom Up Fit 方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
y_insample
: 大小为 (base
, horizon
) 的样本内值。
y_hat_insample
: 大小为 (base
, horizon
) 的样本内预测值。
sigmah
: 条件边际分布的估计标准差。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
**sampler_kwargs
: 一致性采样器实例化参数。
返回
self
: object,已拟合的一致性调整器。*
source
BottomUp.predict
*使用一致性调整器进行预测。
使用拟合的均值和概率一致性调整器进行预测。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
level
: float list 0-100,预测区间的置信水平。
返回
y_tilde
: 已调整的一致性预测。*
source
BottomUp.fit_predict
*BottomUp 一致性调整方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内预测值。
sigmah
: 条件边际分布的估计标准差。
level
: float list 0-100,预测区间的置信水平。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
**sampler_kwargs
: 一致性采样器实例化参数。
返回
y_tilde
: 使用 Bottom Up 方法调整的一致性预测 y_hat。*
source
BottomUp.sample
*对概率一致性分布进行采样。
从概率一致性分布生成 n 个样本。该方法使用拟合的均值和概率一致性调整器,这些调整器由一致性调整器实例化期间选择的 intervals_method
定义。目前可用:normality
, bootstrap
, permbu
。
参数
num_samples
: int,从一致性分布生成的样本数量。
返回
samples
: 大小为 (num_series
, horizon
, num_samples
) 的一致性样本。*
source
BottomUpSparse
*BottomUpSparse 一致性调整类。
这是使用稀疏矩阵方法实现自下而上一致性调整。它在具有许多时间序列的数据集上工作效率更高。[makoren: 至少我希望如此,我只检查了大约 2 万个时间序列,并没有真正的改进,如果能检查像 100 万个时间序列那样的数据,密集 S 矩阵确实无法适应内存,那就太好了]
更多细节请参阅父类。*
source
BottomUpSparse.fit
*Bottom Up Fit 方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
y_insample
: 大小为 (base
, horizon
) 的样本内值。
y_hat_insample
: 大小为 (base
, horizon
) 的样本内预测值。
sigmah
: 条件边际分布的估计标准差。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
**sampler_kwargs
: 一致性采样器实例化参数。
返回
self
: object,已拟合的一致性调整器。*
source
BottomUpSparse.predict
*使用一致性调整器进行预测。
使用拟合的均值和概率一致性调整器进行预测。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
level
: float list 0-100,预测区间的置信水平。
返回
y_tilde
: 已调整的一致性预测。*
source
BottomUpSparse.fit_predict
*BottomUp 一致性调整方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内预测值。
sigmah
: 条件边际分布的估计标准差。
level
: float list 0-100,预测区间的置信水平。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
**sampler_kwargs
: 一致性采样器实例化参数。
返回
y_tilde
: 使用 Bottom Up 方法调整的一致性预测 y_hat。*
source
BottomUpSparse.sample
*对概率一致性分布进行采样。
从概率一致性分布生成 n 个样本。该方法使用拟合的均值和概率一致性调整器,这些调整器由一致性调整器实例化期间选择的 intervals_method
定义。目前可用:normality
, bootstrap
, permbu
。
参数
num_samples
: int,从一致性分布生成的样本数量。
返回
samples
: 大小为 (num_series
, horizon
, num_samples
) 的一致性样本。*
2. 自上而下
source
TopDown
*Top Down 一致性调整类。
Top Down 分层一致性调整方法分配总聚合预测并使用比例 将其分解到层次结构的下方,这些比例可以是实际历史值或估计值。
参数:
method
: forecast_proportions
, average_proportions
和 proportion_averages
之一。
参考文献
- CW. Gross (1990). “Disaggregation methods to expedite product line forecasting”. Journal of Forecasting, 9 , 233–254. doi:10.1002/for.3980090304。
- G. Fliedner (1999). “An investigation of aggregate variable time series forecast strategies with specific subaggregate time series statistical correlation”. Computers and Operations Research, 26 , 1133–1149. doi:10.1016/S0305-0548(99)00017-9.*
source
TopDown.fit
*TopDown Fit 方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。对于 forecast_proportions
方法是可选的。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内预测值。对于 forecast_proportions
方法是可选的。
sigmah
: 条件边际分布的估计标准差。
interval_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
tags
: 每个键是一个层级,每个值是其 S
索引。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
返回
self
: object,已拟合的一致性调整器。*
source
TopDown.predict
*使用一致性调整器进行预测。
使用拟合的均值和概率一致性调整器进行预测。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
level
: float list 0-100,预测区间的置信水平。
返回
y_tilde
: 已调整的一致性预测。*
source
TopDown.fit_predict
*Top Down 一致性调整方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
tags
: 每个键是一个层级,每个值是其 S
索引。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。对于 forecast_proportions
方法是可选的。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内预测值。对于 forecast_proportions
方法是可选的。
sigmah
: 条件边际分布的估计标准差。
level
: float list 0-100,预测区间的置信水平。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
返回
y_tilde
: 使用 Top Down 方法调整的一致性预测 y_hat。*
source
TopDown.sample
*对概率一致性分布进行采样。
从概率一致性分布生成 n 个样本。该方法使用拟合的均值和概率一致性调整器,这些调整器由一致性调整器实例化期间选择的 intervals_method
定义。目前可用:normality
, bootstrap
, permbu
。
参数
num_samples
: int,从一致性分布生成的样本数量。
返回
samples
: 大小为 (num_series
, horizon
, num_samples
) 的一致性样本。*
source
TopDownSparse
*TopDownSparse 一致性调整类。
这是使用稀疏矩阵方法实现自上而下一致性调整。它在具有许多时间序列的数据集上工作效率更高。
更多细节请参阅父类。*
source
TopDownSparse.fit
*TopDown Fit 方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。对于 forecast_proportions
方法是可选的。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内预测值。对于 forecast_proportions
方法是可选的。
sigmah
: 条件边际分布的估计标准差。
interval_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
tags
: 每个键是一个层级,每个值是其 S
索引。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
返回
self
: object,已拟合的一致性调整器。*
source
TopDownSparse.predict
*使用一致性调整器进行预测。
使用拟合的均值和概率一致性调整器进行预测。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
level
: float list 0-100,预测区间的置信水平。
返回
y_tilde
: 已调整的一致性预测。*
source
TopDownSparse.fit_predict
*Top Down 一致性调整方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
tags
: 每个键是一个层级,每个值是其 S
索引。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。对于 forecast_proportions
方法是可选的。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内预测值。对于 forecast_proportions
方法是可选的。
sigmah
: 条件边际分布的估计标准差。
level
: float list 0-100,预测区间的置信水平。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
返回
y_tilde
: 使用 Top Down 方法调整的一致性预测 y_hat。*
source
TopDownSparse.sample
*对概率一致性分布进行采样。
从概率一致性分布生成 n 个样本。该方法使用拟合的均值和概率一致性调整器,这些调整器由一致性调整器实例化期间选择的 intervals_method
定义。目前可用:normality
, bootstrap
, permbu
。
参数
num_samples
: int,从一致性分布生成的样本数量。
返回
samples
: 大小为 (num_series
, horizon
, num_samples
) 的一致性样本。*
3. 中间向外
source
MiddleOut
*Middle Out 一致性调整类。
此方法仅适用于严格的分层结构。它将基础预测锚定在中间层级。基础预测之上的层级使用自下而上方法,而之下的层级使用自上而下方法。
参数
middle_level
: 中间层级。
top_down_method
: forecast_proportions
, average_proportions
和 proportion_averages
之一。
source
MiddleOut.fit
source
MiddleOut.predict
*使用一致性调整器进行预测。
使用拟合的均值和概率一致性调整器进行预测。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
level
: float list 0-100,预测区间的置信水平。
返回
y_tilde
: 已调整的一致性预测。*
source
MiddleOut.fit_predict
*Middle Out 一致性调整方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
tags
: 每个键是一个层级,每个值是其 S
索引。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。仅用于 forecast_proportions
level
: 不支持。
intervals_method
: 不支持。
返回
y_tilde
: 使用 Middle Out 方法调整的一致性预测 y_hat。*
source
MiddleOut.sample
*对概率一致性分布进行采样。
从概率一致性分布生成 n 个样本。该方法使用拟合的均值和概率一致性调整器,这些调整器由一致性调整器实例化期间选择的 intervals_method
定义。目前可用:normality
, bootstrap
, permbu
。
参数
num_samples
: int,从一致性分布生成的样本数量。
返回
samples
: 大小为 (num_series
, horizon
, num_samples
) 的一致性样本。*
source
MiddleOutSparse
*MiddleOutSparse 一致性调整类。
这是使用稀疏矩阵方法实现中间向外一致性调整。它在具有许多时间序列的数据集上工作效率更高。
更多细节请参阅父类。*
source
MiddleOutSparse.fit
source
MiddleOutSparse.predict
*使用一致性调整器进行预测。
使用拟合的均值和概率一致性调整器进行预测。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
level
: float list 0-100,预测区间的置信水平。
返回
y_tilde
: 已调整的一致性预测。*
source
MiddleOutSparse.fit_predict
*Middle Out 一致性调整方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
tags
: 每个键是一个层级,每个值是其 S
索引。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。仅用于 forecast_proportions
level
: 不支持。
intervals_method
: 不支持。
返回
y_tilde
: 使用 Middle Out 方法调整的一致性预测 y_hat。*
source
MiddleOutSparse.sample
*对概率一致性分布进行采样。
从概率一致性分布生成 n 个样本。该方法使用拟合的均值和概率一致性调整器,这些调整器由一致性调整器实例化期间选择的 intervals_method
定义。目前可用:normality
, bootstrap
, permbu
。
参数
num_samples
: int,从一致性分布生成的样本数量。
返回
samples
: 大小为 (num_series
, horizon
, num_samples
) 的一致性样本。*
4. Min-Trace
source
MinTrace
*MinTrace 一致性调整类。
Wickramasuriya 等人提出的此一致性调整算法依赖于广义最小二乘估计量和一致性误差 的协方差矩阵估计量。Min Trace 算法在无偏假设下最小化一致性预测的平方误差;其解具有封闭形式。
参数
method
: str,可以是 ols
, wls_struct
, wls_var
, mint_shrink
, mint_cov
之一。
nonnegative
: bool,调整后预测是否应为非负数?
mint_shr_ridge
: float=2e-8,MinTrace-shr 协方差估计器的数值保护岭值。
num_threads
: int=1,用于解决优化问题(当 nonnegative=True 时)的线程数。
参考文献
- Wickramasuriya, S. L., Athanasopoulos, G., & Hyndman, R. J. (2019). “Optimal forecast reconciliation for hierarchical and grouped time series through trace minimization”. Journal of the American Statistical Association, 114 , 804–819. doi:10.1080/01621459.2018.1448825.. - Wickramasuriya, S.L., Turlach, B.A. & Hyndman, R.J. (2020). “Optimal non-negative forecast reconciliation”. Stat Comput 30, 1167–1182, https://doi.org/10.1007/s11222-020-09930-0.*
source
MinTrace.fit
*MinTrace Fit 方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。仅用于 “wls_var”, “mint_cov”, “mint_shrink”。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内预测值。仅用于 “wls_var”, “mint_cov”, “mint_shrink”
sigmah
: 条件边际分布的估计标准差。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
tags
: 每个键是一个层级,每个值是其 S
索引。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
返回
self
: object,已拟合的一致性调整器。*
source
MinTrace.predict
*使用一致性调整器进行预测。
使用拟合的均值和概率一致性调整器进行预测。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
level
: float list 0-100,预测区间的置信水平。
返回
y_tilde
: 已调整的一致性预测。*
source
MinTrace.fit_predict
*MinTrace 一致性调整方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。仅由 wls_var
, mint_cov
, mint_shrink
使用。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内拟合值。仅由 wls_var
, mint_cov
, mint_shrink
使用。
sigmah
: 条件边际分布的估计标准差。
level
: float list 0-100,预测区间的置信水平。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
tags
: 每个键是一个层级,每个值是其 S
索引。
返回
y_tilde
: 使用 MinTrace 方法调整的一致性预测 y_hat。*
source
MinTrace.sample
*对概率一致性分布进行采样。
从概率一致性分布生成 n 个样本。该方法使用拟合的均值和概率一致性调整器,这些调整器由一致性调整器实例化期间选择的 intervals_method
定义。目前可用:normality
, bootstrap
, permbu
。
参数
num_samples
: int,从一致性分布生成的样本数量。
返回
samples
: 大小为 (num_series
, horizon
, num_samples
) 的一致性样本。*
source
MinTraceSparse
*MinTraceSparse 一致性调整类。
这是使用稀疏矩阵实现的 OLS 和 WLS 估计量。它不能保证给出与非稀疏版本相同的结果,但在具有许多时间序列的数据集上效率更高。
更多细节请参阅父类。
参数
method
: str,可以是 ols
, wls_struct
或 wls_var
之一。
nonnegative
: bool,返回非负的一致性调整预测。
num_threads
: int,执行非负二次规划调用的线程数。
qp
: bool,使用二次规划方法实现非负约束。将其设置为 True 通常会获得更好的结果,但计算成本更高。
*
source
MinTraceSparse.fit
*MinTraceSparse Fit 方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。仅用于 “wls_var”。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内预测值。仅用于 “wls_var”
sigmah
: 条件边际分布的估计标准差。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
tags
: 每个键是一个层级,每个值是其 S
索引。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
返回
self
: object,已拟合的一致性调整器。*
source
MinTraceSparse.predict
*使用一致性调整器进行预测。
使用拟合的均值和概率一致性调整器进行预测。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
level
: float list 0-100,预测区间的置信水平。
返回
y_tilde
: 已调整的一致性预测。*
source
MinTraceSparse.fit_predict
*MinTrace 一致性调整方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。仅由 wls_var
, mint_cov
, mint_shrink
使用。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内拟合值。仅由 wls_var
, mint_cov
, mint_shrink
使用。
sigmah
: 条件边际分布的估计标准差。
level
: float list 0-100,预测区间的置信水平。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
tags
: 每个键是一个层级,每个值是其 S
索引。
返回
y_tilde
: 使用 MinTrace 方法调整的一致性预测 y_hat。*
source
MinTraceSparse.sample
*对概率一致性分布进行采样。
从概率一致性分布生成 n 个样本。该方法使用拟合的均值和概率一致性调整器,这些调整器由一致性调整器实例化期间选择的 intervals_method
定义。目前可用:normality
, bootstrap
, permbu
。
参数
num_samples
: int,从一致性分布生成的样本数量。
返回
samples
: 大小为 (num_series
, horizon
, num_samples
) 的一致性样本。*
5. 最优组合
source
OptimalCombination
*最优组合一致性调整类。
此一致性调整算法由 Hyndman 等人于 2011 年提出,该方法使用广义最小二乘估计量并利用一致性误差的协方差矩阵。考虑基础预测的协方差 ,此方法的 矩阵定义为: 其中 表示方差伪逆。后来证明此方法与 MinTrace
变体等效。
参数
method
: str,允许的最优组合方法:‘ols’, ‘wls_struct’。
nonnegative
: bool,调整后预测是否应为非负数?
参考文献
- Rob J. Hyndman, Roman A. Ahmed, George Athanasopoulos, Han Lin Shang (2010). “Optimal Combination Forecasts for Hierarchical Time Series”..
- Shanika L. Wickramasuriya, George Athanasopoulos and Rob J. Hyndman (2010). “Optimal Combination Forecasts for Hierarchical Time Series”.. - Wickramasuriya, S.L., Turlach, B.A. & Hyndman, R.J. (2020). “Optimal non-negative forecast reconciliation”. Stat Comput 30, 1167–1182, https://doi.org/10.1007/s11222-020-09930-0.*
source
OptimalCombination.fit
*MinTrace Fit 方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。仅用于 “wls_var”, “mint_cov”, “mint_shrink”。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内预测值。仅用于 “wls_var”, “mint_cov”, “mint_shrink”
sigmah
: 条件边际分布的估计标准差。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
tags
: 每个键是一个层级,每个值是其 S
索引。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
返回
self
: object,已拟合的一致性调整器。*
source
OptimalCombination.predict
*使用一致性调整器进行预测。
使用拟合的均值和概率一致性调整器进行预测。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
level
: float list 0-100,预测区间的置信水平。
返回
y_tilde
: 已调整的一致性预测。*
source
OptimalCombination.fit_predict
*MinTrace 一致性调整方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
y_insample
: 大小为 (base
, insample_size
) 的样本内值。仅由 wls_var
, mint_cov
, mint_shrink
使用。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内拟合值。仅由 wls_var
, mint_cov
, mint_shrink
使用。
sigmah
: 条件边际分布的估计标准差。
level
: float list 0-100,预测区间的置信水平。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
tags
: 每个键是一个层级,每个值是其 S
索引。
返回
y_tilde
: 使用 MinTrace 方法调整的一致性预测 y_hat。*
source
OptimalCombination.sample
*对概率一致性分布进行采样。
从概率一致性分布生成 n 个样本。该方法使用拟合的均值和概率一致性调整器,这些调整器由一致性调整器实例化期间选择的 intervals_method
定义。目前可用:normality
, bootstrap
, permbu
。
参数
num_samples
: int,从一致性分布生成的样本数量。
返回
samples
: 大小为 (num_series
, horizon
, num_samples
) 的一致性样本。*
6. 经验风险最小化
source
ERM
*最优组合一致性调整类。
经验风险最小化一致性调整策略放宽了先前 MinT 等一致性调整方法的无偏假设,并优化调整后预测与验证数据之间的平方误差以获得最优一致性调整矩阵 P。
对于 的精确解 (method='closed'
) 遵循以下表达式:
替代的 Lasso 正则化 解 (method='reg_bu'
) 在验证数据观测值有限或精确解数值稳定性低时非常有用。
参数
method
: str,可以是 closed
, reg
和 reg_bu
之一。
lambda_reg
: float,用于 reg
和 reg_bu
的 l1 正则化项。
source
ERM.fit
*ERM Fit 方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
y_insample
: 大小为 (base
, insample_size
) 的训练值。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内训练预测值。
sigmah
: 条件边际分布的估计标准差。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
tags
: 每个键是一个层级,每个值是其 S
索引。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
返回
self
: object,已拟合的一致性调整器。*
source
ERM.predict
*使用一致性调整器进行预测。
使用拟合的均值和概率一致性调整器进行预测。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
level
: float list 0-100,预测区间的置信水平。
返回
y_tilde
: 已调整的一致性预测。*
source
ERM.fit_predict
*ERM 一致性调整方法。
参数
S
: 大小为 (base
, bottom
) 的求和矩阵。
y_hat
: 大小为 (base
, horizon
) 的预测值。
idx_bottom
: 对应于 S
底层的索引,大小为 (bottom
)。
y_insample
: 大小为 (base
, insample_size
) 的训练值。
y_hat_insample
: 大小为 (base
, insample_size
) 的样本内训练预测值。
sigmah
: 条件边际分布的估计标准差。
level
: float list 0-100,预测区间的置信水平。
intervals_method
: 预测区间的采样器,可以是 normality
, bootstrap
, permbu
之一。
num_samples
: 概率一致性分布的样本数量。
seed
: 可复现性的种子。
tags
: 每个键是一个层级,每个值是其 S
索引。
返回
y_tilde
: 使用 ERM 方法调整的一致性预测 y_hat。*
source
ERM.sample
*对概率一致性分布进行采样。
从概率一致性分布生成 n 个样本。该方法使用拟合的均值和概率一致性调整器,这些调整器由一致性调整器实例化期间选择的 intervals_method
定义。目前可用:normality
, bootstrap
, permbu
。
参数
num_samples
: int,从一致性分布生成的样本数量。
返回
samples
: 大小为 (num_series
, horizon
, num_samples
) 的一致性样本。*
参考文献
一般一致性调整
- Orcutt, G.H., Watts, H.W., & Edwards, J.B.(1968). Data aggregation and information loss. The American Economic Review, 58 , 773(787).
- Disaggregation methods to expedite product line forecasting. Journal of Forecasting, 9 , 233–254. doi:10.1002/for.3980090304.
- An investigation of aggregate variable time series forecast strategies with specific subaggregate time series statistical correlation. Computers and Operations Research, 26 , 1133–1149. doi:10.1016/S0305-0548(99)00017-9.
- 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 J. Hyndman, Roman A. Ahmed, George Athanasopoulos, Han Lin Shang. “Optimal Combination Forecasts for Hierarchical Time Series” (2010).
- Shanika L. Wickramasuriya, George Athanasopoulos and Rob J. Hyndman. “Optimal Combination Forecasts for Hierarchical Time Series” (2010).
- Ben Taieb, S., & Koo, B. (2019). Regularized regression for hierarchical forecasting without unbiasedness conditions. In Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining KDD ’19 (p. 1337-1347). New York, NY, USA: Association for Computing Machinery.
分层概率一致性预测
- Puwasala Gamakumara 博士论文。Monash University, Econometrics and Business Statistics. “Probabilistic Forecast Reconciliation”.
- Taieb, Souhaib Ben and Taylor, James W and Hyndman, Rob J. (2017). Coherent probabilistic forecasts for hierarchical time series. International conference on machine learning ICML.