(自分用メモ)ベイズ統計モデリング入門中

説明変数x、目的変数yとして、3つのパラメータ(a,b,s)を持つ以下のようなモデルを作ってみる (簡単のため全て正規分布にしている)。

  y~Normal(ax+b, s)
  a(prior)~Normal(Hma, Hsa)
  b(prior)~Normal(Hmb, Hsb)
  s(prior)~Normal(Hms, Hss)

※Hma〜Hssはハイパーパラメータで、人手で恣意的に決めていい。

                  • -

以下、p(Y|M,S)を正規分布の確率密度の値とする。
  p(Y|M,S)=\frac{1}{\sqrt{2 \pi S^2}} \exp (-\frac{(Y-M)^2}{2S^2})
y~Normal(M,S)のモデルにおいて、y=Yとなる確率またはlikelihoodは、p(Y|M,S)である。
(確率の計算と尤度の計算に何の違いがあるのかわからん)。

                  • -

サンプルが3つ得られたとする。
(X1,Y1),(X2,Y2),(X3,Y3)

                  • -

パラメータが特定の値 (a,b,s)=(A,B,S) をとるとき、posteriorを求めたい。
ベイズ統計で一般的な以下の関係を使う。
  posterior ∝ prior * likelihood
priorとlikelihoodをそれぞれ求めれば、posterior(の相対比率)が求められる。

prior

モデルのところに記述した(a,b,s)の各パラメータのpriorを使う。
aのpriorであるNormal(Hma, Hsa)からa=Aとなる確率を求めると、p(A|Hma, Hsa)になる。
b,sでも同様にB,Sとなる確率を求めていき、それらの確率の積をとる。
  prior(A,B,S) = p(A|Hma, Hsa) * p(B|Hmb, Hsb) * p(S|Hms, Hss)

likelihood

(a,b,s)=(A,B,S)のとき、モデルは下記のものになる。
  y~Normal(Ax+B, S)

まず1つのサンプル(X1,Y1)について考える。
単純にモデルの変数を置き換えると以下のようになる。
  Y1~Normal(AX1+B, S)
すなわち「Y1は『平均がAX1+B, 標準偏差がSの正規分布』から生成された」ことを意味する。

この1サンプルでのlikelihoodは、
  p(Y1|AX1+B, S)
となる。X1,Y1,A,B,Sはすでに分かっている値なので、1つのスカラー値を導出可能である。

3つのサンプルでのlikelihoodは、それぞれのサンプルのlikelihooodの積をとる。
  likelihood(A,B,S,X,Y) = p(Y1|AX1+B,S)*p(Y2|AX2+B,S)*p(Y3|AX3+B,S)
ここで、サンプルごとに正規分布の平均が違うことに注意する。
すなわち、Y1,Y2,Y3はそれぞれ別の正規分布から生成されている。

                  • -

というわけでposteriorに戻ってくると、さっき求めたpriorとlikelihoodを使って以下のようになる。

  posterior ∝ prior * likelihood
  posterior ∝ {p(A|Hma, Hsa) * p(B|Hmb, Hsb) * p(S|Hms, Hss)} * {p(Y1|AX1+B, S) * p(Y2|AX2+B, S) * p(Y3|AX3+B, S)}

この式を見ると、サンプルの数が増えるごとにlikelihoodの影響力が強くなっていくことが分かる。

なお、posteriorの比例係数(ベイズの法則での分母)はモデルの形式とハイパーパラメータのみによって決まり、A,B,Sに依存しない値である。

  • MAP推定をする場合、posteriorの大小比較ができればいいだけなので、分母は気にしなくていい。
  • サンプリングをする場合、posteriorの比がとれればいいだけなので、分母は気にしなくていい。