[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)
と変形できます。
この形を利用すると・・・
β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);
}