3.6 STL分解

STLは、時系列を分解する汎用的でロバストな手法です。STLは“Seasonal and Trend decomposition using Loess”の略で、loessは非線形関係を推計する手法です。STL手法は、R. B. Cleveland et al. (1990) が開発しました。

STLには、古典的分解やSEATS法、X-11法よりも優れた利点がいくつかあります。

  • SEATS法やX-11法が扱える季節性は月次と四半期データだけなのに対し、STLはどんなタイプの季節性も扱える。
  • 季節成分の経時変化が許されており、その変化率はユーザが調整可能。
  • トレンド・循環成分の平滑さもユーザが調整可能。
  • 外れ値に対してロバストにできる(つまり、ユーザがロバストな分解を指定できる)ので、時折発生する異常な観測値がトレンド・循環成分や季節成分の推計に影響を与えることがない。それらは残余成分に含まれることになる。

他方で、STLにはいくつか欠点もあります。特に、営業日数の変動や暦変動を自動的に扱えないことと、加法分解にしか扱えないこと、が欠点です。

それでも、乗法分解は、最初にデータを対数変換しておき、分解後の成分を元のスケールに逆変換すれば得られます。加法と乗法の中間に当たる分解も、データを\(0<\lambda<1\)でBox-Cox変換すれば得られます。\(\lambda=0\)ならば乗法分解になり、\(\lambda=1\)であれば加法分解になります。

STLの使用法を学ぶには、事例を使って設定を変えた実験を見てもらうのが一番でしょう。図3.7は、STL分解を米国小売業の就業者数系列に適用した事例です。図3.18は、それとは異なった設定のSTL分解です。トレンド・循環成分をより柔軟に、季節パターンを固定し、ロバストのオプションをTRUEに、設定しています。

us_retail_employment %>%
  model(
    STL(Employed ~ trend(window = 7) +
                   season(window = "periodic"),
    robust = TRUE)) %>%
  components() %>%
  autoplot()
米国小売業の就業者数(一番上)とその3つの加法成分: 柔軟なトレンド・循環成分と固定した季節性を有しロバストなSTL分解

図 3.18: 米国小売業の就業者数(一番上)とその3つの加法成分: 柔軟なトレンド・循環成分と固定した季節性を有しロバストなSTL分解

STLを使用する際の2つの主要パラメータは、トレンド・循環窓trend(window = ?)と季節窓season(window = ?)です。これらで、トレンド・循環成分と季節成分がどれだけ速く変化できるかを調整します。窓を小さくすると、より速く変化できます。トレンド・循環と季節の両方の窓は奇数でなければなりません。トレンド窓は連続する観測値の数で、トレンド・循環成分を推計するのに使われます。季節窓は連続する年数で、季節ごとの季節成分を推計する際に使われます。季節窓を無限大に設定することは、季節成分を周期的season(window='periodic')(つまり、毎年同じ)にすることと同値です。図3.18では、この設定を利用しています。

STL()関数のデフォルトの設定では、季節窓はseason(window=13)に、またトレンド窓は季節周期から自動的に選択されます。月次データのデフォルト設定はtrend(window=21)です。これで通常は、季節性は過剰に当てはまることなく、かつ、ゆっくりと経時変化できる、良いバランスになります。しかし、どんな自動化手順でもそうであるように、デフォルト設定から調整する必要のある時系列もあります。今回の例では、トレンド窓のデフォルト設定ではトレンド・循環成分の推移が硬直過ぎました。その結果、図3.7の一番下のパネルに見られるように、2008年世界金融危機からのシグナルが残余成分に漏れ出しています。図3.18では、トレンド窓を短くすることで、改善しています。

参考文献

Cleveland, R. B., Cleveland, W. S., McRae, J. E., & Terpenning, I. J. (1990). STL: A seasonal-trend decomposition procedure based on loess. Journal of Official Statistics, 6(1), 3–33. http://bit.ly/stl1990