未来はキミドリイロ

サイコメトリックアイドルを目指す心理学徒の勉強部屋です。勉強・趣味などについて書いています。

状態空間に入門してみる[下準備編]

現在読んでいる『状態空間時系列分析入門』a.k.a Commandeur & Koopman本の覚書(?)です。

状態空間時系列分析入門

状態空間時系列分析入門

  • 作者: J.J.F.コマンダー,S.J.クープマン,Jacques J.F. Commandeur,Sime Jan Koopman,和合肇
  • 出版社/メーカー: シーエーピー出版
  • 発売日: 2008/09
  • メディア: 単行本
  • 購入: 2人 クリック: 4回
  • この商品を含むブログを見る

この本は以下の章立てとなっています。

第1章  はじめに
第2章  ローカル・レベル・モデル
第3章  ローカル線形トレンド・モデル
第4章  季節要素のあるローカル・レベル・モデル
第5章  説明変数のあるローカル・レベル・モデル
第6章  干渉変数のあるローカル・レベル・モデル
第7章  英国シートベルト法とインフレーション・モデル
第8章  単変量状態空間モデルの一般的な取り扱い
第9章  多変量時系列分析
第10章 時系列分析に対する状態空間法とボックス-ジェンキンス
第11章 実践的な状態空間モデリング
第12章 おわりに

構成として,前半では1章で導入をしてから2章~6章で具体的なモデルを変数を増やしながら紹介し,7章でそれらを統一的に扱うというかたちをとっています。
8章以降の後半では数理的な面を検討し,既存の時系列分析の方法と状態空間法とを相対的に眺めるというかたちをとっているようです。*1

今回は下準備編と銘打ちまして,この本にはあまりそうした話はないのですが,状態空間法を含む時系列分析の必要性とその考え方について綴ってみたいと思います。
回帰分析の知識があれば読めるようになっていると思います。
それなりに長いので,手っ取り早く教えろという方のために文末にまとめを用意してあります。

なお,本文中において誤りのある部分はすべて執筆者である私の不理解によるものであり,したがって私の責任です。

時系列分析とは

時系列分析(Time Series Analysis)は,同じ変数について継時的に集められたデータである時系列データ(Time Series Data)を分析するための手法で,古典的回帰分析の拡張として位置づけられます。*2

時系列分析について系統的に勉強したわけではありませんが,基本は横軸に時点をおいてデータを時系列でプロットしたとき,縦軸にある従属変数の値の継時的な変化の挙動を記述・説明・予測しようということに関心がある分析だと考えられると思います。

試しにサンプルデータを1分くらいでぐしゃっと作ってみました。
一ヶ月間,毎日腹筋をしたときの回数を記録したという設定の仮想データです。
f:id:arca821:20141221122022p:plain
以下,このデータを用いて時系列分析の必要性について検討していきます。

時系列データに対して普通に回帰分析すると……

最もシンプルに,何も考えずに時点と腹筋回数の関係を考えようと思ったら,とりあえず時点を継続日数と見なして独立変数に設定し,従属変数となる腹筋回数を予測する回帰分析をしてみて次のような結果を得ます。
f:id:arca821:20141221122103p:plain

ただ,これだと全体として見える右肩上がりの関係しか見ることできず,上がったり下がったりしている「挙動」の情報がただの残差として扱われてしまっています。

本当は時系列に沿って上に下に変化しているわけですから,そうしたデータの情報をロスすることなく反映するという観点からは,特別分析をして回帰直線を引くようなことなどせずに,時点ごとの平均などをプロットした次のような折れ線グラフを書くほうがいくらかマシでしょう。
f:id:arca821:20141221123919p:plain

この時系列プロットを見ると,波のあるかたちでプロットされており上下に変動がありますが,波の間隔が大体同じのように見えることからそれらの変動には周期性があることが予想されるでしょう。

こうした周期などの情報を普通の回帰分析では捉えることができず,それらを正確に反映する手法として時系列データにはそれに適した取扱いが必要になるというわけです。

時系列プロットでいいじゃん?

ここまでで,時系列データは普通に分析をすることによる弊害が大きいため,適切な手法で取り扱う必要があることが分かったかと思います。
しかし,時系列プロットを作れば細かな動きまでわかるわけでして,じゃあ時系列プロットすればいいじゃん,という話は当然あるでしょう。

実際,目で見てわかるくらいの明らかな変化があってこそ「差がある」と言えるのだ,という意見をお持ちの研究者もいらっしゃるという話を小耳に挟んだことがありますから,わかりやすく時点に合わせて変動してくれる時系列プロットさえあれば明確な差は見て取れますし,数字になじみのない方であってもおそらく大まかな傾向を掴めましょう。

しかしながら,視覚的にわかりやすく時系列データの挙動を示してくれる時系列プロットにも限界があります。

それは,時系列データにとっては主たる関心のひとつである,先の挙動の予測ができないという点です。
もちろん,グラフを見てぼんやりと上がるのか下がるのか,という予想はできるかもしれませんが,予想と予測は精度・確証という点で大きく異なる概念です。
加えて,時系列の中で大きく上がっている部分/下がっている部分について,何が原因でこうした挙動が観測されたのかについてはグラフからは定性的な判断すらも予想の範疇になってしまい,明確な根拠がありません。

たとえば景気指標を年次で追いかけた時系列データがあるとして,ああーこの年代にはオイルショックがあったから景気を表す指標が急落しているんだーということは予想こそできるかもしれませんが,その影響の大きさに関する定性的・定量的評価が必要になるはずです。

