10.7 最优调和方法
如果我们能找到一个 \(\bm{P}\) 矩阵,使得它满足最小化一组一致预测的预测误差,那么就能找到最优预测调和。我们在此仅提供该方法的简要介绍, Wickramasuriya et al. (2019) 中提供了更多的详细信息。
假设我们使用公式 (10.6) 生成一致预测,为方便起见,这里重复写出: \[ \tilde{\bm{y}}_h=\bm{S}\bm{P}\hat{\bm{y}}_h。 \]
首先,我们要确保我们得到的预测是无偏的。如果基本预测 \(\hat{\bm{y}}_h\) 是无偏的,那么只要 \(\bm{S}\bm{P}\bm{S}=\bm{S}\) (Hyndman et al., 2011), 一致预测 \(\tilde{\bm{y}}_h\) 也将是无偏的。这对矩阵 \(\bm{P}\) 有一定约束。有趣的是,没有自上而下的方法满足这个约束,因此所有自上而下的方法都是有偏的。
接下来我们需要找出预测误差。 Wickramasuriya et al. (2019) 显示 \(h\) 步向前一致预测误差的方差-协方差矩阵由下式给出: \[\begin{equation*} \bm{V}_h = \text{Var}[\bm{y}_{T+h}-\tilde{\bm{y}}_h]=\bm{S}\bm{P}\bm{W}_h\bm{P}'\bm{S}' \end{equation*}\] 其中 \(\bm{W}_h=\text{Var}[(\bm{y}_{T+h}-\hat{\bm{y}}_h)]\) 是对应的基本预测误差的方差-协方差矩阵。
我们的目标是找到一个矩阵 \(\bm{P}\),使得它可以最小化一致预测的误差方差。这些误差方差在矩阵 \(\bm{V}_h\) 的对角线上,因此所有误差方差的总和由矩阵 \(\bm{V}_h\) 的迹给出。 Wickramasuriya et al. (2019) 表明满足最小化 \(\bm{V}_h\) 的迹的矩阵 \(\bm{P}\),即 \(\bm{S}\bm{P}\bm{S}=\bm{S}\),由下式给出 \[ \bm{P}=(\bm{S}'\bm{W}_h^{-1}\bm{S})^{-1}\bm{S}'\bm{W}_h^{-1}。 \] 因此,最优调和预测由下式给出 \[\begin{equation} \tag{10.8} \tilde{\bm{y}}_h=\bm{S}(\bm{S}'\bm{W}_h^{-1}\bm{S})^{-1}\bm{S}'\bm{W}_h^{-1}\hat{\bm{y}}_h。 \end{equation}\] 我们将它称为“MinT”(或最小迹)估计量。
为了在实践中使用它,我们需要估计 \(\bm{W}_h\),即预先确定的 \(h\) 步向前基础预测的误差方差。这可能很困难,因此我们提供了三种简化的近似值,这些近似值已被证明在模拟和实际中都十分有效。
为所有 \(h\) 设置 \(\bm{W}_h=k_h\bm{I}\),其中\(k_{h} > 0\)。19这是最简单的假设,它意味着 \(\bm{P}\) 与数据独立,因此大量减少了计算量。然而,缺点是该假设没有考虑结构水平之间的规模差异,也没有考虑不同序列之间的关系。这种方法是通过在
forecast()
函数中设置method = "comb"
和weights = "ols"
实现的。这里的权重是指OLS(普通最小二乘),因为在 (10.8) 中设置 \(\bm{W}_h=k_h\bm{I}\) 给出了我们在 5.7 节中引入的最小二乘估计量,其中 \(\bm{X}=\bm{S}\), \(\bm{y}=\hat{\bm{y}}\)。
为所有 \(h\) 设置 \(\bm{W}_{h} = k_{h}\text{diag}(\hat{\bm{W}}_{1})\),其中 \(k_{h} > 0\), \[ \hat{\bm{W}}_{1} = \frac{1}{T}\sum_{t=1}^{T}\bm{e}_{t}\bm{e}_{t}', \] 和 \(\bm{e}_{t}\) 是模型残差的 \(n\) 维向量,它生成的基本预测以与数据相同的顺序堆叠。该方法是通过设置参数
method = "comb"
和weights = "wls"
来实现的。该设定使用残差的方差来对基本预测进行标准化,因此将其称为使用 方差标准化 的WLS(加权最小二乘)估计。
为所有 \(h\) 设置 \(\bm{W}_{h}=k_{h}\bm{\Lambda}\),其中 \(k_{h} > 0\), \(\bm{\Lambda}=\text{diag}(\bm{S}\bm{1})\),且 \(\bm{1}\) 是维度为 \(n\) 的单位向量。此规定假设底层基本预测的误差各具有方差 \(k_{h}\) 且在节点之间不相关。因此,对角矩阵 \(\bm{\Lambda}\) 的每个元素都包含对每个节点有贡献的预测误差方差的数量。这个估计量仅取决于聚合的结构,而不取决于实际数据。因此,它被称为 结构标准化。在残差不可用的情况下,使用结构标准化设定特别有效,因此不能应用方差标准化;例如,在基础预测由判断性预测(4 章)产生的情况下。这种方法是通过设置参数
method = "comb"
和weights = "nseries
来实现的,为所有 \(h\) 设置 \(\bm{W}_h = k_h \bm{W}_1\),其中 \(k_h>0\)。这里我们只假设误差协方差矩阵互相成比例,我们直接估计完整的一步协方差矩阵 \(\bm{W}_h = k_h \bm{W}_1\)。最明显和最简单的方法是使用样本协方差。这是通过设置参数
method = "comb"
,weights = "mint"
和covariance = "sam"
来实现的。但是,对于底层序列的数量 \(m\) 与序列的长度 \(T\) 相差较大的情况,这不是一个好的估计量。相反,我们使用收缩估计量将样本协方差收缩成一个对角矩阵。这是通过设置参数
method = "comb"
,weights = "mint"
和covariance = "shr"
来实现的。
总之,与任何其他现有方法不同,最优调和预测是通过使用分层结构或分组结构内所有可用的信息生成的。这是非常重要的,因为特定的聚合级别或分组可以揭示出用户感兴趣的和对建模很重要的数据特征。这些特征可能完全隐藏或在其他级别不易识别。
例如,考虑在 10.1 节中引入的澳大利亚旅游数据,其中分层结构是根据一个国家按地理划分为州和地区的。一些沿海地区将的夏季主要目的地,而一些山区可能是冬季目的地。如果聚合在一起,这些差异将在国家层面变得不明显。
示例:预测澳大利亚监狱人口
如 10.2 节所述,我们计算了澳大利亚监狱人口的预测值。使用 forecast()
函数的默认参数,我们通过最优调和方法使用WLS估计量和方差标准化来计算一致预测。
<- forecast(prison.gts) prisonfc
要获得每个聚合级别的预测值,我们可以使用 aggts()
函数。例如,为了计算监狱总人口和单因素分组(州、性别和法律地位)的预测值,我们使用:
<- aggts(prisonfc, levels=0:3) fcsts
使用下列代码画简单的图
<- aggts(prison.gts, levels=0:3) groups
autoplot(fcsts) + autolayer(groups)
使用以下代码可以画一个更好的图。结果如图 10.8 所示。垂直线代表预测周期的开始。
<- ts(rbind(groups, fcsts),
prisonfc start=start(groups), frequency=4)
<- autoplot(prisonfc[,"Total"]) + ggtitle("澳大利亚监狱人口") +
p1 xlab("年份") + ylab("囚犯总数 ('000)") +
geom_vline(xintercept=2017) +
theme(text = element_text(family = "STHeiti")) +
theme(plot.title = element_text(hjust = 0.5))
<- sample(scales::hue_pal(h=c(15,375),
cols c=100,l=65,h.start=0,direction = 1)(NCOL(groups)))
<- as_tibble(prisonfc[,-1]) %>%
p2 gather(Series) %>%
mutate(Date = rep(time(prisonfc), NCOL(prisonfc)-1),
Group = str_extract(Series, "([A-Za-z ]*)")) %>%
ggplot(aes(x=Date, y=value, group=Series, color=Series)) +
geom_line() +
xlab("年份") + ylab("囚犯总数 ('000)") +
scale_color_manual(values = cols) +
facet_grid(. ~ Group, scales="free_y") +
scale_x_continuous(breaks=seq(2006,2018,by=2)) +
theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
geom_vline(xintercept=2017) +
theme(text = element_text(family = "STHeiti")) +
theme(plot.title = element_text(hjust = 0.5))
::grid.arrange(p1, p2, ncol=1) gridExtra

图 10.8: 澳大利亚成人监狱总人口和分别按州、法律地位和性别分类的人口的一致预测。
类似的代码可用于生成图 10.9。左侧子图绘制了州与性别的交互的一致预测。右侧子图显示了底层系列的预测。

图 10.9: 澳大利亚成年监狱人口按所有属性的交互的分组的一致预测。
accuracy()
命令对于评估分层结构或分组结构的预测准确性非常有用。下表总结了自下而上和最优调和方法的准确性,将2015年第一季度至2016年第四季度作为测试期。
结果表明,最优调和方法可以生成更准确的预测,尤其是对于顶级序列。总的来说,我们发现,由于最优调和方法使用了结构中所有级别的信息,因此与使用有限信息的其他传统可选方法相比,它能生成更准确的一致预测。
MAPE | MASE | MAPE | MASE | |
---|---|---|---|---|
总计 | 5.32 | 1.84 | 3.08 | 1.06 |
州 | 7.59 | 1.88 | 7.62 | 1.85 |
法律地位 | 6.40 | 1.76 | 4.32 | 1.14 |
性别 | 8.62 | 2.68 | 8.72 | 2.74 |
底层 | 15.82 | 2.23 | 15.25 | 2.16 |
所有序列 | 12.41 | 2.16 | 12.02 | 2.08 |