11.1 階層化時系列とグループ化時系列

階層化時系列

11.1は単純な階層構造を表しています。階層のトップにあるのは”Total”で、データの最も集計されたレベルです。Total系列の\(t\)番目の観測値を\(y_t\)、ただし\(t=1,\dots,T\)、と表します。Totalは2つの系列に分解され、それらは今度はそれぞれ、階層のボトムにある3つと2つの系列に分解されます。トップよりも下では、ノード\(j\)に該当する系列の\(t\)番目の観測値を\(y_{j,t}\)で表します。例えば、\(\y{A}{t}\)はノードAに該当する系列の\(t\)番目の観測値を表し、\(\y{AB}{t}\)はノードABに該当する系列の\(t\)番目の観測値を表す、といった具合です。

2レベルの階層ツリー図

図 11.1: 2レベルの階層ツリー図

この小さな例では、階層内の系列総数\(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{11.1} \end{equation}\] \[\begin{equation} \y{A}{t}=\y{AA}{t}+\y{AB}{t}+\y{AC}{t}\qquad \text{} \qquad \y{B}{t}=\y{BA}{t}+\y{BB}{t}。 \tag{11.2} \end{equation}\] (11.2)式を(11.1)式に代入すると、\(y_{t}=\y{A}{t}+\y{B}{t}\)にもなります。

事例: オーストラリア旅行の階層

オーストラリアは6つの州と2つの準州・特別地域に分かれており、それぞれが自身の政府を持ち、経済や行政である程度の自治を有しています。話を簡単にするために、州と準州・特別地域の両方を「州」と呼ぶことにします。これらの州のそれぞれは、図11.2と表11.1に示したようにさらに地域に分かれます。そうした地域は合計すると76個あります。企業の企画者や旅行に関する政府機関は、オーストラリア全国、州別、そして地域別の予測に興味があります。

オーストラリアの州と旅行地域

図 11.2: オーストラリアの州と旅行地域

表 11.1: オーストラリア旅行の地域
地域
Australian Capital Territory Canberra
New South Wales Blue Mountains, Capital Country, Central Coast, Central NSW, Hunter, New England North West, North Coast NSW, Outback NSW, Riverina, Snowy Mountains, South Coast, Sydney, The Murray.
Northern Territory Alice Springs, Barkly, Darwin, Kakadu Arnhem, Katherine Daly, Lasseter, MacDonnell.
Queensland Brisbane, Bundaberg, Central Queensland, Darling Downs, Fraser Coast, Gold Coast, Mackay, Northern Outback, Sunshine Coast, Tropical North Queensland, Whitsundays.
South Australia Adelaide, Adelaide Hills, Barossa, Clare Valley, Eyre Peninsula, Fleurieu Peninsula, Flinders Ranges and Outback, Kangaroo Island, Limestone Coast, Murraylands, Riverland, Yorke Peninsula.
Tasmania East Coast, Hobart and the South, Launceston Tamar and the North, North West, Wilderness West.
Victoria Ballarat, Bendigo Loddon, Central Highlands, Central Murray, Geelong and the Bellarine, Gippsland, Goulburn, Great Ocean Road, High Country, Lakes, Macedon, Mallee, Melbourne, Melbourne East, Murray East, Peninsula, Phillip Island, Spa Country, Upper Yarra, Western Grampians, Wimmera.
Western Australia Australia’s Coral Coast, Australia’s Golden Outback, Australia’s North West, Australia’s South West, Experience Perth.

tourismのtsibbleには、オーストラリア人が自宅を離れて宿泊する旅行数で測った、四半期の国内旅行需要のデータが入っています。キー変数StateRegionは州と地域の地理区分を、もう一つのキー変数Purposeは旅行目的を表しています。今は旅行目的を無視して、地理的階層だけを考えます。図表をより簡素にするために、Stateを略号にします。

tourism <- tsibble::tourism %>%
  mutate(
    State = recode(State,
                   `New South Wales` = "NSW",
                   `Northern Territory` = "NT",
                   `Queensland` = "QLD",
                   `South Australia` = "SA",
                   `Tasmania` = "TAS",
                   `Victoria` = "VIC",
                   `Western Australia` = "WA")
  )

aggregate_key()関数を使って、宿泊客数の階層化時系列を作り出せます。階層のボトムが地域、それを集計して州、さらに集計すると全国合計になる形です。入れ子構造に当たる階層化時系列は、親/子と指定することで作り出せます。

tourism_hts <- tourism %>%
  aggregate_key(State / Region, Trips = sum(Trips))
