HomeRな 予測状態空間モデル

 状態空間モデル

★新サイト完成しました!
3秒後に自動的に移動します

変わらない方は こちらからどうぞ
http://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/

状態空間モデルとはいったい何で、どんな時に使うといいのか、使うとどんなご利益があるのかということについて書きます。

状態空間モデル関連のページ
  状態空間モデル       状態空間モデルのことはじめ 
   dlmの使い方          Rで正規線形状態空間モデルを当てはめる
  ロー カルレベルモデル   dlmパッケージを使ってローカルレベルモデルを当てはめる
  季節とトレンド        dlmパッケージを使って季節成分とトレンドの入ったモデルを作る
 

状態空間モデルに関しては、大枠を説明してから 少しずつ補足をしていくという流れを取りました。細かい部分は飛ばして全体を流し読みすると、状態空間モデルの雰囲気はわかるようになるのではないかなと 思います。
 状態空間モデルは、ARIMAといった普通(?)の時系列モデルと違い、予測だけではなく「説明」にもかなり重きをおいた手法かなと思ったので、予測を 出すだけではなく、このモデルそのものに関する解説をやや長く書いた次第です。

                                      作成日  2012年 8月 8日 
                                       最終更新 2012年 8月 8日

状態空間モデルとは

 時系列解析 理論 編では、ARモデル〜ARIMAモデルを使って予測をする方法について書きました。こちらのほうがよりオーソドックスな時系列解析かもしれませ ん。 
 今回扱う状態空間モデルはちょっと複雑なモデルになります。

 状態空間モデルは、名前の通り「状態」というものを扱います。実際に「観測」された結果と対比してみるとわかりよいと思います。
 ものすごく簡略化して、例を挙げて説明します。

 たとえば、湖の中に魚がいて、その個体数を数えてみたとします。それを10年くらい続けました。そしたら、10年間分の魚の個体数データが手に 入ったことになります。で、その個体数はきっと、毎年変化しているでしょう。
 その個体数の変動は、いったい何が原因なのでしょうか。状態空間モデルでは、その原因を「水準の変化」と「観測誤差」という二つに分けて考えます。
 やや紛らわしいのですが、「個体数変動の原因」っていうのは「水温が高くなったから魚が増えた」とかいうことを言っているわけではありません。もう ちょっと本質的な原因です。
 すなわち
 数えた値は毎年変わっているけれども、それは「本当に湖の魚の個体数の水準が変わったから」なのか、それとも、「水準そのものは変わっていないんだけれ ども、毎年多少のノイズが入っているから、そのノイズの分だけぶれている」のか、ということです。

 状態空間モデルでは、状態方程式と観測方程式という二つの式を使います。湖の中にいる魚の実際の水準という「見えないモノ」を表すのが状態方程式 で、そこに、観測誤差なんかが加わって、実際に計測された魚の数がでてくると考えるんですね。
 これが状態空間モデルです。

状態空間モデルのご利益

 なぜこんなめんどくさいことをするんでしょうか。もちろんその意義はあります。
 一つは、すごく柔軟にモデルを組むことができるようになった点。過去の知見をもとにして、その知見をモデルに組み込むということが割と簡単にできます。 一瞬ARIMAモデルの話をしましたが、状態空間モデルを使うことで、こういったモデルを表すことも可能です。これは実例を挙げてのちに説明します。
 また、データに欠損値があっても使えるという特徴もあります。一期前から次の年を予測する時系列モデルでは、欠損値があるとその「一期前」の値がなく なってしまうのでARIMAとかだとモデルが組めなくなってしまいます。でも状態空間モデルだと大丈夫です。なぜ大丈夫なのかはすぐ後で説明します。
 あと、ちょっとコアな話になりますが、定常でない時系列データをそのまま扱うことができるというのも利点です。ARIMAだと差分を取ってから計算とい う流れを取っていましたが、差分を取るみたいなデータの変換を行わなくても計算ができるということです。

