Home

いまさら聞けない 

Pythonでデータ分析

―多変量解析,ベイズ統計分析(PyStanPyMC)―

岡本安晴(著)

丸善出版、2019

ISBN-13: 978-4621303610

 

サンプルスクリプトの更新と補遺

第10〜12章のStanサンプルスクリプトのPyStan 3用スクリプト例

PyStan 2からPyStan 3

Pythonの準備PyStan、PyMC3とWindowsなど日本語表記のグラフ

PyMC3のエラー(2021.03PyMC3のサンプリング関数Sampleの引数変更

サンプルプログラムとデータのファイル

Jupyterでの本書のサンプルプログラムの使用法

ダウンロードしたファイルのJupyterでの利用法を説明したウェブサイトを用意した。

Jupyter Notebook用のプログラムファイルのウェブサイも用意した。

リスト 6.2.2の訂正版Listing_6_2_2.pdfです。

CentOSでの準備PyStan(Python用Stan)のインストールについてPyMC3とWindowsパソコンのこと

 

 各章の内容は以下の通りであり、機械学習におけるデータ前処理(data preprocessing in machine learning)の視点から言えば、カテゴリ項目(categorical items)の前処理が「第8章 数量化」で扱われている。

 

序章 Pythonは初めてという読者のために、Pythonのインストールと使い方の説明をしている。

第1章 基本統計量の計算

  平均、分散など基本統計量を取り上げて、Pythonのコード例を示した。Pythonプログラミングの雰囲気を示すとともに、numpyなどのライブラリの利用例も示した。

  なお、基本的な統計分析のためのプログラム例を扱ったウェブサイトも用意している。統計学の電子書籍<岡本安晴「データを使いこなすための統計入門」22世紀アート>も上梓した。

第2章 グラフ描画

  情報は視覚化されると解り易い。データおよびその分析結果の視覚化はグラフという形で表示される。Pythonでのグラフ描画のライブラリとしてmatplotlibを取り上げる。棒グラフ、ヒストグラム、散布図、折れ線グラフを例に挙げて、その使い易さを示す。なお、日本語対応のグラフ描画はこのウェブサイトで説明している。

第3章 ファイル入出力

  簡単なデータは、Pythonスクリプト中に書き込むことができるが、実用的にはファイルから、あるいは適当なストリームからの入力になる。本章において、ファイル入出力の方法として、テキストファイル、CSV形式ファイル、バイナリファイルを取り上げる。

第4章 行列演算とPythonスクリプト

  多変量解析の基礎である行列演算を取り上げる。Pythonおける行列演算のライブラリとしてnumpyを取り上げ、行列演算が簡単に行えることを説明する。

第5章 単回帰分析

  変数間の関係を1次式で表すのは、統計分析の1つの出発点である。その最も簡単なモデルが2変数の関係を1次式で表す単回帰モデルである。この単回帰モデルを行列演算で表し、その解が行列で簡単に表せることを説明するとともに、numpyndarrayを用いたスクリプト例を示す。

第6章 重回帰分析

  重回帰分析では、複数の独立変数の影響が1次式で表される。行列を用いると、形式的には単回帰モデルと同様に扱える。しかし、複数の独立変数を用いることにより、単回帰モデルでは表されない関係を扱うことができるが、これは演習課題とした。

7章 主成分分析

  多くの変数から構成されるデータは、その主な情報がいくつかの成分で表されることが多い。この成分を変数の1次式で求める方法として主成分分析があるが、本書ではこれを正射影の観点から説明した。主成分分析も行列を用いると簡単に表すことができる。

第8章 数量化

  調査あるいは質問紙データは、カテゴリ変数がよく用いられる。カテゴリ変数を数量化すると、他の数量変数とともに標準的な多変量解析を適用することができる。数量化の計算は、行列を使えば簡単である。数量化のためのPythonスクリプト例を示す。

第9章 確率計算とPythonスクリプト

  ベイズ分析は、確率モデルの強力な方法として注目を集めている。確率計算のPythonスクリプト例とともに、ベイズ分析の基本モデルの簡明さを示す。

  図9.4.3p.176)においてMAP(モード)を示しているが、MAPがよい推定値であることを示す報告がある(岡本、2022)。

10章 PyStanによる2項分布分析――Stan入門――

  ベイズ分析は、事後分布をシミュレーションで求める方法が開発されて実用性と有効性が飛躍的に高まった。Stanは、シミュレーションで求めるライブラリの1つであり、Python用のStanPyStanである。基礎的な使い方は簡単であり、簡単な確率モデルである2項分布を使って説明する。B. Lambert (2018). A Students Guide to Bayesian Statistics. Sage (p. 369) には、

Stan is more general than BUGS and JAGS

と書かれている。

  なお、PyStanWindowsで用いるときは、C++コンパイラの選択とインストールが必要であるが、Anacondaを用いると適切なC++コンパイラの準備などがPyStanのインストール時に自動的に行われる。これらのことの説明などのウェブサイを用意した。

11章 PyStanによる単回帰モデル分析

  統計分析の基本モデルとして単回帰モデルを取り上げ、PyStanによるベイズ分析について説明する。

12章 PyStanによるポアッソン回帰モデル分析

  回帰モデルの一般化の1つとして、ポアッソン回帰モデルを取り上げる。また、分散分析のように要因がカテゴリ変数のときは、ダミー変数を用いると回帰モデルが設定できる。クロス表の分析を、ポアッソン回帰モデルにおいてダミー変数を設定して行う。

