最終更新 2026年1月27日
近年ではベイズ統計学の考え方を用いた統計モデリングが日本国内でも普及しつつあり、私も少しずつ勉強を進めています。
ここでは社会学を中心とした文系分野の大学生・大学院生(または研究者)が、ベイズ統計モデリングを行うためのごく基本的な知識や、ベイズ推定を簡単に行えるRパッケージを紹介します。
※以下は勉強中の内容ですので、不正確な記述もあるかもしれません。疑問を持った点については、「おすすめ文献」に挙げた著作などで確認されることをおすすめします。
昨今のデータサイエンスブームの中で「ベイズ統計学」ということばを聞いたことがある方も少なくないでしょう。書店の統計学のコーナーにはベイズ統計学に関する本もたくさん並んでいます。ただ、中身の方はよく分からない…という方も多いのではないでしょうか。
それでは、ベイズ統計学を使えばこれまで分からなかったことが分かるようになる!…かと言われれば、私の感覚では残念ながらそんなことはほとんどありません。たとえば、社会学分野で用いられる数百程度のサイズのデータでベイズ統計学に基づくロジスティック回帰分析を行ったとしても、得られた結果は通常用いられる最尤推定による結果とわずかしか変わらないことが多いです(というのも、ベイズ推定ではサンプルサイズが大きい時に最尤推定と結果はほとんど変わらなくなるからです)。だったら別に通常の方法でよいのではないか…という意見は至極もっともです。
その一方で結果の解釈をより直感的に行えるという点ではベイズ統計学に圧倒的に分があります。たとえば、頻度主義に基づく95%信頼区間は「真の値が95%の確率で存在する区間」とは解釈できません。頻度主義における95%信頼区間とは、「母集団から抽出を繰り返してその度に信頼区間を計算した時に、100回中95回程度の頻度で真値を含む区間」であるということになります。「無作為抽出によって100個の異なる世界線が分岐して、それぞれで区間推定をすると、100個のうち95個の割合で信頼区間は真値を当てている」と考えてみてください。私たちは平行世界のうちのどこかにいるはずですが、自分たちの進んだ世界線の信頼区間が「当たり」なのか「外れ」なのかを知る術はありません。手元に得られた信頼区間はサンプリングの繰り返しによる平行世界を想定すると、100回中95回程度の割合で「当たり」だろうということは言えるでしょう。しかし、このような頻度主義的な解釈は私たちにとっては直感的に理解できないという難しさがあります。
私たちは、「うまくいくかは五分五分」とか「今試合をしたら90%くらいで負けるだろう」というような言い方で日常的に確率的な表現を使っています。この場合の「確率」とは「ある事象に対する分析者や観察者の視点から見た確からしさ」を指しているわけですが、このような確率の考え方とより親和的なのはベイズ主義に基づく統計学なのです。
ベイズ主義の考え方では「平均値や回帰係数の真の値はどのあたりに存在するか」という見方を確率を使って表現することが可能であるため、ベイズ推定によって得られた事後分布の95%信用区間は「真値が95%の確からしさで存在する区間」であるということができます。カジュアルに表現すれば、「100のうち95くらいの確信度合いで真値はこの中にある」と言えるわけです。これはベイズ統計学の大きな強みであると考えられます。
統計学の主流派である頻度論の考え方では、パラメータは未知であるが固定された値であると考え、母集団から得られるデータはサンプリングによって確率的に変動するものと考えます。頻度論に基づいた統計分析では、最尤法などにより点推定を行った上で、区間推定や仮説検定を行うことが一般的です。これに対して、ベイズ統計学ではパラメータを固定された値であるとは考えず、その推定には不確実性を伴うものと考えます。ベイズ統計学では、パラメータがどの範囲にどれくらいの見込みで存在するのかを確率分布を使って表現します。
前述の通り、ベイズ統計学は「ある事象に対する分析者や観察者の視点から見た確からしさ」を起点に組み立てられています。具体的なデータ分析の場面においては、「分析者/観察者がもともと持っていた確からしさに対する見込み(事前確率分布)がデータ(尤度)によって更新される(事後確率分布)」という手順を踏みます。
ここで登場するのが有名な「事後確率分布 ∝ 尤度×事前確率分布」という式です。つまり、観測者がパラメータに対して想定している確率分布(事前分布)を、データから得られた尤度と組み合わせれれば、関心の対象である事後の確率分布(事後分布)を得られます(その際にはMCMCなどの手法を用います)。得られた事後分布は以下のようなプロットで表現することが可能です(Rのbayesplotパッケージを使用)。
一つ注意する点があるとすれば、事前分布の設定です。事前分布の設定は多かれ少なかれ分析結果に影響を与えますし、とくにサンプルサイズが小さい場合にはその影響はより大きくなる傾向があります。論文で分析結果を報告する際にはどのような事前分布を用いたかは明示する必要はあるでしょう。
ベイズ統計分析では、分析者が考える「パラメータが存在しうる範囲」を確率分布の形で表現する必要があります。たとえば、回帰係数の事前分布をNormal(0,1)と設定した場合には、分析者は「回帰係数は0付近に存在する可能性が最も高く、±1の範囲に2/3程度で存在すると見込まれるが、±2を超えることは滅多にない(1/20未満)であろう」と考えていることになります。
分析にこのような「主観的」な要素が入ってくることに違和感を感じる方もいらっしゃるかもしれません。実際にパラメータの存在しうるすべての範囲に同じ確率を想定する一様分布を使用することもあります。しかし、事前分布は使い方によっては大きな武器にもなります。
図1.事後分布をプロットした例(中心線が中央値で青い範囲が90%信用区間)
図2.事後分布をもとに信用区間をプロットした例(丸が中央値で太い帯が50%、線が95%)
単純なモデルであれば、比較的に簡単な計算で事後分布を求めることも可能です。ただし、モデルが複雑である場合はそのようなわけにはいかないので、マルコフ連鎖モンテカルロ法(MCMC)の力を借りることになります。
MCMC自体はベイズ統計学とは全く異なる物理学の分野で発展した計算方法とのことです。私もあまりしっかりと理解できてはいませんので詳細な説明は省きますが、ざっくり説明すると「自分の知りたい確率分布を得るために、求める確率分布を均衡分布として持つマルコフ連鎖を生成しサンプリングするアルゴリズム」です。
一般的によく用いられる最尤推定では、データから得られる尤度を最大化するパラメータを計算(繰り返しの計算)で求めます。たとえば、ロジスティック回帰分析であれば、回帰係数の点推定値を最尤法で求めます。最尤推定量はサンプルサイズが大きいときには近似的に正規分布に従いますので、その性質を用いて標準誤差から区間推定を行ったり仮説検定を行ったりします。
その一方で、MCMCを用いたベイズ推定では、事前分布と尤度を与えたると事後分布の候補となる値を多数生成し、こうして提案された候補を一定のルールで確率的に採択したものが事後分布となります(事後分布の提案~採択の動きをサンプリングと呼びますが、標本抽出の文脈でのサンプリングと区別するようにしましょう)。この事後分布から点推定値(平均値や中央値)を求めたり、パーセンタイルを使って信用区間を求めたりすることができます(図1および図2を参照)。
確率的プログラミング言語と呼ばれるStanやJAGSなどのソフトウェアは、専用のコードを書けばMCMCを自動で行ってくれます。ただし、コードを書くのは初心者にはハードルが高いかもしれません。そこで、これらのソフトを簡単に動かすことのできるRパッケージを紹介したいと思います。
社会学で最もよく用いられるのは、線形回帰分析やロジスティック回帰分析などの回帰モデリング、いわゆる一般化線形モデルでしょう。確率的プログラミング言語Stanや関連のRパッケージの登場により、一般化線形モデルをベイズ推定することは非常に容易になりました。ここでは2つのパッケージをご紹介します。
StanをRで簡単に動かすことのできるパッケージで、後で紹介するbrmsよりこちらの方が初心者向けだと思います。推定も非常に高速です。rstanarmではデフォルトで回帰係数にnormal(0, 2.5)、つまり平均0で標準偏差2.5の正規分布が設定されています。デフォルトの設定では平均や標準偏差はデータのスケールに沿って調整されます(rstanarmの事前分布の設定についてはこちらの解説ページもご覧ください)。
・brms
rstanarmと同じようにStanをRで簡単に動かすことのできるパッケージです。rstanarmよりもこちらの方が先に有名になった気がします。こちらの方がrstanarmよりも細かいところまで設定できます。回帰係数の事前分布はflat、つまり一様分布のようです(こちらを参照)。私自身はnormal(0, 2.5)やnormal(0, 1)に設定しなおして使っています。
ここ数年の統計学では多重代入法による欠損値補完も話題になっていますが、JointAIパッケージはMCMCで欠損値とパラメータを同時に推定してくれるという優れものです。裏ではJAGS(Just Another Gibbs Sampler)が動いているようなので、事前分布は標準偏差ではなく精度(分散の逆数)で指定することに注意しましょう。回帰係数の事前分布にはデフォルトで平均0、精度1e-04(標準偏差換算で100)の正規分布が設定されているようです(こちらを参照)。推定には少し時間がかかる気がします。
有限混合モデル(finite mixture model)など、潜在的なグループ変数を導入したモデルでもMCMCを用いたベイズ推定は力を発揮します。計量社会学では知られている手法では、潜在クラス分析やトピックモデルも広い意味では有限混合モデルの仲間と言えますが、これらの手法もMCMC(とくにギブスサンプリング)で推定できます。
有限混合モデルの有限とは、最初に決まった数のグループ数を指定することに由来します。これに対して、クラス数を試行錯誤しながら推定する無限混合モデル(別名ノンパラメトリックベイズ)もあります。無限混合モデルを用いる場合には、基本的にMCMCで推定する基本になると思います(有限混合モデルはEMアルゴリズムや変分ベイズで推定可能です)。
IMIFAというのは Infinite Mixtures of Infinite Factor Analysers、訳すと「無限因子による無限混合」のモデルです。簡単に言うと、たくさん量的変数があるときにこれを因子分析で次元削減しながら同時に混合モデルでクラスタリングするモデルを考えて、因子数/グループ数を試行錯誤しながらベイズで推定するというものです。
話がややこしくなりましたが、このパッケージでは因子分析を省略して混合モデルのみを推定することもできます。その場合も自分でグループ数を指定する有限混合と、グループ数を試行錯誤させる無限混合の両方が推定できます。つまり、オールインワンのパッケージのようです(多機能すぎて私もまだ使いこなせていません)。
潜在クラス分析は社会学でよく知られた方法ですが、質的変数(二値変数)が複数ある時にこの背後に潜在的なグループ(クラス)を想定して分析する手法です。BayesLCAはこの潜在クラス分析をMCMCでベイズ推定するためのパッケージです。使い方は比較的に分かりやすいのでおすすめです。ただし、共変量を使用した分析はできないので、JAGSなどを使って頑張って自分でコードを書いて推定するしかないようです(JAGSを使う場合はこちらの論文に解説があります)。
いわゆる文系人間(私を含む)でも読めそうなおすすめ文献を紹介します。ただし、高校文系数学の教科書レベルの知識と統計学・統計分析に関する基礎的な素養(社会調査士D科目やE科目程度)はおそらく必要となります。まずは『統計学の極意』と『楽しみながら学ぶベイズ統計』の2冊をおすすめします。
・デイヴィッド・シュピーゲルハルター『統計学の極意』草思社
ベイズ統計学者が書いた統計学の入門書です。統計学一般の入門書ではあるのですが、その中にごく自然にベイズ統計学の考え方が導入されています。ベイズ統計学というよりは、統計学一般の入門書としておすすめです。
・ウィル・カート『楽しみながら学ぶベイズ統計』SBクリエイティブ
ベイズ統計学の基本的な考え方を、数学的に難解な要素を使わずに説明している入門書です。ベイズ統計学をしっかりと学ぼうと思ったら、まずこれから入るのがおすすめです。ただし、具体的な分析手法が解説されているわけではないので、あくまで入門用の一冊と考えましょう。
・Andrew Gelman, Jennifer Hill, Aki Vehtari, Regression and Other Stories, Cambridge University Press.
回帰分析の基礎を丁寧に分かりやすく解説した教科書ですが、ベイズ統計学がさりげなくかつ自然に導入されています(サンプルコードは主にRのrstanarmパッケージです)。回帰分析の学びなおしにもぴったりで、非常におすすめのできる教科書です。翻訳が出るとさらに布教できるのですが…。
・ピーター・D・ホフ『標準 ベイズ統計学』朝倉書店
ベイズ統計分析の教科書で、数学的な部分も細かく解説されています。MCMCをパッケージを使わずに動かせるRコードが掲載されているので、手を動かしながら学ぶと理解が深まるでしょう。ただ、「標準」と名乗っているものの人文社会系では大学院レベルの内容ですので、いきなりこの本を読むと挫折するかもしれません。そのため、まずは上の3冊を読んだうえでこの本に挑戦することをおすすめします。
・Andrew Gelmanほか『ベイズデータ解析(第3版)』森北出版
原著はBDAの略称で知られるベイズ統計分析の名著で、2024年についに翻訳が出ました。原著(ハードカバー)も辞書のような厚さの本でしたが、翻訳もなんと888ページもあり、よくぞこの大著を翻訳してくれた…という思いです。ただ、通しで読むというよりは必要な部分を辞書的に引いて読むタイプの本かもしれません。大学生や大学院生が個人で購入するのは難しい価格ですので、大学の図書館や研究室にリクエストするのがよいでしょう。