SSブログ

[stan]階層ベイズモデルの書き方 その2 階層モデルの書き方 [データサイエンス、統計モデル]

y = β0i + β1i*x1 + ... + e
β0i = α01*w1 + α02*w2 + ...
β1i = α11*w1 + α12*w2 + ...

この様な構造を持つ場合、どう書けば良いか?

まずは、
y = β0i + β1i*x1 + ... + e, e~N(0, σi)
→ y~N(β0i + β1i*x1 + ..., σi)
と変形できます。

この形を利用すると・・・


transformed parameters {
  vector[K] mu_b0;
  vector[K] mu_b1;
  for (k in 1:K) {
    mu_b0[k] = w00*iota[k]+w01*z1[k];
	mu_b1[k] = w10*iota[k]+w11*z1[k];
  }
}

model {
  // 階層モデル
  for (k in 1:K) {
    b0[k] ~ normal(mu_b0[k], s_b1);
	b1[k] ~ normal(mu_b1[k], s_b2);
  }

  // 観測モデル
  for (n in 1:N)
    y[n] ~ normal(b0[id[n]] + b1[id[n]]*x1[n], s_Y);
}


nice!(2)  コメント(0) 
共通テーマ:学問

nice! 2

コメント 0