我正在尝试将Jags模型转换为stan模型。
Jags:
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:随机variable4为-1.58608,但必须为>= 0!(在'model29e45483bba0_model‘的第18行)
在这个模型中,什么会产生负值?
发布于 2019-12-02 11:36:21
该错误消息是由于theta上没有适当的界限而导致的。它应该是
vector<lower = 0, upper = 1>[J] theta;许多Stan的新用户认为,在theta上设置一个类似测试版的东西意味着它在0到1之间。但是,没有这样的含义,特别是对于theta的建议,正如您从错误消息中看到的那样,它可以是负的,也可以大于1,除非声明了界限(在这种情况下,它们是通过无约束变量的转换来强制执行的)。
https://stackoverflow.com/questions/59132294
复制相似问题