【状態空間モデルシリーズ1】時系列データの数理モデル表現【季節調整モデル】

状態空間モデルシリーズでは複数の記事に分けて、時系列データを扱う柔軟なモデルである状態空間モデル(State Space Model) を解説します。

第1回である本記事では、時系列データに対して想定する”パターン”を数学的に表現する手法を解説します。このパターンには、トレンド(上昇傾向か?下降傾向か?)、季節成分(周期的な変動要因)、ノイズ成分などがあります。これらのパターンを組み込んだ数式表現について整理します。

本記事を通じて、時系列モデルの“骨格”となる数式の全体像をつかみ、次回以降の確率モデルへの橋渡しを行います。

時系列データ

時系列データとは、時間の推移とともに観測されるデータのことであり、観測される順序に意味がある。例えば、日々の株価、月次の売上高、毎時の気温などが時系列データの典型例である。観測される順序に意味があるということが重要で、独立同分布を仮定するデータと大きく異なるポイントである。

表記法

時刻 $1$ から $T$ までに観測されたデータを以下のように表記する。

$$
y_{1:T} \equiv \left[ y_1, y_2, \cdots , y_T \right]
$$

$y$のインデックスが観測順を表している。時系列データの場合は順序に意味があるため、 $y_{1:T}$は上記の順で扱わなければいけない。

時系列データの特徴

時系列データには下記のような特徴が表れる。これらの特徴を適切にモデル化することが時系列分析の課題となる。

補足

独立同分布を仮定するデータでは、データを入れ替えることができたが、時系列データの場合にはそれができないため、モデル化やパラメータ学習の際には時系列データを扱う手法利用する必要がある。

時系列データといった場合、通常数値データを扱う。一方、文章のように単語の順序が重要なデータもある。このように順序に意味のあるデータを一般に「系列データ」と呼ぶ。本シリーズでは、数値データとしての「時系列データ」のみを扱う。

統計的時系列モデルと構造的モデル

統計的時系列モデル

時系列データを解析する代表的なモデルとして、時系列データ自身の過去の値のみを利用してモデリングするAR(Auto Regressive)モデルやARMA(Auto Regressive – Moving Average)モデルがある。

$$
\begin{aligned}
\mathrm{AR}(p): \quad &y_t = c + \phi_1 y_{t-1} + \cdots + \phi_{p} y_{t-p} + \epsilon_t \\
\mathrm{ARMA}(p, q): \quad &y_t = c + \phi_1 y_{t-1} + \cdots + \phi_{p} y_{t-p} + \epsilon_t + \theta_1 \epsilon_{t-1} + \cdots + \theta_q \epsilon_{t-q}
\end{aligned}
$$

ここで、$c$ は定数項、$\phi_i$ は自己回帰係数、$\theta_j$ は移動平均係数、$\epsilon_t$ はホワイトノイズである。

これらのモデルは、モデルの次数 $p, q$ を適切に定めることで多くの定常時系列データを扱うことが可能である。さらに、階差をとる、対数変換を行うなど適切に時系列データを変換することで、トレンドを持つような非定常な時系列データも定常時系列として扱うことができ、応用範囲は広大である。

しかしながら、これらのパラメータ $\phi_i, \theta_j$ の意味は自明ではなくモデルを解釈することが難しい。これらのパラメータは複数の要因(トレンド、季節性、自己相関など)が混在した形で推定されるため、個別の要因を分離して理解することが困難である。例えば、月次売上データにAR(12)モデルを適用すると、12ヶ月前までの売上から予測できるが、「12月は年末商戦で売上が上がる」といった季節性の解釈は、パラメータ $\phi_{12}$ から直接読み取ることは困難である。

そこで、時系列データの構造をいくつかの成分に分解し、それらの成分の合成で該当の時系列データが作られているという考えに基づいた「構造的時系列モデル」という考えがある。

構造的時系列モデル

構造的時系列モデルは、時系列データを解釈可能な複数の成分に分解し、それらの合成として表現するアプローチである。ARモデルと同様に自己相関構造を利用するが、決定的な違いは各成分が明確な意味を持つことである。

典型的なモデルの一つの表現形式は以下のようなものがある。

$$
y_t = \mu_t + s_t + \epsilon_t
$$

ここで、

  • $\mu_t$:トレンド成分(長期的な上昇・下降傾向)
  • $s_t$:季節成分(周期的なパターン)
  • $\epsilon_t$:観測ノイズ(ランダムな変動)

