Pythonではじめる時系列分析入門:サポートページ

『Pythonではじめる時系列分析入門』のサポートページです。

この記事では、書籍の特徴などの紹介をしています。
本書に使用したサンプルデータとPythonのコードは、すべてGitHubから参照できます
ライブラリのインストール方法や実行方法の補足事項なども記しています。

 

※ 書籍タイトルのリンクからAmazonへ移動できます。

Pythonではじめる時系列分析入門

2024年09月:初版第1刷発行

 

目次

  1. 基本情報
  2. 書籍の特徴
    1. テーマ
    2. 対象読者
    3. 書籍の構成
    4. 本書に載っていないこと
  3. 本書のサポート情報
    1. データとコードのダウンロード
    2. 環境構築に関する情報

 

1.基本情報

出版社  : 講談社
著者   : 馬場真哉(このサイト、Logics of Blueの管理人です)
タイトル : Pythonではじめる 時系列分析入門
発売日  : 2024年9月20日

簡易目次 :
<基礎編>
第1部 時系列分析の基本
第2部 Pythonによる時系列分析の基本
第3部 基本的な時系列分析の手法
<応用編>
第4部 Box-Jenkins法とその周辺
第5部 線形ガウス状態空間モデル
第6部 機械学習法
第7部 時系列予測の実践的技術

 

2.書籍の特徴

前書きの内容を参照しつつ、書籍の特徴を記します。

以下、前書きより引用

 
時系列分析の良書は多く出版されています.その中で本書の特徴をまとめると以下のようになるでしょう.

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

 

テーマ

本書は、実装コードが中心のリファレンス的な書籍と、数式がたくさん載っている学術書の間に入るような本です。
実務者の方が、自分で納得しながら分析を実行できるようになることを目指しています。
そのため、実践的な技術の解説が中心ですが、カルマンフィルタの導出など理論的な背景も解説しています。

実装コードを書くことは、街を歩くことに似ています。実際に手を動かしてみることで、街の様子を感覚的につかむことができます。
モデルの背景にある理論を学ぶことは、地図を読むことに似ていると思います。「この通りをまっすぐ進んだ後、信号で右に曲がり、つきあたりを左に進む」といった手順を丸暗記するよりも、地図を見てルートを考えられるようになる方が応用がききます。
手法同士の関連性を知ったり、「なぜこの手法は、このような計算式になっているのか」といった手法の成り立ちや全体像をつかむために、理論を学ぶことは有益です。

例えばPythonを使って季節調整を行う方法は、ググれば簡単にわかると思います。でも、季節調整の計算式について載っている文献は意外と少ない印象です。簡単な平均値の計算の組み合わせで実行できるのですが「ライブラリを使わなければ、季節調整できない」という人は意外と多くいるのではないでしょうか。
本書では、定義通りに季節調整やトレンド除去を行う手順についても解説し、その後でstatsmodelsやsktimeという便利なライブラリを使った実践的な実装方法を解説するという流れにしています。

また、指数平滑化法は需要予測手法の定番中の定番ですが、この手法についても、意外と文献が少なく「深層学習は知っているけれど、指数平滑化法はよく知らない」という方もいらっしゃるようです。
本書では、前座的に数行の説明をして終わり、というのではなく、1章かけてしっかりと指数平滑化についても解説しました。
深層学習についても本書で扱っています。古典的な技術から、比較的新しい手法まで解説しています。

カルマンフィルタの導出はまじめにやると大変なのですが、ローカルレベルモデルに対象を絞れば、高校数学の知識にちょっとした確率論の公式を付け加えるだけで十分理解できます。最良線形不偏推定量に基礎づけされた導出法を採用しているので、多変量正規分布すら登場しません。
とはいえ、カルマンフィルタという言葉を聞いたことすら無いという方もいらっしゃると思います。そういう方を想定して本書を執筆しているので、安心してください。まずはカルマンフィルタについて、直感的な理解を促す解説をした後で、数式を用いてカルマンフィルタを導出することで、「納得」しながら時系列データを分析できるようになることを目指しました。

もちろん、実装面についても丁寧に解説しています。sktimeライブラリによるパイプライン処理や、データの補間をする際の落とし穴、モデルの保存と読み込みの方法など、分析を行う上で役に立つTips的な内容も盛り込みました。

 

対象読者

前書きより引用

 
実務で適用しにくい基礎理論ばかりを学びたくはない.実務的な内容を学びたいが,実装コードの羅列では面白くない.納得感を得たいけれども,発展的な書籍は数式が多すぎて読み切れない.このような悩みをお持ちの方にとって,本書はちょうどよいレベル感だと思います.本書では,実務的な内容を扱いつつ,できるだけやさしく理論についても解説しています.

 
時系列分析の重要性は日に日に高まっています。「統計学入門」に載っているような、データの独立性を仮定した分析手法が適用できる場面は、「現場のデータ分析」では決して多くありません。時系列分析は統計学のやや応用的な分野になりますが、これを学ぶことは現代において必須ともいえます。

