LoginSignup
4
2

More than 1 year has passed since last update.

状態空間モデルとカルマンフィルタのpython実装

Last updated at Posted at 2021-04-16

はじめに

時系列解析の分野では、データに重きを置くLSTM(DeepLaearningの一種)などの機械学習色の強い手法や、データ以外に理論や経験的知識も用いたARMAモデルなどの統計分析色の強い手法などが用いられます。
本項では後者の統計分析手法のうち、後者に属する線形ガウス状態空間モデルについて記述します。ARMAモデルなどを状態空間モデルとして表現することで、予測、フィルタリング、平滑化などの処理を分かりやすく記述することができます。

参考
https://ocwx.ocw.u-tokyo.ac.jp/course_11416/
実装
https://github.com/suepiiin/time_series_analysis

線形ガウス状態空間モデル

線形ガウス状態空間モデルを以下のように定義する。
システムモデル(状態方程式)
$$ \boldsymbol{x}_n = F_n\boldsymbol{x}_{n-1} + G_n\boldsymbol{v}_n,\qquad\boldsymbol{v}_n~\sim N(0,Q_n)$$

観測モデル(観測方程式)
$$ \boldsymbol{y}_n = H_n\boldsymbol{x}_{n} + \boldsymbol{w}_n,\qquad\boldsymbol{w}_n~\sim N(0,R_n)$$

3つの分布

$$p(\boldsymbol{x}_j|\boldsymbol{y}_{1:k})=N(\boldsymbol{x}_{j|k},V_{j|k})$$
上記定義のもとで3つの分布は以下のようにかける。ここで$0\leqq t \leqq T$である。

予測分布・・・$p(\boldsymbol{x}_n|\boldsymbol{y}_{1:n-1})$
$$\boldsymbol{x}_{n|n-1}=F_n\boldsymbol{x}_{n-1|n-1},\qquad V_{n|n-1}=F_nV_{n-1|n-1}F_n^T+G_nQ_nG_n^T$$

フィルタ分布・・・$p(\boldsymbol{x}_n|\boldsymbol{y}_{1:n})$
$$\boldsymbol{x}_{n|n}=\boldsymbol{x}_{n|n-1} + K_n(\boldsymbol{y}_n - H_n\boldsymbol{x}_{n|n-1}),\qquad V_{n|n}=(I-K_nH_n)V_{n|n-1}$$
$$カルマンゲイン:K_n=V_{n|n-1}H_n^T(H_nV_{n|n-1}H_n^T+R_n)^{-1}$$

パラメータ推定

一般に最尤推定で求めます。

4
2
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
4
2