If statement 用于在JAGS中定义分布的if/else语句

If statement 用于在JAGS中定义分布的if/else语句,if-statement,truncation,jags,If Statement,Truncation,Jags,在JAGS中,我想为参数w[I]定义一个泊松分布,如果另一个参数e[I]大于0,它也会被截断(大于或等于2) 本质上,我希望它代表: w[i]~ifelse(e[i]>0,dpois(mu)T(2,),dpois(mu)) 我尝试过使用step函数,通过修改代码来响应其他人的帖子,该帖子要求类似的内容: 但这似乎不起作用 谢谢也许是这样的 pois1 ~ dpois(mu) T(2,) pois2 ~ dpois(mu) for(i in 1:N){ indicator1[i] <- if

在JAGS中,我想为参数w[I]定义一个泊松分布,如果另一个参数e[I]大于0,它也会被截断(大于或等于2)

本质上,我希望它代表:

w[i]~ifelse(e[i]>0,dpois(mu)T(2,),dpois(mu))

我尝试过使用step函数,通过修改代码来响应其他人的帖子,该帖子要求类似的内容:

但这似乎不起作用


谢谢

也许是这样的

pois1 ~ dpois(mu) T(2,)
pois2 ~ dpois(mu)
for(i in 1:N){
indicator1[i] <- ifelse(e[i] > 0, 1, 0)
indicator2[i] <- ifelse(e[i] <= 0, 1, 0)
w[i] <- (pois1 * indicator1[i]) + (pois2 * indicator2[i])
}

谢谢这很有效。现在我意识到我的问题是e[I]是循环定义的,但现在都排序了。太好了。我还添加了另一种方法,用于在答案中仅定义一个指标变量。
pois1 ~ dpois(mu) T(2,)
pois2 ~ dpois(mu)
for(i in 1:N){
indicator[i] <- ifelse(e[i] > 0, 1, 0)
w[i] <- (pois1 * indicator[i]) + (pois2 * (1 - indicator[i]))
}