4

rstan を介して Stan を学習しようとしています (R に精通しているため)。シンプルな混合パレート モデルとノーマル モデルを実行してみました。(私が知る限り)正常にコンパイルされますが、サンプリングに失敗し、エラーが発生します:

"(-2, 2) 間の初期化は、100 回試行した後に失敗しました。初期値を指定するか、制約された値の範囲を縮小するか、モデルを再パラメータ化してください。

サンプラーの呼び出し中にエラーが発生しました。サンプリングは行われていません」

パラメーター化するさまざまな方法を試し、初期値を設定しようとしましたが、すべて役に立ちませんでした。

私のR + rstanコードは以下の通りです:

library(rstan)
rpareto = function(n, location, shape){location/runif(n)^(1/shape)}
sdvec=runif(1e3,0.1,1)
HMFtest=list(x=rpareto(1e3,10,2)+rnorm(1e3,0,sdvec), sdev=sdvec, N=1e3)

HMF.stan <- "
data {
  int<lower=0> N;
  real x[N];
  real sdev[N];
}
parameters {
  real<lower=0,upper=20> y_min;
  real<lower=0,upper=4> alpha;
  real xtrue[N];
}
model {
  y_min ~ lognormal(1, 1);
  alpha ~ lognormal(1, 1);
  xtrue ~ pareto(y_min, alpha);
  for(i in 1:N){
    x[i] ~ normal(xtrue[i], sdev[i]);
  }
}
"

stan.test <- stan(model_code=HMF.stan, data=HMFtest, pars=c('y_min','alpha'), chains=1, iter=30000, warmup=10000)

この例は JAGS で問題なく動作し (そのため、JAGS にもタグを付けました)、そのコードを投稿できます。

ちなみに、パレート分布を追加の正規分布に変更すると、正常に動作します (もちろん、ナンセンスな答えが得られます)。

私が間違っていることについての提案は大歓迎です! どういうわけか、スタンではなくJAGSを考えているのではないかと心配していますが、パレートモデルをスタンに当てはめる人々の例を見つけることができなかったので、私のアプローチを相互検証するのは困難でした.

4

3 に答える 3