10.3 自下而上的方法

自下而上的方法是一种简单的生成一致的预测的方法。这种方法包括首先在底层生成每个序列的预测,然后将这些预测相加来得到结构中所有序列的预测。

例如,对于图 10.1 中的层次结构,我们首先为每个底层序列生成 \(h\) 步向前预测: \[ \yhat{AA}{h},~~\yhat{AB}{h},~~\yhat{AC}{h},~~ \yhat{BA}{h}~~\text{and}~~\yhat{BB}{h}。 \] (为简洁起见,我们简化了之前使用的 \(\hat{y}_{T+h|T}\) 的表示法。)将这些加总,我们得到该序列其他部分的 \(h\) 步向前一致预测值: \[\begin{align*} \tilde{y}_{h} & =\yhat{AA}{h}+\yhat{AB}{h}+\yhat{AC}{h}+\yhat{BA}{h}+\yhat{BB}{h}, \\ \ytilde{A}{h} & = \yhat{AA}{h}+\yhat{AB}{h}+\yhat{AC}{h}, \\ \text{and}\quad \ytilde{B}{h} &= \yhat{BA}{h}+\yhat{BB}{h}。 \end{align*}\] (在本章中,我们将使用“波浪线”符号来表示一致的预测。) 如公式 (10.3) 所示,我们可以在这里使用求和矩阵并写作 \[ \begin{bmatrix} \tilde{y}_{h} \\ \ytilde{A}{h} \\ \ytilde{B}{h} \\ \ytilde{AA}{h} \\ \ytilde{AB}{h} \\ \ytilde{AC}{h} \\ \ytilde{BA}{h} \\ \ytilde{BB}{h} \end{bmatrix} = \begin{bmatrix} 1 & 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 & 1 \\ 1 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} \yhat{AA}{h} \\ \yhat{AB}{h} \\ \yhat{AC}{h} \\ \yhat{BA}{h} \\ \yhat{BB}{h} \end{bmatrix}。 \]

使用更简洁的表示法,自下而上的方法可以表示为 \[ \tilde{\bm{y}}_{h}=\bm{S}\hat{\bm{b}}_{h}, \] 其中 \(\tilde{\bm{y}_t}\) 是一致的 \(h\) 步向前预测的一个 \(n\) 维向量, \(\hat{\bm{b}}_{h}\) 是一个每个底层序列的 \(h\) 步向前预测的 \(m\) 维向量。

这种方法的一个优点是我们在结构的底层进行预测,因此不会因聚合而丢失信息。另一方面,底层数据可能有很多噪声,对其模型和预测更具挑战性。

R中的hts包

可以使用 forecast() 函数生成预测,该函数应用于由 hts()gts() 生成的对象。 hts 包有三个内置选项来生成预测:ETS模型、ARIMA模型或随机游走;这些是由 fmethod 参数控制的。它还使用几种不同的方法来生成一致的预测,这由 method 参数控制。

例如,假设我们想要对prison数据应用ARIMA模型并进行自下而上的预测,那么我们会用

forecast(prison.gts, method="bu", fmethod="arima")

这样是把 auto.arima() 函数应用到我们时间序列集合中的每个底层序列。类似地,如果使用 fmethod="ets",则将使用ETS模型。