ベイズ データ分析
岡本安晴
データ生成が、確率モデル(stochastic model)
で表されるときがある。データ、・・・、 が平均 、分散 の正規分布からのサンプル
である( ~ は、左辺の変数が右辺の確率分布に従うことを表す)とき、
、
とおけば、式(1)の形に書くことができる。すなわち、
である。
式(1)は、パラメータ に対して、データ が与えられる確率を表すものであり、古典的統計分析で用いられるモデルの形式である。
ベイズ データ分析では、パラメータ も確率変数として扱い、パラメータ とデータ の同時分布を次式で与える。
このとき、データ を条件とするパラメータ の条件付き確率は
で与えられる。ベイズ データ分析は、式(3)で与えられる に基づいて分析を行うものである。
を事前分布、 を事後分布と呼ぶ。 あるいは に関わる確率を主観的確率と考え、多くの議論・論考がある。しかし、データ分析のツールあるいは枠組みとしてモデル(2)を考えるときは、ベイズ データ分析における確率が主観的であるという議論には、データ分析においてはこだわらないというのも1つの立場である。モデル(2)が、ツールとして有用かどうかの問題である。量子力学では物理量を確率分布で表して現代物理学の発展がみられたことを考えれば、パラメータ値などを確率分布で表すベイズ データ分析は現代的データ分析における有用性・有効性が大いに期待されるものであるといえる。現代物理学の発展における「量子力学が役に立つなら当面はこれで仕事をしよう。」というコペンハーゲン解釈(佐藤文隆「アインシュタインの反乱と量子コンピュータ」2009、p. 14)との対応を考えるとき、モデル(2)のデータ分析ツールとしての有用性が認められる現在においては、主観的という歴史的経緯は問わない、ツールとしての有用性あるいは特性に注目するというのも1つの現実的対応である。ニュートンは、万有引力にまつわる問題には答えずに研究を進め、数学は「数とは何か」という問題には関わらずに研究が行われているという(Rosenberge, A., & McIntyre, L., 2020. “Philosophy of Science”, Routledge)。
モデル(2)に基づくデータ分析に話を戻す。
パラメータが1つの簡単なモデルのときは、事後分布(3)は簡単に求めることができる。2項分布の場合においてグリッド法によって求める例を、ウェブサイト<最尤法とベイズ的方法(2項分布の区間推定)>で説明している。
を解析的に分析することが難しいときは、確率分布 に従うサンプル(乱数)を多数とって、そのサンプルに基づいて分析が行われる。 に従う乱数を得る方法として、マルコフ連鎖モンテカルロ(Markov chain Monte Carlo: MCMC)がある。
マルコフ連鎖とは、確率変数の系列、・・・、、、・・・において、 の確率分布が直前の にのみ依存するものである。すなわち、
が成り立つものである。マルコフ連鎖には、ある正則条件が満たされるとき、時系列として得られる確率変数の値、・・・、、、・・・において、その時間的順序関係を無視して、集合{、・・・、、、・・・}として考えたとき、 を大きくしていくと その集合は確率分布からのサンプルとみなせるものに近づくという性質がある(Gamerman and Lopes, “Markov Chain Monte Carlo, 2nd ed.” 2006, p. 125; Robert and Casella, “Monte Carlo Statistical Methods” 1999, p. 237)。MCMCは、このマルコフ連鎖の性質を利用して、 の推定を行うものである。例えば、M-Hアルゴリズム(Metropolis-Hastings algorithm)では、以下のようにして からのサンプル値を得ている。M-Hアルゴリズム以外の方法を用いているソフトとしてStanがあるが、Stanについては別のサイトで説明している。
いま、乱数発生の容易な を条件とする の確率分布 をとる。この確率分布 を用いて、次のアルゴリズムAによってマルコフ連鎖を構成したとき、 の値が0でない領域(サポートと呼ばれる)内の任意の点からサポート内の任意の領域に有限回の遷移で達することができるとする。このとき、アルゴリズムAの手順で を生成していくとき、 は集合として漸近的に からのサンプルとみなすことができる。
アルゴリズムA
ステップ0
とおき、の値を のサポートからの任意の値とする。
ステップ1
に対して、 の候補となる値 を
ととる。
採択確率 を次式
により設定する。
ステップ2
確率 で、
確率 で
とおく。
ステップ3
とおく。 の値が目標数に達したならば終了するが、達していなときはステップ1に戻る。
MCMCは、事後確率以外の確率分布に対しても適用できるものであるが、簡単な例をウェブサイト<MCMCプログラミング>、<MCMCの簡単な例>で説明している。
候補値のサンプリングに用いる確率分布 (提案分布とか生成分布などと呼ばれている)の選び方によっては、 の値は0に近い、あるいは1に近い値になりやすくなる。 の値が0に近くなりやすいときは、ステップ3におけるの更新はあまり行われないことになる。このとき、サンプル の数の割には異なった値が少なくなり効率が悪くなる。 の値が1に近くなりやすいときは、更新が頻繁に行わることになるが、これは の値が大きい領域からあまり動いていない状態を表している可能性があり、事後確率 のサポート内での動きが悪く効率の悪いサンプリングである危険がある。いずれにせよ、理論的には漸近定理によりサンプルの事後分布への収束は保障されているので、サンプル数を十分に多くとればサンプル によって事後分布 が表されると予想されるが、 の値が適切な範囲に収まるように確率分布 を選ぶことができれば効率の良いサンプリングが期待できる。この選択は、パラメータ の更新を、その1つ1つを順番に行えば、確率分布 も対応して1つずつ設定することになるので容易である。1つずつ更新する方法として、Metropolis-within-Gibbsあるいはcomponentwise version of the Metropolis-Hastings algorithmと呼ばれているものを利用することができる。これは、必ずしも1つずつ更新するのではなく、パラメータをグループ分けしてグループ単位で更新する方法も使えるものであるが、ここでは提案分布 の調整が容易である1つずつ更新する場合を考え、以下の手順で行う。
アルゴリズムB
提案分布、・・・、 を用意する。
ステップ0
とおき、の値を のサポートからの任意の値とする。
ステップ1
とおく。
ステップ1.1
更新候補値を
ととる。
採択確率 を次式
により設定する。
ステップ1.2
確率 で、
確率 で
とおく。
ステップ1.3
とおく。 ならステップ1.1に戻る。
ステップ2
とおく。 の値が目標数に達したならば終了するが、達していなときはステップ1に戻る。
は1つ1つ個別に設定できるので、採択確率 が適切な範囲になるように調整することが自動的に行われるようにすることが容易である。具体的な説明を、ウェブサイト<平均と標準偏差>で行う。
なお、目的とする分布の条件付き分布からのサンプリングにより採択確率が常に1であるギブズサンプラー(Gibbs sampler)と呼ばれている方法があるが、これについてはウェブサイト<簡単なギブズサンプリングプログラム例>で説明している。
MCMCを用いたベイズ データ分析例を以下のようにいくつか用意した。
平均と標準偏差、2変量の平均値、標準偏差と相関係数、ポリコリック相関係数、
ベイズ データ分析およびMCMCについては、
岡本安晴「計量心理学」2006、培風館; 付録H ベイズ的アプローチ pp. 252–257, 付録I マルコフ連鎖モンテカルロ pp. 257–262
および
岡本安晴「心理学データ分析と測定」2014、勁草書房; 付録C ベイズ的分析法 pp. 227–232
で解説している。
MCMCを行うためのソフトStan(PythonインターフェースはPyStan)については、
岡本安晴「いまさら聞けないPythonでデータ分析」丸善出版、pp.179-210
で説明している。