トレンド成分や周期成分の詳細については次章で説明する。構造的時系列モデルとは、上記のように時系列データを独立した複数のパターンの合成で説明するモデルである。

構造的時系列モデルの利点と欠点

構造的時系列モデルは以下の利点がある

  • 解釈性の向上:予測結果を「トレンドによる寄与」「季節性による寄与」に分解して説明可能
  • ドメイン知識の活用:「週末は売上が増える」といった事前知識を周期成分として組み込める
  • 欠測値の扱い:構造を保ちながら欠測値を自然に補完

一方、以下の点で注意が必要である。

  • モデル設計の必要性:データの特性に応じて適切な成分を選択・設計する必要がある
  • 構造の妥当性:事前に仮定した構造(例:週周期)が実際のデータに存在しない場合、誤った解釈につながる可能性

次章では、構造的時系列モデルの各成分をどのように数学的に定式化するかを詳しく見ていく。

”パターン”の数式表現

構造的時系列モデルでは、時系列のパターンを数学的に定式化する。トレンド成分と季節成分という代表的な二つの構造の定式化についてここで見ていく。

トレンド成分

トレンドとは、長期的な上昇(または、下降)傾向を示すものである。最も基本的な「一定の傾向」は以下のように表現することができる。

$$
\mu_t – \mu_{t-1} = \mu_{t-1} – \mu_{t-2}
$$

ここで、 $\mu_t$ は時刻 $t$ でのトレンド成分である。この式は、「今日の増加分 = 昨日の増加分」を意味している(傾きが一定)。

上式を展開することで、時刻 $t$ のトレンド成分を過去の値で表現することができる。

$$
\mu_t = 2 \mu_{t-1} – \mu_{t-2}
$$

季節成分

季節成分とは、日次や週次、年次など定期的な周期傾向を示すものである。周期傾向を表現する方法として、周期中の成分の和が一定になるという期待を式で表現する(定数を引くなどの操作で和が0という表現にでき、このような表現が一般的)。例えば週次傾向は以下のように表現できる。

$$
s_{月} + s_{火} + s_{水} + s_{木} + s_{金} + s_{土} + s_{日} = 0
$$

一般に、周期 $T$ の季節成分は以下で表現される。

$$
s_t + s_{t-1} + \cdots + s_{t-(T-1)} = 0
$$

これを $s_t$ について解く。

$$
s_t = -\sum_{l=1}^{T-1} s_{t-l}
$$

ノイズ成分

ここまでの表現は決定論的であり、現実のデータの不確実性を表現できない。実際には

  • トレンドは完全に一定ではなく、わずかに変動する
  • 季節パターンも毎回完全に同じではない
  • 観測時には測定誤差も含まれる

これらの不確実性を表現するため、各成分にノイズを追加する。トレンド成分と季節成分を合わせた季節調整モデルは以下のように表される

$$
\begin{aligned}
y_t &= \mu_t + s_t + w_t \\
&\mu_t = 2 \mu_{t-1} – \mu_{t-2} + v_{\mu, t} \\
&s_t = -\sum_{l=1}^{T-1} s_{t-l} + v_{s, t}
\end{aligned}
$$

ここで、$w_t$ は観測ノイズ、$v_{\mu, t}$ はトレンドの変動、$v_{s, t}$ は季節パターンの変動を表すホワイトノイズである。

本稿のまとめ

本稿では、時系列データの基礎から統計的時系列モデル、構造的時系列モデルを解説した。

統計的時系列モデル(AR/ARMA等)は汎用性が高い一方で、パラメータの解釈が困難という課題があった。これに対し、構造的時系列モデルは時系列データをトレンド・季節性・ノイズといった解釈可能な成分に分解してモデル化するアプローチである。これにより、モデルの解釈が用意になったり、ドメイン知識を事前にモデルに組み入れることが容易になる。

季節調整モデルでは、各成分を数式で表現し、現実のデータが持つ不確実性を扱うためにホワイトノイズを導入した。しかし、これらのノイズの大きさをどう設定し、データから学習するかという課題が残る。

次回は、この季節調整モデルを「状態空間モデル」として再定式化する。これにより、パラメータの推定やフィルタリングといった統計的推論が可能となり、より実用的なモデルへと発展させることができる。

実装例

[TBW]シミュレーションデータを生成。各成分の可視化。

参考