ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Rで経済時系列コミュのカルマンフィルタ

  • mixiチェック
  • このエントリーをはてなブックマークに追加
OCTAVEも入ったことだし、以下のページを使って、カルマンフィルタ
そのものを、少し丁寧に説明をします。

http://www.kumst.kyoto-u.ac.jp/kougi/time_series/ex1218.html

丁寧と言っても、このまま読んで、実装できないのだとしたら
数学力が無いか、計算機言語が出来ないか、どっちかの筈。

きっとさ、こんなの大学でも出ない限り、わけがわからんような
難しい数学だろうし、言語実装も面倒なのでは?と思う人もいる
のかもしれませんが、細かい事を言えば、その通りなのだけど
そこまでしないと実用に出来ないと言うほどの話とも思えない
わけです。

と言う事で、こうすればなんだか使えるんじゃない?って話にしますので
適当に合いの手を入れてください。

では。

コメント(11)



なんだか知らないが、まずはこれを暗記しましょう。

これがカルマンフィルタです。

見れば判るように式が2個あります。上の式を状態方程式、
下の式を観測方程式と呼びます。

どうして2個あるのかと言えば、上の式で状態を推定してやって
推定された状態を使って予測なりを下の式でやるから。

では状態って何の事だ?って事になるわけですが、データが変質して
行く様子の事です。もしもデータのパターンが一定なのであれば
下の式だけでOKなのですが、実際には段々とパターンが変化して
行くわけで、上の式で変化のパターンを捉えて、下の式に入れ
その時のパターンに合わせた計算を行うのがカルマンフィルタです。

もう少し詳しく、見てみる事にします。

まず上の式ですがxtが状態。xt+1は、一期先の状態。つまりこの式は
一期先の状態は、今の状態をF倍したものにG倍したwt(これがノイズ)
を加えたものだよ。と言っているわけです。

ここでFとかGとかは、何なのかと言えば、早い話が自分の推定したい
状態に、ツジツマが合うような物を作って勝手に入れておけ、という意味。

つまり、どういう状態を知りたいのか?という話が先にあってそれに
合わせて決めてくださいってこと。
では、下の式は?と言えば

ytが、予測で言えば予測したいもの。つまり予測したいものは
H倍した状態xtにvtと言うノイズが乗ったものだと書いてあるわけ。

Hも同様に、ツジツマが合うような物を入れろ!と言う話。

でこの式、予測方程式とでも言えば、そうか!と思うかも知れないが
普通は観測方程式と言うのだけど、ちょい不思議でしょ?

どう言う事なのか?と言えば、まずこの式で対象を観測し、観測された
状態を上の式に渡してやり、上の式で今の状態から、次の状態を推定し
もう一回この式に戻って来て、次の状態を使って計算する事で予測する
と言う、行ったり来たりをして、最後に予測が出来上がる仕組み。

観測する -> 今の状態を作る -> 次の状態を作る -> 予測する

と言う流れが、カルマンフィルタの、ざっくりした、あらましです。

>ここで,システム雑音 w と観測雑音 v の共分散は,

と、なにやら難しそう。

黙ってカルマンフィルタと言えば、ノイズは正規分布していると
言うのが大前提。

εt 〜 N(0,σ^2)

#ノイズεtは、平均が0分散がσ^2の正規分布型に従うと言う書き方

共分散とは、分散があるもの同士の関係が、どういう風に影響しあってるか?
と言う事なのですが、ここで、状態側のノイズを N(0,Q)、観測側をN(0,R)
とし、このふたつのノイズ同士が、独立していて、影響を与えない関係よと
書いてあるわけです。
>このような状態空間表現において,カルマンフィルタによる1期先予測は,次のような逐次推定アルゴリズムとして与えられる。

と書いてありますが、先ほどの、ふたつの式が問題を[状態空間表現]しているわけで、この一連の表現を[カルマンフィルタ]と呼ぶわけです。

ここで状態空間とは平たく言えばデータのセット(組)の事です。データの性質がだんだん変わっていく様子を捉える為に、性質の変化を捉えたいデータを組みにして扱う事を、状態空間表現と呼びます。

>t-1時点までの観測 Y(t-1)=[y(t-1),y(t-2),...] に基づいて,状態 x の最適な予測値 〔x(t-1)|Y(t-1)〕 を手にしていたとすると,1期先の状態 x(t) は,状態方程式から
読めないとしたら〔x(t-1)|Y(t-1)〕でしょうか?例えば

(a|b)  bな時のa

と読みます。

〔x(t-1)|Y(t-1)〕は、Y(t-1)の時のx(t-1)という事なので、日本語風にすればt-1(一期前)までの観測値Yまで得られていて、t-1までの状態xが、と言うような意味になります。
と、言う事で、上の方程式の

x(t|t-1) = F x(t-1|t-1)

の左辺は、

 Yがt-1まであって、xがt-1まである状態がxがあり、それにFを掛ければ

という意味で

右辺は

Yがt-1まであって、xがtまでの状態xが計算できますよ。

と書いてあるわけ。

で次にPについて書いてあるけれど、読み方は同じなので
割愛しますが、Tと言うのが出ていますが、これは転置行列
という意味で、行列の縦横をひっくり返せと言う意味。

>t の時点には,新たな観測値 y(t) が得られるから,観測方程式によって,この>事前予測値 〔x(t)|Y(t-1)〕 を改善・更新 〔x(t)|Y(t)〕 することができる。
>ここで,K は,カルマンゲインと呼ばれる

と、ここまではさっきと同じ話でtが進めば、それに応じて新しい状態が得られますよ。と書いてあるだけ。

ここでKと言うのが出てきたが、これがカルマンゲインと呼ばれる奴で、何のゲインか?と言えば、信号とノイズの比の事です。早い話が、どのくらいノイズに埋もれた話かを見たい場合は、Kの値を見る必要があると言う事。

>一方,観測値 y の1期先予測値 y(t+1|t) は,
>で与えられる。ここで,S は,y の予測値の共分散である。
>これらのステップを繰返すことによって,状態の推定を逐次改善していきながら,観測値の推定が行えるのである。

と言う事で一期先の状態が推定出来れば、それを観測方程式に入れれば、一期先の値(つまり予測値)がわかると言うのがカルマンの大まかな仕組み。

で、この作業を繰り返し行う事で、いつも次の状態に合わせた予測が出来るわけ。
最後にあるARの説明もしようかと思いましたが、他でもやっているので
割愛します。

こういうのって、説明されても、わからん人と説明されなくても判る人の
両極端な話だろうし、説明されても判らん人は、辛い話の類のはず。

なんだかはわからんが使えればいいってのなら、レヴィさんや檜木さんの
ソースを、弄ればいい話だし、そう遠い話でもないと思います。

なぜ予測がカルマンで出来るかと言えば、カルマンの上の式(状態)で、
明日用に使うデータのセットを作り出し、そのデータのセットを使って
下の式(観測)で、予測するからです。

つまり明日の状態(明日用のデータのセット)が、きちんと出来上がるか
どうかがカルマンの命で、そうなるような、データのセットを選んで
やれれば良いわけだけど、この評価は一回きりで終わりにしたAICの
トピックをもう少し拡張することで検討したいと考えています。

と言う事で、この話もだいたい終わり。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Rで経済時系列 更新情報

Rで経済時系列のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング