1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

記事投稿キャンペーン 「2024年!初アウトプットをしよう」

『時系列分析と状態空間モデルの基礎』をPyStanで実装した(第6部4章のみ)

Last updated at Posted at 2024-01-21

やったこと

  • 「時系列分析と状態空間モデルの基礎 RとStanで学ぶ理論と実装」の第6部4章をPyStanで実装した

この記事の対象者

  • 状態空間モデルをpythonで実装したいけど書き方が分からない!という人
  • PyStanのバージョンを本記事執筆時点のもので動かしたい人

はじめに

  • 本記事は私が参考にさせて頂いた元記事に、以下の2点を追加しただけの記事になります。
    • 第6部4章に特化
    • 2024年1月時点(記事執筆時点)のPyStanのバージョンに対応
  • 元記事様:https://qiita.com/takuto512/items/1c903564691e231e1b67
  • 実際に動かそうとすると、第6部4章が無い(元記事は、第6部3章と5章はあるが4章が無い)、ライブラリのバージョンが古いという理由でハマったので、勝手ながら執筆させて頂きました。
  • 実装はGoogle Colabを用いて行っています。
  • コードはこちらから。
    https://github.com/intrinsic-motivatio-n/hayabusa-bon

実装結果

コードはgithubをご参照ください。以下のような結果になります。

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

image.png
隼本と同様の結果となり、問題なく実装できていると思います。

おまけ:実装時にハマったポイント

とにかくビルド周りでめちゃくちゃハマりました。

  • import stan pystanではなく、stanに名前が変わっているので注意です
  • import nest_asyncio これを入れないとstanのビルドでエラーが出ます
  • array[n_sample] int catch_y; // 捕獲数 stanファイルの変数の指定方法(配列を扱う場合)が変わっています。array[XXX]+型+変数名が正しいようです。
  • stm = stan.build(model, data=data_dict, random_seed=1) ビルド時にデータやseed値を指定するようです。詳細は公式ドキュメントをご確認ください。

まとめ

  • 隼本の第6部4章をpythonで実装した
    • 2024年1月時点のPyStanのバージョンに対応

参考サイト

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?