tourism_hts
#> # A tsibble: 6,800 x 4 [1Q]
#> # Key:       State, Region [85]
#>    Quarter State        Region        Trips
#>      <qtr> <chr*>       <chr*>        <dbl>
#>  1 1998 Q1 <aggregated> <aggregated> 23182.
#>  2 1998 Q2 <aggregated> <aggregated> 20323.
#>  3 1998 Q3 <aggregated> <aggregated> 19827.
#>  4 1998 Q4 <aggregated> <aggregated> 20830.
#>  5 1999 Q1 <aggregated> <aggregated> 22087.
#>  6 1999 Q2 <aggregated> <aggregated> 21458.
#>  7 1999 Q3 <aggregated> <aggregated> 19914.
#>  8 1999 Q4 <aggregated> <aggregated> 20028.
#>  9 2000 Q1 <aggregated> <aggregated> 22339.
#> 10 2000 Q2 <aggregated> <aggregated> 19941.
#> # … with 6,790 more rows

新しいtsibbleには、州計と全国計に当たる四半期ごとの行が追加されています。図11.3は、オーストラリア全国と州別の宿泊客数ですが、多様で豊富な強弱が見て取れます。例えば、全国とACT、New South Wales、Queensland、South Australia、Victoriaといった各州で、2010年以降目立って増加しています。Western Australiaでは2014年に顕著な飛躍があったようです。

tourism_hts %>%
  filter(is_aggregated(Region)) %>%
  autoplot(Trips) +
  labs(y = "宿泊客数 (千人)",
       title = "オーストラリア旅行: 全国と州別") +
  facet_wrap(vars(State), scales = "free_y", ncol = 3) +
  theme(legend.position = "none")
州別に集計した国内旅行宿泊客数、1998 Q1から2017 Q4まで

図 11.3: 州別に集計した国内旅行宿泊客数、1998 Q1から2017 Q4まで

QueenslandとNorthern Territory、VictoriaとTasmaniaへの宿泊客数の季節プロット。オーストラリアの北部と南部の間の季節パターンの対照が目立つ

図 11.4: QueenslandとNorthern Territory、VictoriaとTasmaniaへの宿泊客数の季節プロット。オーストラリアの北部と南部の間の季節パターンの対照が目立つ

QueenslandとNorthern Territoryのような北部州での季節パターンは、熱帯性気候と夏の雨季のせいで冬(Q3に当たる)に山があります。対照的に、南部州では夏(Q1に当たる)に山がある傾向です。図11.4に示した季節プロットでは、QueenslandとNorthern Territory(左側)と最も南部にあるVictoriaとTasmania(右側)の対比から、対照が目立ちます。

いくつか選択した地域への国内旅行宿泊客数、1998 Q1から2017 Q4まで

図 11.5: いくつか選択した地域への国内旅行宿泊客数、1998 Q1から2017 Q4まで

11.5のプロットは、いくつか選択した地域のデータです。強いトレンドと季節性を示す系列もあれば、対照的な季節性を示す系列や、ただのノイズに見える系列もあり、多様な地域ごとの動きが可視化されています。

グループ化時系列

グループ化時系列では、階層化のように自然に一意なデータ構造に分解されません。図11.6は、単純なグループ化構造を示しています。グループ化構造のトップに、データの最も集計されたレベルであるTotalがあり、ここでも\(y_t\)で表します。Totalは属性(A, B)で系列\(\y{A}{t}\)\(\y{B}{t}\)に分解するか、属性(X, Y)で系列\(\y{X}{t}\)\(\y{Y}{t}\)に分解するか、どちらもできます。ボトムレベルでは、データは両方の属性で分解されています。

2レベルのグループ化構造の別々の表示

図 11.6: 2レベルのグループ化構造の別々の表示

この例は、グループ化構造には分解経路が複数あることを示しています。どの\(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{11.3} \end{equation}\]\[\begin{equation} \y{X}{t}=\y{AX}{t}+\y{BX}{t}\quad \quad \y{Y}{t}=\y{AY}{t}+\y{BY}{t} \tag{11.4} \end{equation}\] もあり得ます。

グループ化時系列は、系列をグループ化する順序が一意でないという意味で、一意の階層構造を押し付けない階層化時系列、と考えることもできます。

事例: オーストラリアの囚人数

この例では、2章で紹介したオーストラリアの囚人数データを考えます。図11.7の上のパネルは、オーストラリアの総囚人数、2005Q1–2016Q4です。下のパネルは、(a)州(State)別、(b)法的身分(Legal)別(既決囚か、判決待ちで再勾留中の未決囚か)、(c)性(Gender)別で分解された、あるいは、グループ化された囚人数です。3つの要素は交差していて、他の要素の入れ子になっている要素はありません。

