ベイズ統計モデリングによるデータ分析入門」をご恵投いただきました。ありがとうございます!!www.kspub.co.jp事前に献本をいただけるということを伺っていたので、その時から「ご恵投いただきました!」とTwitterで報告するだけでなく、簡単にでも読んでみた感想を書こうと決めていました。読んだ段階で、コードを実際に走らせてもいないのですが(もちろん後でじっくり読みながら実行します)、感想や関連書籍との比較をしていきたいと思います。本書の「はじめに」の部分やサポートページには、以下のような方を対象読者としていると書かれています。本記事も、そのことを念頭に書いていこうと思います。統計学の基礎やベイズの定理などの基本事項を学んでみたものの、その有効性がピンとこない、という方を対象としています。ベイズの定理の導出では終わらない、より実用的なベイズ統計学について学んでみたいと思った方、あるいは統計モデリングに興味が出てきた方は、本書の対象読者であるといえます。理系文系は問わず、データを分析する必要性がある人はもちろん、データサイエンスが専門でないエンジニアの方でも読めるような内容を目指して執筆しました。Stanを使ったベイズ統計モデリングにすでに明るいという方は、読者として想定していません。ベイズ統計学の数理的な側面もある程度省略しました。基本的な事項を、実装を何度も繰り返すことを通じて学ぶ構成になっています。ベイズ統計モデリングの上級者をさらなる高みへと持っていく本ではないことに、留意してください。RとStanでベイズ統計モデリングを行う入門書というと、真っ先に頭に浮かぶのが、松浦健太郎著「StanとRでベイズ統計モデリング(通称、アヒル本)」だと思います。僕自身も、恐らく人生で最も読み返した回数が多い本ではないかと思うくらい、お世話になっています。ページをめくったり書き込みしたりでボロボロになってきたので、最近2冊目を買いました。www.kyoritsu-pub.co.jpそれぞれの本の強みを紹介するため、要所要所で、アヒル本と本書を比較していこうと思います。そのため本記事の想定読者も、アヒル本を一度読んだことがある人、としています。結論を先取りすると、それぞれの本で強調されている点が異なるので、両方読むといいと思います!ということになります。本書第1部では、ベイズ統計モデリングとは何かや、それを行う上で必要となる数学的基礎知識について紹介しています。ベイズ統計モデリングが基礎としている「確率」について、紙面が割かれています。これらの基礎的なパートについては、本書とアヒル本で「力を入れている」箇所が異なるように思いました。ついては、ある程度背景知識を持っていることを前提として説明が進むように思います。一通り説明はあるのですが、(初心者にとっては)難しい言葉もしばしば登場します。その代わり、モデル、確率モデル、統計モデルとは何か。そもそもなぜこれらを考える意義があるのか、といったところは紙面が割かれていて、統計モデリングに対する著者の熱い思いを感じます。「いいからMCMCだ!」ではなく、その前にすべきこと(例えばメカニズムの想像)について、慎重に指南してくれる本です。アヒル本では1章まるまる使って、様々な確率分布を丁寧に紹介しているパートがあります。発展的なモデルを考える際にお世話になる分布についても、網羅しています。アヒル本では、基本的な部分を順を追って丁寧に説明することを重視しているものの、基礎を身に着けた読者が自身の発想でモデリングできるよう、その先の道しるべも用意してくれているような印象を持っています。本書では、アヒル本よりもより初心者を想定しているように思います。ついて、この本を読みながら知識を得ていくことが可能です。馬場さんが過去に書かれた「Pythonで学ぶあたらしい統計学の教科書」でもこのあたりは言及されています。www.shoeisha.co.jp紹介されている確率分布も、正規分布、ベルヌーイ分布、二項分布、ポアソン分布、一様分布といった「メジャーな」ものに限定されており、より初心者にフォーカスした説明を意識されているのかなと思いました。第2部は本書の特徴的なパートだと思います。「RとStan」でベイズ統計モデリングを行う際に必要となるRの基礎や、使用するパッケージの記法について、紹介しています。アヒル本アヒル本では、Rの利用方法については特に説明はなく、外部パッケージも極力使わない方針で解説されています。可視化において大活躍するggplot2パッケージは、rstanパッケージ自体が依存しているのでアヒル本でも活用されていますが、その記法は説明されていません。その代わりStanやrstanの説明に注力している感じです。説明の順序についても、書籍間で違いがあります。アヒル本では、ページをめくるたびに、一つずつ技術を身に着けていくような説明の仕方になっている気がします。モデルの評価方法の一つである事後予測チェックは、アヒル本では簡単なモデルのパラメータ推定ができるようになった後で言及されます。quantitiesブロック内で乱数を発生させる、という技術)。本書RからStanにデータを渡すためには、それなりにRのテクニックが必要になります。listであったり、データの型であったり。本書では最初にRの主要な機能を解説しているため、初めてRを触る人であっても問題ありません。本書は積極的に拡張パッケージを活用する方針のため、簡単ではありますがggplot2の記法を解説しています。それだけでなく、MCMCの結果を可視化する際にbayesplotパッケージも活用し、その使用方法も説明しています。quantitiesブロックの説明も出てきます)。quantitiesブロックの中でモデルに従う乱数を生成する方法も載っていました(136ページ目)ちなみに手前味噌になりますが、bayesplotパッケージについては、以前本ブログで記事を書いたのでご参照ください。das-kino.hatenablog.com個人的には、bayesplotについて本書で紹介しているのは、かなり重要なポイントだと思います。診断は非常に大事な手続きだと思うのですが、診断に必要な手続きが複雑であれば、「めんどくさい」と思ってスキップしてしまうかもしれません。実際のところ、診断の観点は様々あるのでこれ自体容易ではないのですが、少なくとも「視覚的に」診断するうえで、bayesplotはユーザの負荷を大きく下げてくれます。第3部:一般化線形モデルアヒル本アヒル本では、データやパラメータをint型やreal型で宣言し、modelブロック内でforループを用いて書くシンプルな記法から始め、けっこう長い間この記法を使い続けます。ベクトルや行列を用いた書き方が登場するのは、全12章中、9章目と遅めです。これは、繰り返すように、「少しずつ技術を身に着けていく」ことを狙っているからではないかと思います。本書では、第2部でStanの基本的な記法を簡潔に紹介したのち、第3部の実践編ではいきなりベクトル・行列を活用した記法に切り替わります。説明が丁寧なので問題ないのですが、不慣れな人はここでちょっと段差が高くなった印象を受けるかもしれません。brmsパッケージ本書の最大の特徴と言っても過言ではないのが、brmsパッケージの活用です。brmsパッケージを用いると、ユーザ自身がStanコードを書く必要なく、シンプルな記法で線形モデルのパラメータ推定を実現することができます。本ブログでも以前に記事を書いたので、ご参照ください。das-kino.hatenablog.comこのbrmsを活用したパートは、本当に現時点では稀有だと思います。僕自身が↑のブログ記事を書いたモチベーションの一つも、日本語のチュートリアル記事がほとんどないということでした。少なくとも現時点では、brmsパッケージの使用方法を事例とともにここまで丁寧に説明した和書は、他にないのではないかと思います(僕が知らないだけかもしれませんが...)。本書第3部では、分散分析モデルやGLMの推定をbrmsパッケージに思い切って任せてしまうことで、Stanコード自体の説明はアヒル本より少なくなるけれど、そのぶん結果の可視化も含めて様々なケースを紹介しています。交互作用について独立した節を作って事例を紹介しているのは、まさに痒い所に手が届くという感じです。第4部:一般化線形混合モデルアヒル本アヒル本では、階層モデルについて、「階層という発想を導入する必要性」やStanコードの書き方も含め、詳しく説明されています。Stanでは、階層モデルはよりシンプルなモデルの自然な拡張として書けるうえ、実用的機会が多いため習得することが重要だと思います。僕自身、アヒル本を読んで初めて、「そういうことだったのか!」と目の前の霧が晴れたように理解できた部分が多かったです。本書では、意外なことに紙面が少ないです。それは、brmsを用いることで、階層モデル(ここでは一般化線形混合モデル)も極めて簡単に推定できてしまえるからです(lmerやlmerTestとほぼ同じ記法で書けます)。ランダム切片モデルとかランダム係数モデルについての説明もあるのですが、アヒル本と対比すると説明はシンプルです。第5部:状態空間モデル出ました!という感じです。状態空間モデルの基礎:RとStanで学ぶ理論と実装」の著者なのですから。www.amazon.co.jpアヒル本でも状態空間モデルについて非常に分かりやすく解説されているのですが、本書では第5部がまるまる時系列データの分析に割かれています。その代わりアヒル本では、混合分布モデルや、空間構造データを用いたモデリングなど、異なる観点で詳しくモデリング事例を紹介しています。まとめ冒頭にも書いた通り、アヒル本と本書は、狙いが恐らく異なっており、それぞれ強調されているポイントが違うので、両方読めば様々なケースに対応できるようになるのではないかと思いました。僕の勝手な推測ですが、アヒル本は、ユーザが自由なモデリングをすることを支援しているように思いました。そのために、Stanの記法について丁寧に解説し、収束しなかった場合の対処やトラブルシューティング、打ち切りや外れ値への対処、階層モデルという発想、離散パラメータを扱うテクニックなど、上級者へ至るためにいつかは通らなければならないポイントを、あらかじめ道しるべとして残していてくれているように思います。世の中にはこういうモデルがあるんだよ、ユーザは必要なモデルを選べばいいよ、ではなく、君は君らしくモデリングする自由があるんだ(以下略)という印象です。本書でも、もちろんユーザのモデリングを支援しているのですが、恐らく本書の想定読者は、アヒル本よりも初心者寄りであることから、様々なモデリングの事例をメニューとして用意してあげて、それらを導入するハードルを下げてやろう、そのためにbrmsやbayesplotなどの便利なパッケージもどんどん紹介していこう、という狙いなのかなあと思いました。どちらか1冊読めば全方位に対応できる、ということではなく、それぞれの本が異なる強みを持っているので、これから初めて勉強する人も、すでにある程度触れている人も、両者を行き来することでさらにもう一段高みへ上れるのではないかと思います。駆け足で読んだ段階なので、まだ見落としている部分があるかもしれません。したら今後追記するかもしれませんが、ひとまず感想まで。