10.1 分层时间序列

10.1 显示了 \(K=2\) 层的分层结构。在分层结构的顶部(我们称之为级别0)是“总计”,即数据的最高聚合级别。总计序列的第 \(t\) 个观察值由 \(y_t\) 表示, 其中 \(t=1,\dots,T\)。总计序列在第1级分解为两个序列,而该序列又分别在分层结构的底层分为三个和两个序列。在顶层以下,我们使用 \(\y_{j,t}\) 来表示对应于节点 \(j\) 的序列的第 \(t\) 个观测值。例如, \(y_{A,t}\) 表示对应于第1级的节点A的序列的第 \(t\) 个观测值, \(y_{AB,t}\) 表示对应于第2级的节点AB的序列的第 \(t\) 个观测值,依此类推。

两级分层树图。

图 10.1: 两级分层树图。

在这个小例子中,分层结构中的序列总数是 \(n=1+2+5=8\),而底层的序列数是 \(m=5\)。注意,所有分层结构中的 \(n>m\)

对于任何时间 \(t\),分层结构底层的观测值加起来将等于上层序列的观测值。例如, \[\begin{equation} y_{t}=\y{AA}{t}+\y{AB}{t}+\y{AC}{t}+\y{BA}{t}+\y{BB}{t} \tag{10.1} \end{equation}\]\[\begin{equation} \y{A}{t}=\y{AA}{t}+\y{AB}{t}+\y{AC}{t}\quad \text{and} \quad \y{B}{t}=\y{BA}{t}+\y{BB}{t}。 \tag{10.2} \end{equation}\](10.2) 代入 (10.1),我们也能得到 \(y_{t}=\y{A}{t}+\y{B}{t}\)。这些方程可以被认为是聚合约束或求和等式,并且可以使用矩阵表示法更有效地表示。我们构造一个 \(n\times m\) 矩阵 \(\bm{S}\)(称为“求和矩阵”),它决定了底层序列的聚合方式。

对于图 10.1 中的分层结构,我们可以写作 \[ \begin{bmatrix} y_{t} \\ \y{A}{t} \\ \y{B}{t} \\ \y{AA}{t} \\ \y{AB}{t} \\ \y{AC}{t} \\ \y{BA}{t} \\ \y{BB}{t} \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} \y{AA}{t} \\ \y{AB}{t} \\ \y{AC}{t} \\ \y{BA}{t} \\ \y{BB}{t} \end{bmatrix} \] 或者更简洁的表示法 \[\begin{equation} \bm{y}_t=\bm{S}\bm{b}_{t}, \tag{10.3} \end{equation}\] 其中 \(\bm{y}_t\) 是层次结构中 \(t\) 时刻分层结构中所有观测值构成的 \(n\) 维向量, \(\bm{S}\) 是求和矩阵, \(\bm{b}_{t}\)\(t\) 时刻分层结构的底层所有观察值构成的 \(m\) 维向量。注意,求和矩阵 \(\bm{S}\) 的第一行表示上面的公式 (10.1),第二行和第三行表示公式 (10.2)。这三行下面的行包含一个 \(m\) 维的单位矩阵 \(\bm{I}_m\),这样在每个底层观测值的等式左右两边都相等。

示例:澳大利亚旅游层次

澳大利亚分为八个地理区域(一些称为州,另一些称为地区),每个区域都有自己的政府和一些经济和行政自治机构。这些中的每一个可以按兴趣进一步细分为更小的部分, 称为区。商业规划者和旅游部门对整个澳大利亚,各州和地区以及各区的预测很感兴趣。在这个例子中,我们主要关注国内旅游的季度需求,以澳大利亚人出门在外的过夜数来衡量。为了简化我们的分析,我们将两个地区和塔斯马尼亚州合并为一个“其他”州。所以我们有六个州:新南威尔士州(NSW),昆士兰州(QLD),南澳大利亚州(SAU),维多利亚州(VIC),西澳大利亚州(WAU)和其他州(OTH)。对于其中的每一个州,我们考虑以下这些区的游客过夜数。

NSW 大都会(NSWMetro),北海岸(NSWNthCo),南海岸(NSWSthCo),南部内陆(NSWSthIn),北部内陆(NSWNthIn)
QLD 大都会(QLDMetro),中部(QLDCntrl),北海岸(QLDNthCo)
SAU 大都会(SAUMetro),海岸(SAUCoast),内陆(SAUInner)
VIC 大都会(VICMetro),西海岸(VICWstCo),东海岸(VICEstCo),内陆(VICInner)
WAU 大都会(WAUMetro),海岸(WAUCoast),内陆(WAUInner)
OTH 大都会(OTHMetro),非大都会(OTHNoMet)

我们考虑新南威尔士州的五个区域,维多利亚州的四个区域以及昆士兰州,南澳大利亚州和西澳大利亚州的三个区域。请注意,大都会区域包含首府城市和周边地区。有关这些地理区域的更多详细信息,请参阅 Wickramasuriya, Athanasopoulos, & Hyndman (2019) 中的附录C。

要创建一个分层时间序列,我们使用 hts() 函数,如下面的代码所示。该函数需要两个输入值:底层时间序列和有关分层结构的信息。 visnights 是一个包含底层序列的时间序列矩阵。有几种方法可以输入层次结构。在这种情况下,我们使用 characters 参数。 visnights 的每个列名称的前三个字符包含了分层结构的第一级(州)的类别,接下来的五个字符包含了底层类别(区)。

library(hts)
tourism.hts <- hts(visnights, characters = c(3, 5))
tourism.hts %>% aggts(levels=0:1) %>%
  autoplot(facet=TRUE) +
  xlab("年份") + ylab("百万") +
  ggtitle("游客过夜数")+
  theme(text = element_text(family = "STHeiti"))+
  theme(plot.title = element_text(hjust = 0.5))
1998年第一季度到2016年第四季度澳大利亚国内游客过夜数按州分类情况。

图 10.2: 1998年第一季度到2016年第四季度澳大利亚国内游客过夜数按州分类情况。

10.2 中的上半部分显示了整个澳大利亚的游客过夜总数,而下半部分显示了按州分列的游客过夜数。这些揭示了国家总体水平以及每个州的第一级分类下的多样化和丰富的动态。 aggts() 函数可以从 hts 对象中提取任何分类级别的时间序列。

10.3 显示了底层的时间序列,即每个区的访客过夜数。这帮助我们对每个区不同的个人动态进行可视化,并有助于识别独特和重要的时间序列。例如,注意到西澳大利亚州沿海地区的数据在过去几年中有显著增长。

library(tidyverse)
cols <- sample(scales::hue_pal(h=c(15,375),
          c=100,l=65,h.start=0,direction = 1)(NCOL(visnights)))
as_tibble(visnights) %>%
  gather(Zone) %>%
  mutate(Date = rep(time(visnights), NCOL(visnights)),
         State = str_sub(Zone,1,3)) %>%
  ggplot(aes(x=Date, y=value, group=Zone, color=Zone)) +
    geom_line() +
    facet_grid(State~., scales="free_y") +
    xlab("年份") + ylab("百万") +
    ggtitle("按区分类的游客过夜数") +
    scale_color_manual(values = cols) +
  theme(text = element_text(family = "STHeiti")) +
  theme(plot.title = element_text(hjust = 0.5))
1998年第一季度到2016年第四季度澳大利亚国内游客过夜数按区分类情况。

图 10.3: 1998年第一季度到2016年第四季度澳大利亚国内游客过夜数按区分类情况。

为了生成这个数字,我们使用 tidyverse 中的各种函数。详细信息超出了本书的范围,但有很多很好的在线资源可供学习如何使用这些软件包。

参考文献

Wickramasuriya, S. L., Athanasopoulos, G., & Hyndman, R. J. (2019). Optimal forecast reconciliation for hierarchical and grouped time series through trace minimization. J American Statistical Association, 114(526), 804–819. https://robjhyndman.com/publications/mint/