オーストラリア四半期成人囚人数の総計と州別、法的身分別、性別分解

図 11.7: オーストラリア四半期成人囚人数の総計と州別、法的身分別、性別分解

2.1節で紹介した以下のコードで、囚人数データのtsibbleオブジェクトを作成します。

prison <- readr::read_csv("https://OTexts.com/fppjp/extrafiles/
                                   prison_population.csv") %>%
  mutate(Quarter = yearquarter(Date)) %>% 
  select(-Date)  %>%
  as_tsibble(key = c(Gender, Legal, State, Indigenous),
             index = Quarter) %>%
  relocate(Quarter)

aggregate_key()属性1*属性2の語法(階層化時系列で使った親/子の語法とは対照的です)を使って、興味のある属性やグループを交差させて、グループ化時系列を作成します。以下のコードで、囚人数データの性(Gender)、法的身分(Legal)、州(State)の属性を交差させたグループ化tsibbleを作成できます。

prison_gts <- prison %>%
  aggregate_key(Gender * Legal * State, Count = sum(Count)/1e3)

filter()の中でis_aggregated()を使うと、主なグループごとに探索したり、 図11.7の下のパネルで示したように、主なグループごとにプロットしたりする助けになります。例えば、以下のコードは、オーストラリア全国の女性と男性の総囚人数をプロットします。

prison_gts %>%
  filter(!is_aggregated(Gender), is_aggregated(Legal),
         is_aggregated(State)) %>%
  autoplot(Count) +
  labs(y = "囚人数 (千人)")

その他のグループを組み合わせたプロットも似たようにして得られます。図11.8は、オーストラリアの囚人数を全てのあり得る2つの属性の組み合わせ、州と性、州と法的身分、そして、法的身分と性、で一組づつグループ化したものです。以下のコードは図11.8の一番上のプロットを再生産します。

属性のペアで分解したオーストラリア成人囚人数

図 11.8: 属性のペアで分解したオーストラリア成人囚人数

prison_gts %>%
  filter(!is_aggregated(Gender), !is_aggregated(Legal),
         !is_aggregated(State)) %>%
  mutate(Gender = as.character(Gender)) %>%
  ggplot(aes(x = Quarter, y = Count,
             group = Gender, colour=Gender)) +
  stat_summary(fun = sum, geom = "line") +
  labs(title = "州と性別囚人数",
       y = "囚人数 (千人)") +
  facet_wrap(~ as.character(State),
             nrow = 1, scales = "free_y") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

11.9は、3つ全ての属性である州、法的身分、性、で分解されたオーストラリア成人囚人数です。これらがグループ構造のボトムレベル系列を形成しています。

州、法的身分、性でグループ化されたオーストラリア成人囚人数のボトムレベル時系列

図 11.9: 州、法的身分、性でグループ化されたオーストラリア成人囚人数のボトムレベル時系列

階層化とグループ化の混成構造

入れ子と交差の両方の分解要素があることがよくあります。例えば、オーストラリア旅行データは休暇、ビジネス、友人や親戚訪問、その他の4つの旅行目的でも分解できます。このグループ変数はどの地理変数の入れ子でもありません。実際、オーストラリア全国、州別、地域別をさらに旅行目的別にした宿泊客数を考えることができるでしょう。そうした構造を、「入れ子」になった地理階層が旅行目的と「交差」する、と記述します。aggregate_key()を使えば、これは単に要素を組み合わせれば指定できます。

tourism_full <- tourism %>%
  aggregate_key((State/Region) * Purpose, Trips = sum(Trips))

tourism_fullのtsibbleには425個の系列が入っています。その中には、階層構造からの系列が85個と、階層構造からの系列それぞれに旅行目的を交差させた系列が340個があります。

旅行目的別のオーストラリア国内旅行宿泊客数、1998 Q1から2017 Q4まで

図 11.10: 旅行目的別のオーストラリア国内旅行宿泊客数、1998 Q1から2017 Q4まで

州別・旅行目的別のオーストラリア国内旅行宿泊客数、1998 Q1から2017 Q4まで

図 11.11: 州別・旅行目的別のオーストラリア国内旅行宿泊客数、1998 Q1から2017 Q4まで

11.10と図11.11は、旅行目的別に集計された系列と州別・旅行目的別に集計された系列です。これらの系列に豊富で多様な動きがあることが分かります。