Преобразование модели Jags в модель стана

Я пытаюсь преобразовать модель Jags в модель Stan.

Зубцы:

model{

    for (i in 1:n){

        theta[i] ~ dbeta(u*s, s-u*s)

        y[i] ~ dbin(theta[i],N[i])
    } 

    u ~ dunif(0,1)
    s ~ dlnorm(4,0.25)

}

Стэн:

data {
  int<lower=0> J;

  int y[J];

  int N[J]; 
}


parameters {

  real<lower=0, upper=1> u;

  real<lower=0> s;

  vector[J] theta;

}


model {

    s ~ lognormal(4,2);

    theta ~ beta(s*u, s*(1-u));

    y ~ binomial(N, theta);

}

Но когда я запускаю его, он возвращает следующее сообщение:

Цепочка 1: Отклонение начального значения: Цепочка 1: Ошибка оценки логарифмической вероятности при начальном значении. Цепочка 1: Исключение: beta_lpdf: Случайная переменная [4] равна -1,58608, но должна быть >= 0! (в 'model29e45483bba0_model' в строке 18)

Что может генерировать отрицательное значение в этой модели?


person TrollingtheName    schedule 02.12.2019    source источник


Ответы (1)


Сообщение об ошибке возникает из-за отсутствия соответствующих границ для theta. Так должно быть

vector<lower = 0, upper = 1>[J] theta;

Многие новые пользователи Стэна предполагают, что установка чего-то вроде бета-версии для theta означает, что она находится между нулем и единицей. Однако такого последствия нет, особенно в предложениях для theta, которые, как вы можете видеть из вашего сообщения об ошибке, могут быть отрицательными или больше единицы, если только не объявлены границы (в этом случае они применяются путем преобразования неограниченных переменных).

person Ben Goodrich    schedule 02.12.2019