腹筋データの例でいえば,実は3日おきに腹筋回数ががくっと下がるようになっているのですが,これがトレーニングによる疲労の影響なのか,それとも3日におきに体育の授業もしくはアルバイトなどがあってトレーニングを始める前にすでにくたくただからパフォーマンスが下がるのかはプロットだけを見てもわかりません。
よしんば体育の授業があることがわかったとして,それが腹筋回数の下落にどこまで影響を与えているのかはわからず,もしかしたら3日ごとにサボっているだけ,抑えているだけなのかもしれません。

こうしたツッコミがたくさん入る時点で時系列プロットだけを見ることの危うさは感じていただけるかと思います。


このように,

  1. 時系列における先の予測
  2. 各時点での挙動の説明・記述

というふたつの要因を考慮するためには,視覚的なプロットを超えた統計的な解析が必要となります。
これが,時系列分析というものなのです。

時系列分析の考え方

時系列分析において重要な関心はふたつあり,ひとつは挙動を説明・予測すること,もうひとつは過去のデータから将来を予測することであることがここまでで確認されました。
それに対して,時系列分析がどういったアプローチをとるのかは今後の記事に譲りますが,今回はそうしたアプローチの根底にある重要な問題について触れておきます。

それは,各データが独立でないという問題です。
時系列データにおける予測では,何度か述べてきましたが過去のデータから将来的な挙動を予測するというかたちをとります。
このときの「過去のデータ」というのは,言わずともわかるかもしれませんが「時点の違う(過去の)自分」のことになります。

ここで,時系列分析は(古典的)回帰分析の拡張と最初に述べましたが,回帰分析におけるパラメータについての確認をしておきます。


\begin{eqnarray}
a(切片) &=& \bar y - b \bar x\\
b(傾き) &=& r \frac{S_y}{S_x} = \frac{S_{xy}}{S_x^2}
\end{eqnarray}

このうち傾きの式は相関(共分散)に基づいたものであることがわかります。

ここから,過去のデータを独立変数とし,先のデータを従属変数とした回帰関係を考えるときには自分同士の相関を考えなければいけないということになります。
この自分同士の相関のことを,「自己相関(Autocorrelation)」と呼びます。

この自己相関という話が出てきて厄介なのは,たとえばt時点目とt+1時点目の観測値を


\begin{eqnarray}
y_t &=& \tau_t + e_t\\
y_{t+1} &=& \tau_{t+1} + e_{t+1}
\end{eqnarray}

とすると,これらの共分散(相関)は


\begin{eqnarray}
Cov(y_t, y_{t+1}) &=& Cov( \tau_t + e_t, \tau_{t+1} + e_{t+1})\\
                  &=& Cov(\tau_t, \tau_{t+1})+Cov(\tau_t, e_{t+1})+Cov(e_t, \tau_{t+1})+Cov(e_t, e_{t+1})
\end{eqnarray}

となります。

ここで時系列データであるという性質からt+1時点目のy_{t+1}がひとつ前の観測値y_tから影響を受けるという関係があることを


\begin{eqnarray}
y_{t+1}=a+by_t
\end{eqnarray}

というかたちで,t時点目の観測値が1時点前時点tにおける観測値の線形変換であるという仮定によって表現します。

この仮定の下で上の共分散の式を書き直すと,


\begin{eqnarray}
Cov(y_t, y_{t+1}) &=& Cov(y_t, a+by_t)\\
                  &=& Cov(\tau_t + e_t, a+b(\tau_t + e_t))\\
                  &=& b*Var(\tau_t)+b*Var(e_t)
\end{eqnarray}

というかたちで時点間の相関をとるときに誤差分散が残ってしまうことが確認されます。


長々と展開してきましたが,要するにt+1時点目の予測にt時点目の誤差分散Var(e_t)が関わってきてしまい,時点間で誤差が独立とならないばかりか放置しているとどんどん累積してしまうのです。

実際に,上で行った回帰分析の残差を時系列プロットしてみると下図のようになり,観測値の時系列と同様に周期性があることが見て取れるかと思います。
f:id:arca821:20141221122254p:plain

もし誤差が完全に独立=ランダムであるのだとすれば,このように波を描くことはなく,0の上下に不規則に並んでいるはずです。

古典的回帰分析の枠組みでは観測値と誤差が独立かつ,誤差同士も独立であるという非常に重要な仮定(大前提といってもいいのかもしれません)が置かれていましたが,時系列データを扱う際にはデータが独立でないことに由来して誤差も独立でないという点が非常に厄介な問題なのですね。

この誤差が独立でないという状態を改善し,推論の妥当性を高めながら時系列を説明・記述・予測するために季節や変化する平均などのパラメータを要素として導入するのが,時系列分析という発想といえましょう。

まとめ

長くなりましたが,時系列分析という手法は次のようにまとめられると思います。

  • 時系列分析は古典的回帰分析の枠組みの拡張である
  • 時系列の変動をきちんと情報として取り入れてデータを記述・説明する手法である
  • 過去のデータから先のデータを予測することにも関心がある
  • 時系列データはデータが独立でなく,したがって誤差も独立でないという問題を持つ
  • 誤差が独立でないという問題を解決し,精度の高い記述・予測をするために時系列分析特有のパラメータを導入している

今回は時系列データの持つ問題を適切に扱うための手法としての時系列分析と,その手法の関心のある点について述べてみました。

具体的にどのようなパラメータが導入され,どういう仕組みでデータの説明・記述などがなされるのかについては,冒頭に掲載した『状態空間時系列分析入門』の前半部分を整理する記事で書くことができればと思っています。

*1:後半はまだ読んでいないので,たしかそんな感じだったなーというものです,すみません。

*2:個人内の反復測定という視点から見れば,ある意味ではマルチレベルデータとの見方もできるかもしれません。いずれにせよ回帰分析の枠組みによるものです。