状態空間モデルの中身

 状態空間モデルの中身というか、考え方、計算の仕方について例を挙げて書きます。状態空間モデルは「状態」と「観測値」というように二つに分けて 考えているということを意識しながら読んでみてください。ここでの計算の流れは「カルマンフィルター」と呼ばれるものを日本語訳(かなり意訳ですが)した ものです。
 湖の中の魚の個体数が「状態」で、その湖で釣りをした結果が「観測値」だという例を使って話を進めていきます。

 まず、状態空間モデルは状態を推定します。2000年における湖の中にいる魚個体数の水準を推定したと考えてください。
 で、2000年における見えない水準の「状態」がわかったとします。
 つぎは、2000年における状態から2001年における状態を推定します。一年前とはきっとよく似てるよね、という仮定を置くことが普通です。これは ARモデルの心と同じですね(あるいはそれ以外にもいろいろな要因を組み込むことができます)。2000年は魚の水準は高位状態だったから2001年も割 合高い値になるんじゃないのかなという予測結果が出ました。こういう予測のことは、カッコよく「イノ ベーション」とか呼ばれたりします。

 2001年の「状態」が推定できました。
 つぎは2001年の「観測値」を推定します。
 観測値を推定するってなんか意味不明ですが、「観測データが得られなかったんだけれども、もしこの時に釣りをやっていたら何尾くらいとれたのかなぁ」と いうのを推定したと考えてください。
 あるいは観測値を「予測した」ともみなせます。すなわち、まだ2001年はだれも釣りしてないんだけれども、解禁日になって釣りができるようになったら どれくらい釣れるのかな、という「観測値」を推定したわけです。これが状態空間モデルを用いた予測のやり方です。
 湖の中の「状態」は、”魚多し”と出たわけですから、釣りしたらそれはもう爆釣に決まっているという予測結果が出されました。

 で、実際に2001年に釣りをしたら全然つれません。予測が外れちゃったんですね。
 しかし、即断は禁物です。釣り人の腕が悪かったということも考えられます。「観測誤差」です。ある程度のブレならば観測誤差とまとめてしまえます。で も、腕のいい釣り人が大挙して押し寄せても釣果0ということであれば予測された「水準」そのものが間違っていたのだろうとみなすところです。今回は予測さ れた水準の値が間違っていたのだということにしておきます。
 大変喜ばしくないことですが、「本物の観測値」を手に入れることができたというのは儲けものです。その「本物の観測値」を使って、さっき予測した「水 準」が補正できるからです。これが俗にいうフィルタリングです。どれくらい補正しないといけないの? っていう補正の値を「カルマンゲインと呼びます。補 正の式は下のようになります。

 補正後の状態 = 補正前の状態 + カルマンゲイン×(本物の観測値 − 予測された観測値)

 補正したって、外れた予測が当たるわけではありません。けれども、状態を補正することによって、来年の予測はより精度よく行えるでしょう。
 で、補正された2001年の状態を使って、2002年の状態を推定して、それから2002年の観測値を推定して、そして2002年の状態を補正して…… というのをずっと続けて予測を出していくのが状態空間モデルです。

 この流れが理解できれば「欠損値があってもOK」という理由がわかるのではないかと思います。
 状態空間モデルでは目に見えない「状態」なるものを想定して、その「状態」は前期の値と関係している(もちろんこれ以外にもたくさんの要因がある)だろ うということで予測を出していきました。目に見えない「状態」は、欠損値があってもなくても目に見えません。目に見えないところで脈々と連鎖していく「状 態」から、観測をしてみたら10尾釣れたとかっていう「観測値」が得られると考えるわけです。だから欠損値があっても大丈夫。1年前のデータがなかったと しても「一年前のデータとその次の年のデータはよく似ている」などといった関係をモデルであらわすことができます。
 また、欠損値の補間と、将来の予測は全く同じように「状態から観測値を推定する」という作業で表せられるので、両者は一緒だとみなすことができます。

動的線形モデル(DLM)

 正規線形状態空間モデルのことを動的線形モデル(Dynamic Linear Model: DLM)といいます。
 確率分布を「これ」と一つだけに絞って、さらに非線形(たとえば平滑化スプライ ン)なものも扱わない、やや単純にした状態空間モデルのことをこのように呼びます。 制約を付けて扱える範囲を狭くして、その代わりに計算しやす くなった状態空間モデルですね。
 パッケージdlmを使えば比較的簡単に推定できるうえ、参考書も豊富なので、次のページからはこれを主に扱います。

 このページに書いてある内容がよくわからなくても、次のページからの実例を通してみると「雰囲気」くらいはつかめるようになるかもしれません。

 毎度のことですが、このサイトに書いてある内容はあくまでも「雰囲気」をつかむためのものであり、私見によるかなり偏った解釈であることに留意してください。わかりやすさを優先したのでやや不 正確なところもあります。ご意見、ご指摘があれば掲示板やメールでご一報いただけると大変ありがたいです。誤りの指摘も大歓迎です。


参考文献

J.J.Fコマンダー、S.Jクープマン 和合肇 訳: 状態空間時系列分析入門,2008

樋口知之:予測に活かす統計モデリングの基本, 2011

カルマンフィルタ入門 - 歴史に探る数理・物理法則の始まり:携帯Wiki 
 ↑このサイトも大変参考にさせていただいたのですが、2012年8月8日に確認すると、なぜかサイトにアクセスできませんでした。

G,Petris, S Petrone, P Campagnoli: Dynamic Linear Models with R, 2009

前のページ ⇒ VARモデル   へ
次のページ ⇒ dlmの使い方  へ


ページトップへ
Copyright (C) 2011- 海と魚と統計解析 All Rights Reserved.