1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

カルマンフィルター

Last updated at Posted at 2021-05-23

カルマンフィルターについてまとめておく

このブログでは線形カルマンフィルターを解説する。

カルマンフィルターとは何か

カルマンフィルターとは時系列データから逐次的に状態を推定する1つの手法である。1960年代のアポロ計画の際に宇宙船の位置を推定する手法として利用されたことが有名であろう。

宇宙船の位置を推定する例でいうと、宇宙船が電波を発信し、地球上の観測点で電波を観測することになる。但し、そこには2つの誤差がある。1つは観測誤差、そしてもう一つが宇宙船そのものの状態の誤差(本来はまっすぐ飛んでいるが多少の揺らぎが生じる)である。宇宙船は電波を一定間隔で発信し続け、それを地球上で受信するので、時系列のデータとなる。この時系列の観測情報を$Y_t$であらわし、状態を$\beta_t$で表すことにする。この2つの時系列データは次のように表現できる。
$$Y_t = c + \tilde \beta_t + \tilde e_t \tag{1}$$
$$ \tilde \beta_t = d + \tilde \beta_{t-1} + \tilde v_t \tag{2}$$

(1)を観測方程式、(2)を状態方程式といい、いずれも線形モデルである。~がついている変数は確率変数であり、また$\tilde e_t ~ N(0, \sigma^2_e),\tilde v_t ~ N(0, \sigma^2_v)$に従うものとしている。$c$と$d$は定数である。

ここで観測できるのは$Y_t$のみであることに注意する。(1)の観測方程式をみると、$Y_t$は状態$\tilde \beta_t$と正規分布に従う確率変数$\tilde e_t$によって決まる。そして、(2)の状態方程式を見ると$\tilde \beta_t$は1期前の状態$\tilde \beta_{t-1}$と正規分布に従う確率変数$\tilde v_t$によって決まる。すなわち、今期の状態$\tilde \beta_t$を1期前の状態$\tilde \beta_{t-1}$に状態の誤差を加えて推定し、今期の観測値$Y_t$は推定された今期の状態$\tilde \beta_t$に観測の誤差を加えたものとなっている。これは1期前の状態が今期の状態に影響し、その結果として観測値が得られていると捉えることができる。このような構造方程式をもつモデルを状態空間モデルといい、時系列の情報に基づいて、逐次的に状態を推定できることを示している。

尚、上記の構造方程式は状態空間モデルの一例であり、実際には(2)の状態方程式の$\beta_{t-1}$に係数を持たせることや、(1)観測方程式に時間変化する説明変数を組み込む等、様々な構造を持つことが可能となっている。

次回以降、このブログで扱う記述のルールを述べたのちに、具体的にカルマンフィルターの持つ意味や推定の仕方等の解説を行う。またいずれpythonを用いたカルマンフィルターの利用方法、さらには誤差をMCMCを用いて推定する方法等の解説をしていく予定である。

参考文献

このブログの参考文献は下記の通り
経済・ファイナンスのための カルマンフィルター入門 2019/2/6 森平 爽一郎 (著)
時系列分析と状態空間モデルの基礎: RとStanで学ぶ理論と実装 2018/2/14 馬場 真哉 (著)

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?