HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学、量子計算などをテーマに扱っていきます

StanとRでベイズ統計モデリング

 

 

follow us in feedly

https://cdn.blog.st-hatena.com/images/theme/og-image-1500.png

はじめに

今更感の強い紹介になってしまいます。 私自身Rを使う機会はコレまでまったくなかったので、ただただRというだけの理由でふれてこなかった本です。

そして、そんなこと気にせずに早く買えば良かったと思った本です。ちなみにPythonにもPyStanがあります。

StanとRでベイズ統計モデリング

StanとRでベイズ統計モデリング (Wonderful R)

StanとRでベイズ統計モデリング (Wonderful R)

本の構成・難易度

ざっと並べると、

  • Stanのコード例が豊富で、動かしながら学んでいける
  • 基本的な統計のコトバは知っている前提で、ベイズモデリングの話を実践的に進めていく
  • Chapterが進むに連れて次第に複雑なモデルを扱うようになる(従って前から順に読んでいくタイプの本)
  • モデリングを学んだChapterの最後には理解を確認あるいは深めるための練習問題が配置
  • 必要な数学的知識、考え方などは適宜Chapterを挟んで紹介していく形式

という具合です。本の後半にくるまで、行列演算などを意識しなければならないモデルは出てこないので比較的易しめかなと思います。ただ、基本的事項をしっかり抑えることが何においても重要なので、易しいことはくだらない・つまらないという意味ではありません。

日本語による説明もコードも豊富です。数式は最低限に留めている様子ですので、数式が苦手な人でもしっかり取り組んでいけます。 特にコードが豊富なので実践的に学んでいける点は本書の強いところです。日本語の説明を読んでもしっくり来ないことがあるかもしれませんが、実際にコードを動かして可視化してみることは確実に理解の助けになります。

本の詳細

  • 「解析の目的明示」、「データの分布の確認」、「データに対する仮定(メカニズムの想像)」、「数式によるモデル化」、「Stanで実装」「推定結果の解釈」、「可視化によるモデルのチェック」という流れで一貫して説明がなされている。
  • 「解析の悩みどころ」という極めてプラクティカルな内容に1つのChapterを割いている
  • 「収束しない場合の対処法」に1つのChapterを割いている
  • 「一歩進んだ文法」というStanのコーディング力を高めるための内容に1つのChapterを割いている。

という部分が特徴的でした。きわめて実践的です。

教科書的な本であれば「基本事項」を順番に理路整然と配置して、それらを抑えてから応用に行きましょう、ということになりますが、この本では常に例題を与えながら確率モデリングを進めていきます。単に数式を追う・コードを写すに留まらず、実際にデータ解析を駆使して問題に取り組むというシチュエーションが本当に勉強意欲を促進してくれます。

また、基本的に「モデリング」と「データの解釈」についてStanを用いて勉強をする本です。 データと向き合ったときに、どのようにモデリング(データへの仮定)を設け、解析結果をどのように解釈するのかという一連の流れを様々な例題と様々なモデルを通して身につけていきます。

目次+要約

Chapter1 統計モデリングとStanの概要

ここではゴクゴク基本的な考え方、Stanについてざっくりと説明があります。

Chapter2 ベイズ推定の復習

ここはベイズ推定に自信がある人は特に読まなくても良いかなと思います。 また「復習」と言っている通り、イチから懇切丁寧にベイズ推定のことを解説してくれるわけではありません。 ベイズ推定ってこんなんだったよね?思い出した?という確認程度の内容になります。

逆にココがよく分かってない場合は、いたずらにコードを書いても学びには繋がらないかも…?そういう意味ではちゃんとココらへんが分かるという自信を持った状態で進むべきという、スタートラインを提示しているのかもしれません。

Chapter3 統計モデリングをはじめる前に

ここは難しいことが書いてあるわけではありませんが是非読みましょう。 モデリング・データ解析の心得的な事が書いてあります。

Chapter4 StanとRStanをはじめよう

Stanの基本的な書き方・実行の仕方、コードスタイルを単回帰を例題に学んでいくという形になります。 統計モデリングそのものよりもStanの練習に近い章です。

Chapter5 基本的な回帰とモデルのチェック

ここで、重回帰、二項ロジスティック回帰、ポアソン回帰などの極基本的なGLMをStanで書いていきます。 どういったデータに対して、どのモデルを使うのか、そして解析結果をどのように解釈するかを学んでいきます。ここらへんは緑本を読んでいれば内容的には全く難しくないはずです。

