動機
最近、ディープラーニングや機械学習といった概念に興味を持って、独学でPythonを学んでデータセットを用いて予測をしてみたり、日本の総トラフィック量の予測をしてみたりと色々と趣味の範疇で勉強しています。
ですが、予測したものに対して根拠が乏しかったりして、一度体系的に勉強しなおしてみたいと思い、独学の記録をここに残していきます。
時系列解析とは
そもそも時系列解析とは何でしょうか?
時系列とともに観測されたデータ、これを分析して将来の予測や仮説の検証に役立てる方法論だといえますね。例えば物体Xが時間t1には座標x1、時間t2には座標x2,時間t3には座標x3...と(時間、座標)のデータも一種の時系列データですね。
状態空間モデル
ローカル・レベル・モデル
数式としては、$t=1,2,...,n$に対して、このように書くそうです。
y_{t}=\mu_{t}+\epsilon_{t}, \ \ \epsilon_{t}\sim NID(0,\sigma^{2}_{\epsilon})
\mu_{t+1} = \mu_{t}+\xi_{t}, \ \ \xi_{t} \sim NID(0,\sigma^{2}_{\xi})
上の式は観測方程式、下の式は状態方程式と呼ばれます。
$y_{t}$が時点$t$における観測値とすると、$\mu_{t}$は時点$t$における状態、$\epsilon_{t}$は観測誤差、$\xi_{t}$はシステム誤差と定義します。うーん、数式だけだとイメージが…。
前期の状態と今回の状態はノイズという形で毎回変化し、観測された数値も実際の状態から観測時に誤差が出るものとして表現される考え方のようです。
時系列データの変動をノイズでうまく表現できるモデルと捉えるとしっくりきますが、常に右肩上がり、右肩下がりの傾向を予測するにはノイズだけでは厳しそうですね。その傾向の知識を取り込んだモデルが次に紹介するローカル線形モデルです。
ローカル線形モデル
観測方程式はそのままに、傾向を表す状態方程式を追加します。ここで時点$t$の「傾き」を$\nu_{t}$として定義し、数式に傾きの要素を取り入れます。
y_{t}=\mu_{t}+\epsilon_{t}, \ \ \epsilon_{t}\sim NID(0,\sigma^{2}_{\epsilon})
\mu_{t+1} = \mu_{t}+\nu_{t} +\xi_{t}, \ \ \xi_{t} \sim NID(0,\sigma^{2}_{\xi})
\nu_{t+1} = \nu_{t} + \zeta_{t}, \ \ \zeta_{t} \sim NID(0,\sigma^{2}_{\zeta})
傾き$\nu_{t}$と状態$\mu_{t}$と、それぞれの誤差で時系列データをうまく表現できるモデルのようですね。傾きはほぼ一定の数値となると、このモデルの予測は傾きを持った線形的なものになりますね。
季節要素のあるローカル線形トレンドモデル
日本のトラフィック傾向を見ると、平日よりも休日の方が高い傾向にありますよね。休日のほうがインターネットを使える時間ができますし。そういった周期性のような繰り返しパターンを季節効果というようです。
数式で表現するのは難しいので、時系列データの表現がノイズと傾向に加えて周期性がついたイメージとだけ残しておきます。傾向は線形性で表現されるという前提に注意すれば十分予測でも役立ちですね。
参考資料
・J.J.F.コマンダー、S.J.クープマン著「状態空間時系列分析入門」CAP出版(2008)
・状態空間 | Logic of Blue
https://logics-of-blue.com/%E7%8A%B6%E6%85%8B%E7%A9%BA%E9%96%93%E3%83%A2%E3%83%87%E3%83%AB%E3%81%A8%E3%81%AF/