首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在rjags中保存之前的数据

在rjags中保存之前的数据
EN

Stack Overflow用户
提问于 2016-04-20 22:26:30
回答 1查看 165关注 0票数 1

我在rjags中运行贝叶斯模型,我希望能够输出MCMC轨迹的曲线图,参数的后验分布(我已经可以从尾部获得),以及后验分布与先验分布的比较。

有没有办法将您在jags model part中指定的先验保存为一个列表或某种东西,这样就不会强迫我复制并粘贴(然后以指数方式增加出错的可能性)所有具有它们自己的参数的分布?

我有下面这段代码

代码语言:javascript
运行
复制
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')

我想“保存”“前科”部分。

提前感谢你的回答!EM

EN

回答 1

Stack Overflow用户

发布于 2016-04-25 03:30:11

简短的答案是no - JAGS (和BUGS)没有明确区分您定义为先验的内容和模型中的其他分布,因此没有办法要求JAGS提供关于模型的特定部分的信息。查看先前分布的通常方法是在R中分别绘制(或总结)它们。

但是,有一个技巧可以与您的模型一起工作,以获得您想要的:将循环的上限索引(n)设置为0(在数据中)。这将导致JAGS完全忽略该for循环中的所有内容,有效地删除模型的可能性成分,只留下先验。如果您监视pi、sigma2等,您应该会看到这些参数的先验分布。由于没有计算的可能性,您还应该看到模型运行得更快!不过,您确实需要运行该模型两次(一次用于先验数据,一次用于后验数据)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36749571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档