私は学んrstan
でおり、現在、Gelmans の「Bayesian Data Analysis」の演習を解いています。参考までに、これは第 3 章の例 5 についてです。
次のように失敗し続けます。
Initialization failed after 100 attempts.
Try specifying initial values, reducing ranges of constrained values, or reparameterizing the model.
error occurred during calling the sampler; sampling not done
これは私のRコードです:
library(rstan)
scode <- "
transformed data {
real o_data[5];
o_data[1] <- 10;
o_data[2] <- 10;
o_data[3] <- 12;
o_data[4] <- 11;
o_data[5] <- 9;
}
parameters {
real mu;
real<lower=0> sigma;
real tru_val[5];
}
model {
mu ~ uniform(0.0,20.0);
sigma ~ gamma(2,1);
for (i in 1:5) {
tru_val[i] ~ normal(mu,sigma);
tru_val[i] ~ uniform(o_data[i]-0.5, o_data[i]+0.5);
}
}
"
afit <- stan(model_code = scode, verbose=TRUE)
面白いことに、2 番目の tru_val サンプリングをtru_val[i] ~ normal(o_data[i],0.5);
モデルに変更すると、問題なく評価されます。
これまでのところ、スタンコードで試しました:
- サンプリング ステートメントの再配置
- ヘルパー変数の導入
increment_log_p
明示的にステートメントを書く- 誤ってキーワードを使用した場合に備えて変数名を変更する
- スタンコードに印刷ステートメントを追加します
- mu を 10 に設定
- 一様分布における制約の緩和/拡大
- および上記の組み合わせ
tru_val の値を出力したとき、ステートメントの順序に関係なく、通常は -2 から +2 の間の 0 付近の値を出力したので、驚くべきことに気付きmu <- 10; sigma <- 1;
ました (データセクションで) とサンプリングステートメントを設定してもtru_val[i] ~ uniform(9.5,10.5)
. これらの数値を取得する方法がよくわかりません。
誰かがこれに光を当ててくれることを本当に願っています。