13章 PyMCによる2項分布分析――PyMC入門――

  PyMCによっても、ベイズ分析における事後分布をシミュレーションで求めることができる。基本的方法は簡単であり、簡単な確率分布として2項分布モデルを取り上げて説明する。

  なお、PyMC3Windowsで用いるときは、AnacondaJupyter Notebookで実行するとよい。AnacondaJupyterは簡単にインストールできる。これらのことは、PyMC3の使用例を含めてこのウェブサイトで説明している。

  PyMC4の開発は中止されて、PyMC3の開発が続けられることが、ウェブサイト

https://pypi.org/project/pymc3/

に書かれている。PyMC3による簡単な統計分析スクリプト例をこのウェブサイトに用意した。

14章 PyMCによる単回帰モデル分析

  統計分析の基本モデルの1つとしての単回帰モデルを取り上げ、PyMCによる分析について説明する。

15章 PyMCによるポアッソン回帰モデル分析

  回帰モデルの一般化の1つとして、ポアッソン回帰モデルを取り上げる。また、分散分析のように要因がカテゴリ変数のときは、ダミー変数を用いると回帰モデルが設定できる。クロス表の分析を、ポアッソン回帰モデルにおいてダミー変数を設定して行う。

 

サンプルプログラムとサンプルデータファイル

単回帰分析重回帰分析(2019.11更新)主成分分析数量化

第8章補足(カテゴリデータの数量化前処理と分析例)

2項分布(Stan回帰分析(Stanポアッソン回帰分析(Stan

2項分布(PyMC3回帰分析(PyMC3ポアッソン回帰分析(PyMC3

 

演習課題の解答例とサンプルプログラムのファイル

本演習課題は、全体として疑似相関に関わるものとして用意した。

散布図

演習課題2.E.1 略解ファイル、演習課題2.E.2 略解ファイル

単回帰分析

演習課題5.E.1 略解ファイル、演習課題5.E.2 略解ファイル

重回帰分析

演習課題6.E.1 略解ファイル、演習課題6.E.2 略解ファイル

回帰分析(Stanスクリプト)

演習課題11.E.1 略解ファイル、演習課題11.E.2 略解ファイル

演習課題11.E.3 略解ファイル、演習課題11.E.4 略解ファイル

回帰分析(PyMC3スクリプト)

演習課題14.E.1 略解ファイル、演習課題14.E.2 略解ファイル

演習課題14.E.3 略解ファイル、演習課題14.E.4 略解ファイル

 

本書で扱っているデータ分析以外のPythonサンプルスクリプトのウェブサイトも用意している:サイトー1サイトー2

統計分析関係のPythonスクリプト例は、<岡本安晴「データを使いこなすための統計入門」22世紀アート>のウェブサイトにも用意している。

 

 

WindowsパソコンでのPyMC3

Windowsの環境においてのライブラリPyMC3は、WindowsJupyterをインストールすれば使用できる。

Jupyterの簡単なインストールとPythonの用意は、このウェブサイトで説明している。

 

CentOSでの準備

Anacondaを利用する方法もあるが、CentOS 7の場合は以下の方法でもできる。

CentOS 7での準備について説明する。Windowsubuntuの場合については、拙著の序章で説明している。Python 3の使い方はubuntuの場合と基本的に同じであるので、Python 3の準備とモジュール(ライブラリ)の準備について説明する。

CentOS 7には、既にPython 2がインストールされていて、コマンドpythonPython2が呼び出される。Python3を呼び出すときは、まずインストールする必要がある。インストールは以下の手順で行うことができる(2019.08)。これはコマンドyumを用いる方法である。Python3の最新版をダウンロードしてmakeによりインストールする方法もあるが、yumでインストールできるPython3を用いる方が使い易い。

まず、suコマンドを実行して、以下の操作を管理者権限で行う。

yumでインストールするために、以下のコマンドでRPMの準備をしておく。

yum install -y https://centos7.iuscommunity.org/ius-release.rpm

その後、次のコマンドでPython 3の最新版のチェックを行っておく。

yum search python36

次に、Python 3.6のインストールを行う。次のコマンドの実行でPython 3.6.8がインストールされる(2019.08)。

yum install -y python36u python36u-libs python36u-devel python36u-pip

インストール後、Python 3をコマンドpython3.6で次のように呼び出すと、インストールされたバージョンが表示される。

python3.6 V

上のコマンドに対しての出力は

Python 3.6.8

である(2019.08)。

次に必要なモジュールをインストールするが、まずインストール用コマンドpipの更新を行う。Python 3.6用なのでpip3.6を付けてpip3.6によってpipを更新するという形になる。

pip3.6 install --upgrade pip

pipの更新後、必要なモジュールをインストールする。例えば、モジュールnumpymatplotlibscipyをインストールするときは以下のように行う。

pip3.6 install numpy matplotlib scipy

また、モジュールtkinterも必要なときは、これはyumによってインストールする。

yum install python36u-tkinter

である。

PyMC3も、

pip3.6 install pymc3

でインストールできる(2019.08)。

PyStanのインストールはバージョンを指定した方が良い(2019.08)。また、PyStanは実行時にC++コンパイラが必要であるが、g++がインストールされておればC++コンパイラもインストールされている。コマンドg++

g++

と実行してみて、入力ファイル名が無いなどのエラーが出ればコンパイラーはインストールされている。コマンドg++が見つかりませんというエラーのときは、g++をインストールしておかなければならない。g++以外のC++コンパイラーを使うこともできるが、g++をインストールする方法が簡単である。

PyStanのインストールは、pip3.6コマンドで簡単にできるが、PyStanのバージョンは最新のものではなくpystan 2.18.1が良いようである(2019.08)。PyStanのバージョン2.18.1を指定して、次のようにpip3.6を実行する。

pip3.6 install pystan==2.18.1

これで、PyStanが利用できる。

 

 

Home