Я пытаюсь изучить Stan через rstan (так как я знаком с R). Я попытался запустить простую смешанную модель Pareto и Normal. Он компилируется отлично (насколько я могу судить), но он не может пробовать, давая мне ошибку:Смешанная модель Pareto и Normal Stan не работает
«Инициализация между (-2, 2) не удалась после 100 попыток. Попробуйте указать начальные значения, уменьшив диапазоны Зависимые значения, или reparameterizing модели не произошла
ошибки при вызове пробоотборника;. выборки не сделал»
Достаточно сказать, что я пробовал различные способы спараметрировать вещи, и попыталась установить начальные значения, но все нет помогло.
Мой 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 не Стэн, но я не мог найти любые примеры людей, подгоняющих модели Pareto со Стэном, поэтому мне было трудно перекреститься, чтобы подтвердить мой подход.
Пример экспериментальной модели коды (супер-ограничительный анолит априорных близко к правильному решению), что до сих пор нет образца: HMF.stan <- " данные { INT N; реальных х [N] ; реального SDEV [N]; } параметров { реальные <нижних = 5, верхний = 15> y_min; реального <нижнего = 1, верхнее = 3> альфа; реального xtrue [N]; } модель { y_min ~ normal (10, 5) T [5,15]; alpha ~ normal (2, 5) T [1,3]; xtrue ~ normal (y_min, alpha); для (i в 1: N) { x [i] ~ normal (xtrue [i], sdev [i]); } } « –
ASGR