現在、いくつかの JAGS モデルを STAN に移植しようとしています。「stan::prob::exponential_log(N4stan5agrad3varE): Random variable is nan:0, but must not be nan!」という奇妙なエラーが表示されます。それらをデバッグするには、いくつかのローカルパラメーターの値を知りたいです。
JAGS では、任意の変数のモニターをセットアップできます。STAN はパラメータのみを監視します。ただし、パラメーターに割り当てを行うことはできません (正しく理解していれば)。
では、中間変数を監視するにはどうすればよいでしょうか。
誰かが私が犯したばかげた間違いを見た場合に備えて、モデル コードも貼り付けます。ただし、同じモデルを二重指数関数 (2 つのレート) の CDF として定式化できることを認識していることに注意してください。これは私が計画したものを簡略化したものです。
Model:
data {
int y[11]; //
int reps[11];
real soas[11];
}
parameters {
real<lower=0.001,upper=0.200> v1;
real<lower=0.001,upper=0.200> v2;
}
model {
int dif[11,96];
real cf[11];
real p[11];
real t1[11,96];
real t2[11,96];
for (i in 1:11){
for (r in 1:reps[i]){
t1[i,r] ~ exponential(v1);
t2[i,r] ~ exponential(v2);
dif[i,r] <- (t1[i,r]+soas[i]<=(t2[i,r]));
}
cf[i] <- sum(dif[i]);
p[i] <-cf[i]/reps[i];
y[i] ~ binomial(reps[i],p[i]);
}
}
ここにいくつかのダミーデータがあります:
psy_dat = {
'soas' : numpy.array(range(-100,101,20)),
'y' : [47, 46, 62, 50, 59, 47, 36, 13, 7, 2, 1],
'reps' : [48, 48, 64, 64, 92, 92, 92, 64, 64, 48, 48]
}