在rjags中保存优先级
我在在rjags中保存优先级,r,jags,R,Jags,我在rjags中运行一个贝叶斯模型,我希望能够输出MCMC轨迹图、参数的后验分布(我已经可以从coda中获得),以及后验分布与先验分布的比较 有没有办法将您在jagsmodel部分中指定的优先级保存为一个列表或某种不会强迫我复制和粘贴(然后以指数方式增加错误的可能性)所有具有其自身参数的分布的东西 我有下面的代码 cat( 'model{ for(i in 1:n){ P.hat[i] ~ dnorm(pi, df/sigma2) SS[i]
rjags
中运行一个贝叶斯模型,我希望能够输出MCMC轨迹图、参数的后验分布(我已经可以从coda中获得),以及后验分布与先验分布的比较
有没有办法将您在jagsmodel
部分中指定的优先级保存为一个列表或某种不会强迫我复制和粘贴(然后以指数方式增加错误的可能性)所有具有其自身参数的分布的东西
我有下面的代码
cat(
'model{
for(i in 1:n){
P.hat[i] ~ dnorm(pi, df/sigma2)
SS[i] ~ dgamma((df-1)/2, sigma2/2 )
R[i] ~ dbin(theta, N)
}
# relations
gam <- m*vs+(1-m)*va
theta <- (pi*beta*gam)/(gam*dt+(1-gam)*du)
# numerical values
df <- 15
# priors
pi ~ dnorm(0.05, 2)I(0,1)
sigma2 ~ dgamma(2, 0.1*df)
beta ~ dunif(0, 0.4)
m ~ dbeta(1, 4)
vs ~ dbeta(2, 9)
va ~ dbeta(2, 5)
dt ~ dnorm(0.3, 2)I(0,10)
du ~ dnorm(1.25, 2)I(0,10)
}',
file='model1.bug')
cat(
"模式",{
for(1:n中的i){
P.hat[i]~dnorm(pi,df/sigma2)
SS[i]~dgamma((df-1)/2,sigma2/2)
R[i]~dbin(θ,N)
}
#关系
gam简而言之,答案是否定的——JAGS(和bug)没有明确区分您定义为先验分布和模型中的其他分布,因此无法要求JAGS向您提供关于模型特定子部分的信息。查看先前分布的通常方法是绘制(或总结)它们分别在R
但是,有一个技巧可以用于模型以获得所需的结果:将循环的上索引(n)设置为0(在数据中)。这将导致JAGS完全忽略for循环中的所有内容,有效地删除模型的似然成分,只留下先验值。如果监视pi、sigma2等,您应该会看到这些参数的先验值分布。由于不可能计算,您还应该看到模型运行得更快!您不过,确实需要运行两次模型(一次用于先验,一次用于后验,数据正常)。简单的回答是没有问题(和bug)在你定义的先验分布和模型中的其他分布之间没有明确的区别,因此没有办法要求JAGS向你提供关于模型特定子部分的信息。查看先前分布的通常方法是在R中分别绘制(或总结)它们
但是,有一个技巧可以用于模型以获得所需的结果:将循环的上索引(n)设置为0(在数据中)。这将导致JAGS完全忽略for循环中的所有内容,有效地删除模型的似然成分,只留下先验值。如果监视pi、sigma2等,您应该会看到这些参数的先验值分布。由于不可能计算,您还应该看到模型运行得更快!您但是,确实需要运行模型两次(一次用于前一次,一次用于后一次,数据正常)。关于代码的问题属于上。我们将为您迁移此问题。关于代码的问题属于上。我们将为您迁移此问题。