if/else 用于在 JAGS 中定义分布的语句
if/else statement for defining a distribution in JAGS
在 JAGS 中,我想为参数 w[i] 定义一个泊松分布,如果另一个参数 e[i] 大于 0,它也会被截断(大于或等于 2)。
基本上我希望它代表:
w[i] ~ ifelse( e[i] > 0, dpois(mu) T(2,) , dpois(mu) )
我已经尝试通过修改为响应其他人的 post 请求类似内容而给出的代码来使用 step 函数:Choosing Different Distributions based on if - else condition in WinBugs/JAGS
但这好像不行?
谢谢
也许是这样的?
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]
大于1时w[i]
取pois1
的值。如果不是 w[i]
,则取 pois2
的值。
编辑:或者,您可以只定义一个指标变量并按此方式进行。
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]))
}
在 JAGS 中,我想为参数 w[i] 定义一个泊松分布,如果另一个参数 e[i] 大于 0,它也会被截断(大于或等于 2)。
基本上我希望它代表:
w[i] ~ ifelse( e[i] > 0, dpois(mu) T(2,) , dpois(mu) )
我已经尝试通过修改为响应其他人的 post 请求类似内容而给出的代码来使用 step 函数:Choosing Different Distributions based on if - else condition in WinBugs/JAGS
但这好像不行?
谢谢
也许是这样的?
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]
大于1时w[i]
取pois1
的值。如果不是 w[i]
,则取 pois2
的值。
编辑:或者,您可以只定义一个指标变量并按此方式进行。
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]))
}