LoginSignup
0
0

More than 1 year has passed since last update.

カルマンフィルターその6

Posted at

スムージング

前回までで、t期の情報を用いて、t期の状態変数を更新するフィルタリング値の導出とその意義を説明してきた。そして、カルマンゲインの導出過程からフィルタリングにより予測の精度を向上させていることも分かった。では、実際にt期の観測値が予測値と大幅に異なっていた場合、それはどこに問題があったのであろうか。その原因の1つには、過去からの情報により逐次的に推定した状態変数が大きく間違っていた可能性がある。それを補正するのが本日説明するスムージングとなる。日本語では平滑化と呼ばれるものであり、現在まででえられた情報を用いて、過去の推定値を補正する手法である。

スムージングの意義

数式展開の前に、このスムージングの意義を述べたい。例えば、今日得られた観測値は、予測値とは大きく異なっていた場合、それは昨日の推定された状態変数が間違っていた可能性がある。そうであれば、昨日の状態変数を今日の情報で補正してあげた方がよい、と考える。補正対象は昨日だけの情報ではなく、過去の全てに遡る。
また昨日の状態変数の分散が大きい場合、大きい分散に基づいて予測され値は実現した観測値と差が大きくなる。そうであれば、昨日の状態変数の分散を補正してあげた方がよい。同様に昨日だけではなく、過去の全てに遡る。

スムージングの式

下記は、本ブログのその2からの再掲であるが、状態変数のスムージング値、及びその分散を下記の(5),(8)式に示した。
$$\hat \beta_{N} \equiv E_{N}[\tilde \beta_t|\Omega_{1:N}] \tag{5}$$

$$\hat \Sigma_{t|N} \equiv Var_{t}[\tilde \beta_t|\Omega_{1:N}] \tag{8}$$

まず式(5)を上記の言葉の式に当てはめると、次のようになる。

$$\hat \beta_{N} = \hat \beta_{t|t} + \hat \Sigma_t^{*}(\hat \beta_{t+t|N}-\phi \hat \beta_{t|t}) \tag{16}$$

式(16)のカッコ内はスムージングの期待値とフィルタリング値の差であり、予測誤差である。
また、$\hat \Sigma_t^{*}$ は次のようになる。

$$\hat \Sigma_t^{*}=\phi \frac{\hat \Sigma_{t|t}}{\hat \Sigma_{t+1|t}} \tag{17}$$
式(17)の分母は状態変数の分散のt+1期の予測値、分子はt期の状態変数の分散のフィルタリング値であり、その比となっている。これを式(16)の予測誤差とかけることで、フィルタリング値を補正している。

また式(8)を上記の言葉の式に当てはめると、次のようになる。

$$\hat \Sigma_{t|N} = \hat \Sigma_{t|t} + (\Sigma_t^{*})^2 (\hat \Sigma_{t+1|N}-\hat \Sigma_{t+1|t}) \tag{18}$$

式(18)も同様に、分散のスムージングした期待値と分散のフィルタリング値の差であり、予測誤差である。それを分散の比をかけて、分散のフィルタリング値を補正している。

これで、ようやく、カルマンフィルター、カルマンスムーザーまでの解説が一区切りできた。次回以降はMCMCに行きたいところであるが、その前にこれまでのところをまずは簡単にコーディングに入ることにしたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0