10.2 分组时间序列

分组时间序列比分层时间序列有更通用的聚合结构。对于分组的时间序列,结构不会以独特的分层方式自然地分类,并且通常分类的因素都是嵌套和交叉的。例如,我们可以通过旅行目的(例如度假,公务等。)进一步对澳大利亚旅游数据的所有地理级别再分类。因此,我们可以考虑按照旅行目的来对整个澳大利亚,每个州以及每个区来划分游客过夜数。然后我们将结构描述为与地理层次“交叉”的旅行目的。

10.4 显示了 \(K=2\) 级分组结构。在分组结构的顶部是总计,这是数据的最高聚合级别,也由 \(y_t\) 表示。总计可以按属性(A,B)分成序列 \(\y{A}{t}\)\(\y{B}{t}\),或者通过属性(X,Y)分成序列 \(\y{X}{t}\)\(\y{Y}{t}\)。在底层,数据按两个属性分类。

两级分组结构的替代表示。

图 10.4: 两级分组结构的替代表示。

这个例子表明分组结构有可替代的聚合路径。对于任意时间 \(t\),与层次结构一样, \[\begin{equation*} y_{t}=\y{AX}{t}+\y{AY}{t}+\y{BX}{t}+\y{BY}{t}。 \end{equation*}\] 然而,对于分组结构的第一级, \[\begin{equation} \y{A}{t}=\y{AX}{t}+\y{AY}{t}\quad \quad \y{B}{t}=\y{BX}{t}+\y{BY}{t} \tag{10.4} \end{equation}\] but also \[\begin{equation} \y{X}{t}=\y{AX}{t}+\y{BX}{t}\quad \quad \y{Y}{t}=\y{AY}{t}+\y{BY}{t} \tag{10.5}。 \end{equation}\]

这些等式可以再次由 \(n\times m\) 的求和矩阵 \(\bm{S}\) 表示。序列总数为 \(n=9\),底部序列数为 \(m=4\)。对于图 10.4 中的分组结构,我们写作 \[ \begin{bmatrix} y_{t} \\ \y{A}{t} \\ \y{B}{t} \\ \y{X}{t} \\ \y{Y}{t} \\ \y{AX}{t} \\ \y{AY}{t} \\ \y{BX}{t} \\ \y{BY}{t} \end{bmatrix} = \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 \\ 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & 1 \\ 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} \y{AX}{t} \\ \y{AY}{t} \\ \y{BX}{t} \\ \y{BY}{t} \end{bmatrix}, \]\[ \bm{y}_t=\bm{S}\bm{b}_{t}, \] 其中 \(\bm{S}\) 的第二行和第三行代表 (10.4),第四行和第五行代表 (10.5)

分组时间序列有时可以被认为是无唯一分层结构的分层时间序列,在这种意义上,序列被分组的顺序是不唯一的。

示例:澳大利亚监狱人口

10.5 的第一行显示了2005年第一季度至2016年第四季度澳大利亚的囚犯总数。这代表了分组结构中的顶级序列。其余的小组显示了监狱人口按(i)州18(ii)法律地位,无论囚犯是否已被判刑或受押等待判刑,以及(iii)性别进行分类的情况。在这个例子中,三个因子有交叉,但没有一个嵌套在其他因素中。

澳大利亚成人监狱总人口季度数据,按州、法律地位、性别分类结果。

图 10.5: 澳大利亚成人监狱总人口季度数据,按州、法律地位、性别分类结果。

要创建分组时间序列,我们使用 gts() 函数,如下所示。与 hts() 函数类似, gts() 函数需要输入底层时间序列和有关分组结构的信息。 prison 是一个包含底层时间序列的时间序列矩阵。有关分组结构的信息可以使用 characters 输入。(另一种方法是更明确地说明序列的标签并使用 groups 输入。)

prison.gts <- gts(prison/1e3, characters = c(3,1,9),
  gnames = c("State", "Gender", "Legal",
             "State*Gender", "State*Legal",
             "State*Gender*Legal"))

绘制主要组别的一种方法如下所示。

prison.gts %>% aggts(level=0:3) %>% autoplot()

但是通过增加一些工作量,我们可以使用以下代码构造图 10.5

p1 <- prison.gts %>% aggts(level=0) %>%
  autoplot() + ggtitle("澳大利亚监狱人口") +
    xlab("年份") + ylab("囚犯总人数 ('000)")
groups <- aggts(prison.gts, level=1:3)
cols <- sample(scales::hue_pal(h=c(15,375),
          c=100,l=65,h.start=0,direction = 1)(NCOL(groups)))
p2 <- as_tibble(groups) %>%
  gather(Series) %>%
  mutate(Date = rep(time(groups), NCOL(groups)),
         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,2016,by=2)) +
    theme(axis.text.x = element_text(angle = 90, hjust = 1))
gridExtra::grid.arrange(p1, p2, ncol=1)

可以类似地获得其他分组组合的图。图 10.6 显示了澳大利亚监狱人口一次按两种属性的所有可能组合分组的情况。上面一个子图显示了按州和法律地位分组的监狱人口,中间的子图显示了按州和性别分组的情况,下面的子图显示了按法律地位和性别的分组。

澳大利亚成人监狱人口按一对属性分组情况。

图 10.6: 澳大利亚成人监狱人口按一对属性分组情况。

10.7 显示了澳大利亚成年监狱人口按以下三个属性分组:州、法律地位和性别。这些组成了澳大利亚监狱人口分组结构的底层序列。

按州,法律地位和性别分组的澳大利亚成年监狱人口的底层时间序列。

图 10.7: 按州,法律地位和性别分组的澳大利亚成年监狱人口的底层时间序列。


  1. 澳大利亚包括八个地理区域,即六个州和两个地区:澳大利亚首都直辖区,新南威尔士州,北领地,昆士兰州,南澳大利亚州,塔斯马尼亚州,维多利亚州,西澳大利亚州。在这个例子中,我们考虑所有八个区域。↩︎