とはいえ、当方もいろいろな場所でデータ分析を教えた経験があります。「統計学入門」の内容ですら、決して容易に理解できるものではないことは経験として知っています。その上でさらに時系列分析まで勉強しなくてはならないとしり込みしてしまう方もいるかもしれません。
それでも、時系列分析の門をくぐってほしいという願いを込めて本書を執筆しました。

手を動かしながら学べる技術書は、実装コードを写経することで、少なくともページをめくって先に進めていくことができるという意味で、非常に優れた形式だと思っています。同じページを何日あるいは何か月にもわたって考え抜くという経験を、ぜひ人生の中でしてほしいとは思いますが、それを万人に強制することには無理があります。人によって向き不向きの違いもあるはずです。

けれども手を動かすだけだと、分析の中身がわからないままになりがちです。「何やってるのか、あんまりよくわかってないですけどね」という自虐を言うことに罪悪感を抱かなくなる日はいつか来ます。
その日が来る前に、納得できたという実感を持ってほしいです。その実感を得ることができたら、それはきっと、新しいことを学ぼうとする原動力になってくれると思います。

本書は「手を動かしながら学べる技術書」の中に、突如としてカルマンフィルタの導出などが入ってくる少し変わった入門書です。
けれども1冊の本に両方の内容を載せる必要性があると私は思っています。理論を学ぶための本を別途購入するのと比べると、理論を学ぶハードルが下がるからです。同じ手法に対して複数回異なる方法で説明するため、納得感を得られる可能性が高くなるからです。

本書は、理論とPython実装をバランスよく学べる、初学者向け入門書です。
これをメリットだと思える方が、本書の対象読者だといえます。

逆に言えば、数学的に高度な書籍を読む能力がある方にとって、本書はあまり魅力的ではないと思います。

 

書籍の構成

簡易目次を再掲します。
第1部から第3部までは基礎編となっており、基礎的あるいは古典的な技術を中心に解説します。
第4部以降はやや高度な話題も扱います。第7部は時系列分析におけるTips的な内容が中心です。

<基礎編>
第1部 時系列分析の基本
第2部 Pythonによる時系列分析の基本
第3部 基本的な時系列分析の手法

<応用編>
第4部 Box-Jenkins法とその周辺
第5部 線形ガウス状態空間モデル
第6部 機械学習法
第7部 時系列予測の実践的技術

各々の部の紹介を以下で行います。

 

第1部 時系列分析の基本

いわゆる「統計学入門」で学ぶ内容と、時系列分析で学ぶ内容の違いなどを紹介しています。
データ生成過程や自己相関など重要かつ基礎的な用語を最初にまとめて紹介します。基礎こそが難しいとはよく言われることで、抽象的な内容になりがちですが、できるだけ具体例も示すようにしました。

第1章と2章では数式を使っていません。
ランダムウォーク過程などのデータ生成過程を紹介している第3章では数式を使いますが、模式図もあわせて示すことで、なるべく直観的に時系列分析の基礎を学べるようになっています。

 

第2部 Pythonによる時系列分析の基本

Pythonの基礎と、Pythonで時系列分析を行う際の基本的な事項を紹介しています。
実践的に重要となる日付処理については特に丁寧に解説しました。
また、シミュレーションを通して、時系列データに対して回帰分析を適用する時の危険性とその対策なども解説しています。

 

第3部 基本的な時系列分析の手法

第3部は特に力を入れて執筆しました。
ここでは、ベースラインとして利用できる単純な手法を解説しています。ナイーブ予測といった本当に単純な予測手法や、古典的な季節調整法、そして指数平滑化法を扱います。
sktimeというライブラリを使った効率的な実装方法についても解説しています。

 

第4部 Box-Jenkins法とその周辺

ARモデルからMAモデル、ARMA、ARIMA、SARIMA、SARIMAXまで、Box-Jenkins法で利用される様々なモデルについて解説しています。
SARIMAモデルは特に、扱っている教科書がやや少ないため、季節ランダムウォーク過程をシミュレーションしたり、いくつかの次数のSARIMAモデルを式展開したり、実装面以外も丁寧に解説しました。

 

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

現代的な時系列分析で欠かすことのできない状態空間モデルについて解説します。線形ガウス型のモデルに絞ったため、実装は非常に簡単になっています。
状態空間モデルやカルマンフィルタの直感的な解説をした後で、ローカルレベルモデルに限定しますが、カルマンフィルタの導出まで行います。
実装面では、複数の周期(週単位と年単位)を持つモデルの構築などを解説します。

 

