在BUGS / JAGS / STAN语言中定义新函数和发行版

时间:2014-04-21 20:58:48

标签: winbugs jags stan r2winbugs

我是一个非常新的统计分析领域,并且最近对BUGS / JAGS / STAN建模语言感兴趣。让我感到惊讶的是,我还没有看到任何新函数或发行版的例子被定义以避免代码重复。例如,假设我经常使用泊松分布的平方,无论如何都要做以下事情?

dsqpo <- function(lambda) {
  tmp ~ dpois(lambda)
  tmp2 <- tmp * tmp
  return(tmp2)
}

然后在

model{
  ...
  x ~ dsqpo(alpha)
  y ~ dsqpo(beta)
}

每次都不定义新的临时变量。

3 个答案:

答案 0 :(得分:2)

对于Stan,下一版本将提供功能。当前版本v2.2.0没有用户定义的函数作为语言的一部分。

有关建议的语法,请参阅:https://github.com/stan-dev/stan/wiki/Function-Syntax-and-Semantics-Design

有关Stan相关的其他帮助,请查看stan-users google群组:https://groups.google.com/forum/#!forum/stan-users

答案 1 :(得分:2)

在WinBUGS,OpenBUGS和JAGS中,您无法将新功能定义为建模语言的一部分。但是,您可以使用Component Pascal(适用于Win / OpenBUGS)或C ++(适用于JAGS)中的低级编程来完成此操作。

对于WinBUGS,请参阅WBDev(http://www.winbugs-development.org.uk/wbdev.html)。对于OpenBUGS,请参阅已安装程序的UDev子目录,其中包含PDF手册,基本上它的工作方式与WinBUGS相同。

对于JAGS,它没有正确记录 - 有一个用户编写的教程,用于在http://www.ncbi.nlm.nih.gov/pubmed/23959766添加新的发行版,但我知道的功能没有。

答案 2 :(得分:1)

最近的论文&#34;与Stan的贝叶斯推论:关于添加自定义分布的教程&#34;详细描述了如何做到这一点。我将doi包含在持久链接中。

<强>参考

Annis,J.,Miller,B。J.,&amp; Palmeri,T。J.(2016)。与Stan的贝叶斯推理:关于添加自定义分布的教程。行为研究方法,1-24。 http://doi.org/10.3758/s13428-016-0746-9