- 岡本 安晴, 2019: (いまさら聞けない) Pythonでデータ分析 — 多変量解析、ベイズ統計分析 (PyStan, PyMC)。丸善出版, 244 pp. ISBN 978-4-621-30361-0.
2019年に出た本。A5判横書きのペーパーバック。
わたしの専門では、多変量統計解析を必要とする。とくに、主成分分析 (気象学の方法としては「経験的直交関数展開 (EOF)」) と、クラスター分析 (クラスター化) だ。あたまにはいっていないので、自分でやるためにも、学生にやってもらうためにも、教科書が必要だ。むかしのわたしならば、数式が書いてある教科書をみて、Fortran で (線形代数は LAPACK などのサブルーチンを利用して) プログラムを書いた。ちかごろは、R をつかう教科書ならばいくつもある。ところが、データ処理の教材を Python でつくることにしたので、多変量解析も Python でやる教科書がほしくなった。いくつもの書店をまわったが店頭ではみつからず、通信販売サイトで、主成分分析をふくむものがみつかったので注文した。(クラスター分析はこの本にはふくまれておらず、さらにさがしている)。
本の題名の「いまさら聞けない」という部分は変だが、シリーズ名のようなものだろうと思って、気にしないことにする。もしかすると、多変量解析などをいちおう習得したはずだが身についていない人むけ、ということなのだろうか。(そうだとすると、わたしにはあてはまる。)
目次を書きぬき、めくって見た段階で読書メモを書いておく。数式やプログラム例があることは見たが、その内容はまだよく見ていない。
大きく3部にわかれている。第1部は「Pythonデータ分析入門」。
「序章 Python のインストールと使い方」では、Windows のばあいと、Ubuntu (Linuxのディスとリビューションのひとつ)のばあいについて説明している。(たまたまだが、わたしがつかうOSもこの2種類なので、助かる。) つかいかたは、「スクリプトモード」(コマンドプロンプトから、python または python3 というコマンドにスクリプトファイル名をつけて起動)と、「インタラクティブモード」(Windows では IDLE内、Ubuntu では Python3 をスクリプトファイル名なしで起動したばあい) を、それぞれ簡単に説明している。
「第1章 基本統計量」。平均値、分散、標準偏差、最大・最小値、分位値 (中央値、四分位、パーセンタイル)、ならべかえ(sorting)。
「第2章 グラフ描画」。matplotlib.pyplot を利用して、棒グラフ、ヒストグラム、散布図。(この章の例文は、材料のデータをプログラム中に書きこんだ形にしている。実用的なプログラムにするには、つぎの章でやるファイル入出力をくみあわせる必要がある。)
「第3章 ファイル入出力」。おもにテキストファイルの読み書きの基本。CSVファイルは csv モジュールをつかう方法。バイナリファイルは、pickle モジュールをつかう方法。
第2部が多変量解析。
第4章で、線形代数の、行列(matrix)演算、たとえば固有値・固有ベクトルをもとめることを、 numpy モジュールをつかってやる方法をかなりくわしく説明する。
それを前提に、重回帰 (第6章)、主成分分析 (第7章) はもちろん、単回帰 (第5章) の計算も行列演算として、numpy の linalg に属する関数をつかっておこなう。
(主成分分析について、わたしは、多変量空間の座標変換ととらえることができることも、固有値・固有ベクトルのすなおな応用であることも、知っていて、Python での実行方法を知りたいだけだから、本書の説明でじゅうぶんだと感じる (実際に作業してみると不満が出るかもしれないが)。この概念がはじめての人には、もっと概念的な話が必要だろうと思う。)
数量化 (第8章)は、カテゴリ型変数を、なるべくその情報をたもつ「数量化変数」に変換することだ。カテゴリ型データを 0 と 1 がならんだ行列の形にかく。それに「数量化ベクトル」をかけることによって、「数量化変数」(数値のベクトル)を得る。数量化ベクトルのノルムが1であることを条件として、数量化変数の分散が極大になるように、数量化ベクトルを決める。得られた数量化変数を、回帰分析につかったり、主成分分析につかったりしている。(林 知己夫 氏に由来する (用語をつかいはじめたのは別の人だそうだが) 数量化第何類という表現はしていない。著者独特の定式化なのかもしれない。)
第3部は「ベイズ分析」。「ベイズ分析」という用語でここに書かれた内容をさすのは、著者独特の用語だろうと思う。確率モデル (stochastic model) と ベイズの定理 の応用であることはたしかだ。モデルがもつパラメータ θについて、とてもおおまかな事前確率分布 (たとえば、ある区間での一様分布) P(θ)と、データ D から、事後確率分布 P(θ | D) を得る。
まず第9章で、確率分布についての概論や、一様分布や正規分布にそれぞれしたがう乱数の生成 (numpyの機能を利用) などの紹介がある。この部分は、「ベイズ分析」に深入りするつもりのないわたしにとっても有用だ。
事後確率分布を得るのには、マルコフ連鎖モンテカルロ法 (MCMC) をつかう。それを実行するのに、Stan (Python からの呼び出しがPyStan)とPyMC という2種類のプログラムパッケージを利用したプログラム例をしめしている。この部分は、「ベイズ分析」の趣旨をよく理解していないわたしにとっては、残念ながら、有用でない。
折りかえしのあとに くわしい目次をつける。
== 目次 ==
はじめに
目次
第1部 Pythonデータ分析入門
序章 Pythonの準備と使い方
-序.1 準備 (インストール)
-序.2 使い方
第1章 基本統計量の計算
第2章 グラフの描画 — データの可視化
– 2.1 棒グラフ
– 2.2 ヒストグラム
– 2.3 散布図
– 2.4 折れ線グラフ
– 2.5 ラインスタイルの設定
– [コラム 2.C.1] 疑似相関
– 演習課題
第3章 ファイル入出力
– 3.1 テキストファイル入出力
– 3.2 CSV 形式
– 3.3 バイナリファイル入出力
第2部 多変量解析
第4章 行列演算と Python スクリプト
– 4.1 行列の表現
– [コラム 4.C.1] リストの初期化
– 4.2 四則演算
– 4.3 トレース・階数・ノルム
– 4.4 固有値と固有ベクトル
– 4.5 特異値と特異ベクトル
– 4.6 行列式
第5章 単回帰分析
– 5.1 モデル
– 5.2 Python スクリプト
– 演習課題
第6章 重回帰分析
– 6.1 モデル
– [コラム 6.C.1] ダミー変数のコーディング
– 6.2 Python スクリプト
– 6.3 標準化回帰係数
– 演習課題
– [コラム 6.C.2] ダミー変数の独立性
第7章 主成分分析
– 7.1 モデル
– 7.2 Python スクリプト
第8章 数量化
– 8.1 モデル
– 8.2 Python スクリプト
第3部 ベイズ分析
第9章 確率計算と Python スクリプト
– 9.1 離散確率分布
– 9.2 連続確率分布
– 9.3 乱数・確率分布・シミュレーション
– 9.4 ベイズ分析
– [コラム 9.C.1] 事後分布の記述
第10章 PyStan による2項分布記述 –Stan 入門–
第11章 PyStan による単回帰モデル分析
– 演習課題
第12章 PyStan によるポアッソン回帰モデル分析
– [コラム 12.C.1] 一般化線形モデルとリンク関数
第13章 PyMC による2項分布解析 — PyMC 入門–
第14章 PyMC による単回帰モデル分析
– 演習課題
第15章 PyMC によるポアッソン回帰モデル分析
参考文献
索引