Chapter6 統計モデリングの視点から確率分布の紹介

個人的に、ここでこのChapterを挟んできたのは考えられているなと思いました。確率分布は基本的な事項ですし、予め最初に幾つかの分布を知っておいた方が良いような気もします。しかし、確率分布は数式を見ると、結構複雑そうに見えてしまうので、苦手意識のある方はこれが最初のChapterで現れてしまうと、「あ〜よくわからん」って諦めてしまったりすると思うんです。

Chapter5まで読んでいれば、「あれ、他の確率分布を使ったらどんなことができるのだろう?」と興味を持ち始めているはずだと思いますし、実際それに答えてくれるような内容になっています。

Chapter7 回帰分析の悩みどころ

実践的で有用な情報が載っています。複雑なモデルの勉強に入る前に、回帰分析を行うときにどのような問題が生じうるのか(あるいは既に悩んでいる方もいると思います)を簡単な例と数式をあげて説明しています。

Chapter8 階層モデル

ここがまずしっかり抑えたいところだと思われます。個体差やグループ間の差などをモデリングによって表現することが可能になります。 数式が何本か同時に並んだりするので、むむっと思うかもしれませんが、基本的に確率モデルを積み重ねているだけです。

1つ1つはこれまで学んだ内容にすぎなく、難しくはないので、しっかりどのような意図で階層化が行われているのかを意識していけば、かなり力を付けられるのではないかと思います。

Chapter9 一歩進んだ文法

ここは申し訳ありませんが、ちゃんと読んでません…。Stanのデータ型の話や、データ型を応用して高速化・メモリ削減などを実施する項目のようです。近年の機械学習に慣れていれば、多次元配列を扱うことには慣れている方が多いかと思われるので、基本的には「型」というルールさえしっかり抑えれば大丈夫かなと思います。

逆に、機械学習に不慣れで、プログラミングもなれていない場合、ある意味いちばんしんどいかもしれません。「なんで型を使い分けると同じ処理が速くなったりするの?」というのはメモリの割当の仕方などが違ったりするのでうんぬんかんぬん…なのですが、縦方向か横方向かどちらのアクセスが早い型なのかを認識してればなんとか理解できそうです。

よく起こりうるトラブルシューティングに関して知見が書かれていたりするので、Stan自体を学びたい人はこのChapterは日本語で最も充実している資料でしょう。

Chapter10 収束しない場合の対処法

MCMCは逐次的サンプリングアルゴリズムで、定常状態に収束したことによって分布の推定が終わったします(収束したかどうかを決定論的に知る方法はないけども…)。しかし、どう頑張っても収束しないということがあるので、その際の対処法を述べています。

これは言い換えるならば、データに対して妥当なモデリングを行うということそのものですから、かなり重要で実践的な項目です。ほ~!知らなかった!と、とても勉強になりました。ココラヘンはそうなる理由をちゃんと理解しようと思うと、MCMCのアルゴリズムについて多少の理解が必要になるでしょう。

離散値をとるパラメータを使う

Stanは離散値を取るパラメータを含んだ状態のモデルはそのまま扱えません。Stanで用いられるNUTSが「微分」を必要とするからでしょう。兎にも角にも微分をできるようなモデルに書き換えてやらなければなりません。

これは周辺化と呼ばれるテクニックで離散パラメータを消去することで、目的の分布を直接書き下すことで対処します。離散パラメータを消すことを考えているので、難しい積分などは出てきませんが、数式に苦手意識があると厳しいかもしれません。

逆にココを乗り越えればかなり柔軟にモデリングができるようになるはずです! 例えば、Chapterの最後ではトピックモデルで有名なLDAを扱います。

時間や空間を扱うモデル

お待ちかねの状態空間モデルです。ここまで読んできたとしても、そもそも何のためにこんな複雑なモデルが必要なんだ?と思ってしまうかもしれません。急に様子が変わって見えるかもしれませんが、それでもStanのコードで見ると立ち向かえないほど強敵ではないはずです(というか、こんな短いコードでいけるんだ・・・という気持ちになりました)。

ここを使いこなせるとしたらかなり上級者だと思われるので、是非読破を目標に…!

StanとRでベイズ統計モデリング (Wonderful R)

StanとRでベイズ統計モデリング (Wonderful R)