我正在使用rJAGS构建一个多级贝叶斯模型,我想为几个参数指定一个Cauchy先验。有没有办法在JAGS中执行此操作,还是需要切换到STAN?我的JAGS模型如下。我想用Cauchy替换dnorm
分布,但是JAGS找不到标准的R
Cauchy分布,例如dcauchy
,pcauchy
model_string <- "model{
for (i in 1:n){
y[i] ~ dbin(mu[i], 1)
p.bound[i] <- max(0, min(1, mu[i])) #381 gelman
logit(mu[i]) <- a[dc[i]] + b1*x1[i] + b2*x2[i]
}
b1 ~ dnorm(0,.001)
b2 ~ dnorm(0,.001)
for (j in 1: n.dc ){
a[j] ~ dnorm(g0, tau.a) #not goj, g1j
}
g0 ~ dnorm(0,.001)
tau.a <- pow(sigma.a , -2)
sigma.a ~ dnorm(0,.001)
}"
答案 0 :(得分:6)
Cauchy分布是t分布的一个特例,具有1个自由度(Wikipedia link)。虽然JAGS没有Cauchy,但它确实有t分布。
//inside the controller
final JFXPanel JFXPanel_VideoEmbedded= new JFXPanel();
@FXML
private JPanel VideoEmbedded;
...
//inside the videoplayer function
VideoEmbedded.add(JFXPanel_VideoEmbedded); //this doesn't work
设置k等于1,你有一个Cauchy先验
dt(mu, tau, k)
我不会将你的方差设置为正常或Cauchy先验,但考虑到方差总是正的(并且正常或Cauchy不是)。尝试使用伽玛分布等精确度。
dt(mu, tau, 1)