見出し画像

【まえがき】RとStanではじめる心理学のための時系列分析入門 を PythonとPyMC Ver.5 で

この記事は「シリーズのまえがき」と「pymc環境の構築」の2点に焦点をあてています。


まえがき


シリーズ:RとStanではじめる心理学のための時系列分析入門 を PythonとPyMC Ver.5 で

本シリーズは書籍「RとStanではじめる心理学のための時系列分析入門」(講談社、以下「テキスト」と呼びます)を PythonとPyMC Ver.5 で実践した軌跡の記録です。

テキスト「RとStanではじめる心理学のための時系列分析入門」の紹介

テキストは、2022年6月に初版発行され、時系列分析の主要テーマを簡潔に取り上げた「チュートリアル」的で素晴らしい入門書です。

テーマは、自己回帰型の回帰分析、状態空間モデル、多変量解析、信号処理、関数データ解析(FDA)などなど。
多岐にわたる壮大な1冊です。
ぜひ amazonサイトの画像サンプル4枚目の「時系列解析の地図」をご覧いただき、旅の行程をお確かめ下さい!
ちなみに、amazonの「サンプルを読む」で、R・Stanのサンプルコード掲載サイトのリンクを知ることができます。

旅装束のイラスト(男性):「いらすとや」さんより

このシリーズ記事は「テキストのR言語をPythonで楽しむこと」を目的にして描きます。
Pythonコードと実行結果で構成するシンプルな記事になる予定です。
ぜひ、テキストの解説や数式を読みながら、Pythonによる時系列分析を楽しんでいきましょう

引用掲示

この記事は、出典に記載の書籍に掲載された文章及びコードを引用し、適宜、掲載文章とコードを改変して書いています。
Pythonコードは「見つけることができた範囲内の処理内容」であり、処理の正確性は担保しておりません。
誤りや改善点がありましたら、ぜひ教えてください。

【出典】
「RとStanではじめる心理学のための時系列分析入門」(第2刷、小森政嗣 著、講談社)

この記事で利用した環境の主な内容です。
・Windows10
・Python 3.11.5
・Anaconda利用

pymc環境の構築


Anacondaでpymc環境を構築

第4章の「状態空間モデル」を「PyMC」で構築します。
pymcは numpy等の別パッケージとの強いバージョン依存関係があるようですので、PyMC専用の環境をAnacondaで構築しています。
ちなみにVSCodeでJupyter Notebookを使っています。

numpyroをpymc環境へ

NUTSサンプリングの時間短縮の目的で「numpyro」を利用します。
pymc標準のNUTSサンプラーでは何時間もかかるモデルがあり、ここはひとつ、高速サンプラーを導入しましょう。
numpyroもnumpy等とのバージョン依存関係あるようですので、pymc環境へ特別にインストールします。

環境構築の概要

①インストールしながらpymc環境作成
PyMC公式サイトのcondaインストール方法に準拠して実行します。
conda-forgeからpymc、bambi、seaborn、ipykernelを一気にインストールしてpymc環境を新規作成します。
環境名の部分は、pymc_envなどの環境名を設定してください。

conda create -c conda-forge -n pymc_env 環境名 bambi seaborn ipykernel

②pymc環境へ移動
pymc環境をアクティブにします。

conda activate 環境名

③numpyroのインストール
condaでは何故か整合性エラーが発生してインストールできなかったので、やむを得ずpipでインストールしました。

pip install numpyro

④tensorflow-probabilityのインストール
tensorflow-probabilityはnumpyroが参照するライブラリですので、合わせてインストールします。
こちらも pip で。

pip install tensorflow-probability

(参考)記事作成に用いたpymc環境の主要ライブラリ等のバージョン

python                    3.11.6  # Python本体

pymc                      5.9.0   # PyMC
pytensor                  2.17.1  # PyMCの裏で動く強者・テンソル計算
arviz                     0.16.1  # PyMCの統計量計算・描画を担当
bambi                     0.12.0  # GLM等をformula文で記述

numpyro                   0.13.2  # 高速NUTSサンプラーとして活用
jax                       0.4.18  # numpyroの裏で動く強者
tensorflow-probability    0.22.0  # numpyroが参照する働き者

numpy                     1.25.2
pandas                    2.1.1
matplotlib-base           3.8.0
seaborn                   0.13.0
graphviz                  8.1.0   # modelの描画で活躍
python-graphviz           0.20.1  # modelの描画で活躍

以上でこの記事は終了です。


目次へ


ブログの紹介


note で3つのシリーズ記事を書いています。
ぜひ覗いていってくださいね!

1.のんびり統計
統計検定2級の問題集を手がかりにして、確率・統計をざっくり掘り下げるブログです。
雑談感覚で大丈夫です。ぜひ覗いていってくださいね。
統計検定2級公式問題集CBT対応版に対応しています。

2.実験!たのしいベイズモデリングをPyMC Ver.5で

書籍「たのしいベイズモデリング」の心理学研究に用いられたベイズモデルを PyMC Ver.5で描いて分析します。
この書籍をはじめ、多くのベイズモデルは R言語+Stanで書かれています。
PyMCの可能性を探り出し、手軽にベイズモデリングを実践できるように努めます。
身近なテーマ、イメージしやすいテーマですので、ぜひぜひPyMCで動かして、一緒に楽しみましょう!

3.Python機械学習プログラミング実践記
書籍「Python機械学習プログラミング PyTorch & scikit-learn編」を学んだときのさまざまな思いを記事にしました。
この書籍は、scikit-learn と PyTorch の教科書です。
よかったらぜひ、お試しくださいませ。

4.データサイエンスっぽいことを綴る
統計、データ分析、AI、機械学習、Python のコラムを不定期に綴っています。
「統計」「Python」「数学とPython」「R」のシリーズが生まれています。

最後までお読みいただきまして、ありがとうございました。


この記事が参加している募集

お金について考える

この記事が気に入ったらサポートをしてみませんか?