2024年10月9日水曜日

『Pythonではじめる時系列分析入門』は待望の一冊

『時系列分析と状態空間モデルの基礎 RとStanで学ぶ理論と実装』などの著書がある馬場真哉さんによるPythonでの時系列分析の本です。これまでRによる時系列分析の本はいくつかありましたが、Pythonによる時系列分析の本は島田直希さんの『時系列解析』くらいしかなかったので、まさに待望の一冊です。島田さんの本も良い本なのですが、2019年出版なのでさすがにPythonのコードもそのままでは動かないものがあったりして、自分で修正する必要がありました。

『Pythonではじめる時系列分析入門』の特徴は著者がまとめているように以下の三点です。

  1. 理論とPython実装をバランスよく学べる、初心者向け入門書である
  2. 古典的な技術から、比較的新しい手法まで解説してる
  3. 実践的な実装技術や分析におけるTipsについても解説している

Pythonのサンプルコードは著者のサポートページにリンクのあるGithubからダウンロードできます。Pythonを動かす環境の構築方法は本の第2部に解説してあります。著者の言う通り、venvを新しく作ってそこに必要なライブラリを一括でインポートしてJupyter Notebookで動かすのが良いと思います。ライブラリの一括インポートの仕方も解説してあります。私の場合、既にAnacondaをインストールしていたせいか、venvからJupyter Notebookを開こうとしてもAnacondaから開かれてしまって混乱しましたが、一度venv内で「pip install notebook」としてインストールしてからは問題なくvenvのJupyter Notebookが動き、Pythonのサンプルコードも問題なく動きました。

内容としては、初心者向け入門書ということで、一変数の時系列に絞って、古典的かつ単純な予測手法から、季節調整とトレンド除去、指数平滑法、sktimeによる実装、交差検証法、Box-Jenkins法(ARMA、ARIMA、SARIMAX)、モデル選択、単位根検定、そして状態空間モデルまで丁寧に解説されていきます。

ライブラリとしてはsktimeとstatsmodelsを主に利用しています。「本書ではstatsmodelsで理論を学び、sktimeで実用的な実装をするという役割分担としています」。

第6部では機械学習法としてLightGBMやニューラルネットワークと深層学習が解説してあるのもうれしいところです。

初心者向け入門書ということで、文章も直感的に理解できるように分かりやすく丁寧に書かれていて、ところどころで数式を補足するスタイルになっています。一方で、VARなどの多変量解析などは思い切って省かれています。

 まとめると、Pythonで時系列分析を始めたい人にとっての最適な一冊としてお勧めです。

2023年11月9日木曜日

Pythonで状態空間モデル・カルマンフィルタ

 
前のブログで、島田さんのサンプルコードのうち、ARモデルのstatsmodelsのAR()はv0.12で削除されたので、代わりにAuroReg()を使うように修正するという話をまとめてました(まとめていたことを忘れていましたw)。
VARモデルや単位根検定、グレンジャー因果、状態空間モデルのうち線形ガウス型モデルのところまで、サンプルコードがほぼそのままで動くことを確認しました。非線形非ガウス型モデルの粒子フィルタのところはまだ確認していないです。

サンプルコードのうち、web上のデータを取得するところはweb上にすでにそのページが無くなっていることがあるので、そこは修正する必要があります。状態空間モデルのサンプルで使われているデータは以下のリンク先でダウンロードできるので、ダウンロードしたcsvファイルをpcの任意の場所に保存してread_csvで読み込むように修正しました。

AirPassengers.csv

それから『時系列解析』のP111の脚注にあるように、scipy.optimizeモジュールのminimize関数を利用して状態空間モデルのパラメータを最適化するときに"masked arrays are not supported"というエラーが発生するので、以下のリンク先を参考に、pykalmanのフォルダの中の"utils.py"というファイルの73行目を以下のように修正すると、ちゃんと動きました。

pykalmanの修正


私の場合、AnacondaのJupyter Notebookからpip install pykalmanでpykalmanをインストールしたので、pykalmanのutils.pyのファイルの場所はanaconda3/Lib/site-packages/pykalmanの中でした。

〈AR成分付き季節調整モデルによる長期予測〉


2023年7月24日月曜日

『基礎から学ぶJulia』を読みながらJuliaとPlutoをインストール

図書館に『基礎から学ぶJulia』があったので借りてきました。JuliaはMATLABのパワーユーザー達が開発した言語でJupyter Notebook でも動くのでインストールしてみます。
Juliaのウェブサイトからダウンロードしてインストール。私の場合はWindowsの64-bit版。

https://julialang.org/downloads/

まったく問題なくインストールできました。Windowsのメニューに追加されており、そこから起動。終わるときはexit()またはquit()またはCtrl+dを入力。
Jupyter NotebookにJuliaを追加。あらかじめAnacondaなどでJupyter Notebookをインストールしておく。Juliaを起動し、]を入力してコマンドプロンプトが青色になったらadd IJuliaと入力してインストール。Ctrl+cで元のプロンプトに戻る。Juliaを終了しJupyter Notebookを起動してNewでJuliaの追加を確認。

Jupyter Notebookから派生したJuliaに特化したインタラクティブ環境のPlutoもインストール。Juliaのプロンプトから]で青色のパッケージ・モードへ。add Plutoでインストール。Juliaのプロンプトからimport Plutoでロード。Pluto.run()で起動。


 

2023年7月1日土曜日

淡路島と四国一宮の旅

 クラブツーリズムのツアーで、前から行きたかった淡路島の伊弉諾神宮と四国の四つの一宮を巡る旅行に行ってきました。


羽田空港からANAで伊丹空港へ。そこからバスに乗り淡路ハイウェイオアシスで昼食。人生初の淡路島。蛇口をひねると玉ねぎスープが出ました。




①一番行きたかった伊弉諾神宮へ。










伊弉諾神宮を中心とした太陽の運行図

②おのころ島神社









③徳島県の一宮、大麻比古神社





捕虜のドイツ兵が作ったメガネ橋

ドイツ兵が作ったドイツ橋

宿泊は東急REIホテル。御飯がおいしかったです。
④二日目の最初は香川県の一宮、田村神社































⑤高知県の一宮、土佐神社




















⑥愛媛県の一宮、大山祇神社