我是一个非常新的统计分析领域,并且最近对BUGS / JAGS / STAN建模语言感兴趣。让我感到惊讶的是,我还没有看到任何新函数或发行版的例子被定义以避免代码重复。例如,假设我经常使用泊松分布的平方,无论如何都要做以下事情?
dsqpo <- function(lambda) {
tmp ~ dpois(lambda)
tmp2 <- tmp * tmp
return(tmp2)
}
然后在
model{
...
x ~ dsqpo(alpha)
y ~ dsqpo(beta)
}
每次都不定义新的临时变量。
答案 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