Указание целочисленной скрытой переменной в stan

Я изучаю байесовский анализ данных. Я пытаюсь воспроизвести учебные пособия от Trond Reitan от stan, которые изначально были созданы WinBugs.

В частности, у меня есть следующие данные и модель

weta.windata<-list(numdet=c(0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 1, 2, 0, 3, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 1, 0, 3, 1, 1, 3, 1, 1, 2, 0, 2, 1, 1, 1, 1,0, 0, 0, 2, 0, 2, 4, 3, 1, 0, 0, 2, 0, 2, 2, 1, 0, 0, 1),
           numvisit=c(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,4, 4, 4, 4, 4, 4, 4 ,4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3),
           nsites=72)

model_string1="
data{
int nsites;
real<lower=0> numdet[nsites];
real<lower=0> numvisit[nsites];
}
parameters{
real<lower=0> p;
real<lower=0> psi;
int<lower=0> z[nsites];
}
model{
p~uniform(0,1);
psi~uniform(0,1);

for(i in 1:nsites){
z[i]~ bernoulli(psi);
p.site[i]~z[i]*p;
numdet[i]~binomial(numvisit[i],p.site[i]);
}
}
"

mcmc_samples <- stan(model_code=model_string1, 
                      data=weta.windata, 
                      pars=c("p","psi","z"), 
                      chains=3, iter=30000, warmup=10000)

Контекст посвящен обнаружению ветвей на полях. Есть 72 сайта. для каждого сайта исследователи посетили несколько раз (т. е. numvisit) и записали, сколько раз было найдено WTA (т. е. numdet).

Существует скрытая переменная z, описывающая, есть ли на одном сайте WTA или нет. psi - это вероятность того, что на одном сайте есть WETA. p - скорость обнаружения.

У меня проблема в том, что я не могу объявить z целыми числами.

parameters or transformed parameters cannot be integer or integer array;  found declared type int, parameter name=z
Problem with declaration.

Однако, если я установил z как реальное, то есть

real<lower=0> z[nsites];

проблема заключается в том, что я не могу установить переменную из bernoulli как целое число ...

No matches for: 

  real ~ bernoulli(real)

Я новичок в Стэне. Простите меня, если этот вопрос очень глупый.


person Ding Li    schedule 30.06.2017    source источник


Ответы (1)


Стэн не поддерживает целочисленные параметры или уловки, позволяющие вам притвориться, что реальные переменные являются целыми числами. Что он поддерживает, так это исключение целочисленных переменных из плотности. Затем вы можете реконструировать их с гораздо большей эффективностью и с гораздо более высоким разрешением хвоста.

Начнем с главы руководства, посвященной скрытым дискретным параметрам. Он включает в себя реализацию моделей популяции CJS, которые могут быть вам знакомы. Я применил модели занятости Дорацио и Ройла в качестве примера, а Хироки Ито перевел Стэну всю книгу Кери и Шауба. Все они связаны в разделе пользователей >> документации на веб-сайте.

person Bob Carpenter    schedule 30.06.2017