LoginSignup
2
11

More than 3 years have passed since last update.

「時系列分析と状態空間モデルの基礎」(隼本)をpystanで実装してみた

Posted at

やったこと

  • 「時系列分析と状態空間モデルの基礎 RとStanで学ぶ理論と実装」のstanの章のコードをpystanを用いて実装した

この記事の対象者

  • 時系列分析を知りたくて隼本を読んだけどpythonしかわからない!pythonで書いてくれ!という人

はじめに

時系列分析の入門書で調べると必ず出てくるのが「時系列分析と状態空間モデルの基礎 RとStanで学ぶ理論と実装」,いわゆる隼本です。
この本では,「ARモデル,MAモデルといった時系列分析」,「ガウス線形状態空間モデル」「ベイズ推定による状態空間モデル」について非常に噛み砕いて説明されています。
本の中で使用されているのはR言語とstan言語であり,pythonしか使えない筆者のような人間にとってはそれが少し痛手です。

しかし,pythonでもstanを使用することも可能なので,本で紹介されていることと同じことが実装可能です。
そこで実際にpythonを用いて,隼本のstanによるベイズ推定を実装したので紹介します。

実装はgoogle colabを用いて行っています。google colabではpystanがimportするのみで使用可能です。つまり初期設定がいりません,非常に便利です。
コードはこちらから。
https://github.com/nakanakana12/hayabusa-bon

実装結果

コードはgithubを参照していただくとして,ここでは簡単に結果のみを紹介します。

Stanによるローカルレベルモデルの推定

ローカルレベルモデル(ランダムウォークにノイズが加わったもの)の状態空間を推定した結果が下記になります。
ダウンロード (11).png

青が状態,オレンジが観測値です。stanを用いて推定した状態の95%区間が青網になります。本のグラフと比べると正しく実装できていそうです。

応用:複雑な観察方程式を持つモデル

次の章では,もう少し複雑な方程式をモデリングしています。
青線が観測値,オレンジ線が過程誤差がない場合の値になります。こちらも正しく実装できています。
ダウンロード (13).png

まとめ

  • 隼本のstan部分をpythonを用いて実装した。
  • 本の結果と比較して正しく実装できていそうなことを確認した。

少しでも皆さんの役に立てれば幸いです。

参考サイト

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