第6部 機械学習法

LightGBMと深層学習という非常に人気のある2つの機械学習法を用いた時系列予測の方法を解説します。
最初に数式を使ってモデルの構造や予測値の計算の仕方について説明してから、実装に移るという流れになっています。
深層学習では多層パーセプトロンとRNN、LSTMを扱います。優れたライブラリを使うことで、非常に短いコードで実装できます。
実装面ではデータの前処理の方法なども解説しています。

 

第7部 時系列予測の実践的技術

最後の第7部では実務的なTipsを紹介します。
例えば、状態空間モデルのパラメータを保存して、モデルの推定と将来の予測を切り分ける方法などを解説します。
また、欠測値の取り扱いなど、時系列分析を行う際の悩みどころになる話題も扱います。

 

本書に載っていないこと

本書では数理的な難易度を下げながら、理論についても解説するため、扱う対象をやや絞りました。例えば検定統計量などの漸近分布の導出などは行いません。また、状態空間モデルは線形ガウス型に絞っています。

 

3.本書のサポート情報

データとコードのダウンロード方法などを説明します。

 

データとコードのダウンロード

Githubで、書籍中で使われたサンプルデータとコードを配布しています。

ファイルを一括でダウンロードする場合は、以下の図を参考にしてZIPファイルをダウンロードしてください。

 

環境構築に関する情報

詳細は書籍を参照いただければと思いますが、環境構築に関する情報をここでも共有します。
Windowsの利用を前提としています。

インストールについて

以下のURLからPythonをインストールします。
画面上部のタブの「Downloads」にカーソルを合わせると、ダウンロードボタンが出てきます。

https://www.python.org/

ライブラリのインストールについては、「requirements.txt」をGithubからダウンロードして、一括ダウンロードをすることをおすすめします。
書籍では、venvを用いて仮想環境を作ることを推奨しています。

書籍(第2部第1章)の内容と重複しますが、環境構築のコマンドを以下に提示します。
Pythonをインストールし、Cドライブに「C:¥py_tsa」というフォルダを作っている前提で説明を行います。

まずはコマンドプロンプトを起動します。
そして以下のコマンドで、フォルダを移動します。

cd C:¥py_tsa

その後、以下のコマンドで、仮想環境を作ります。

python -m venv py_tsa_venv

仮想環境を起動します。

C:¥py_tsa¥py_tsa_venv¥Scripts¥activate.bat

pipをアップデートします。

python -m pip install --upgrade pip

Githubからダウンロードした「requirements.txt」を「C:¥py_tsa」というフォルダに配置してから、以下のコマンドを実行すれば、ライブラリを一括でインストールできます。

pip install -r requirements.txt

ライブラリのインストールが終わった後に以下のコマンドを実行すると、JupyterLabが起動され、プログラミングを実行できるようになります。

jupyter lab

 

参考情報

「requirements.txt」を使わない場合は、以下のようにライブラリをインストールします。
以下の方法でインストールした場合は、ライブラリのバージョンが書籍と変わる可能性があり、実行結果なども変わる可能性があるので注意してください。


pip install statsmodels
pip install pmdarima
pip install seaborn
pip install jupyterlab
pip install scikit-learn
pip install sktime
pip install plotly
pip install lightgbm
pip install darts

なお、書籍中ではnumpyのバージョン1.26.4を利用しています。
必要に応じて、以下のコマンドを実行して、numpyのバージョンを下げてください。

pip install numpy==1.26.4

 

Pythonに関する情報

Pythonに関しては、下記のWebサイトも参考にして下さい。
必要に応じて、このリンク集は追記・修正します。

ゼロからのPython入門講座
→Pythonの初歩が学べるWebサイトです。

Pythonのドキュメント(日本語)
→Pythonの基本機能が解説されています。チュートリアルなどがあるので便利です。

Pythonではじめる時系列分析入門:サポートページ” に対して2件のコメントがあります。

  1. 通りすがりの書籍購入者 より:

    初めまして
    本書籍に関する誤植等の情報はどちらに記載されていますでしょうか?

    1. 馬場真哉 より:

      はじめまして。
      拙著をお読みいただき、ありがとうございます。

      現在、まだ誤植情報は出ておりません。
      ほかの書籍では、講談社サイエンティフィク様のWebサイトにて公開されることが多いです。

      お気づきの点がございましたら、講談社サイエンティフィク様に連絡いただくか、
      当方まで連絡いただければ幸いです。

      当方のメールアドレスは以下の通りです。
      logics.of.blue★gmail.com

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください