BUGS和R中的参数化对于哪些分布不同?


31

我发现一些BUGS和R具有不同参数化的分布:正态,对数正态和Weibull。

对于这些中的每一个,我都收集到R所使用的第二个参数需要在BUGS(在我的情况下为JAGS)中使用之前需要进行逆变换(1 /参数)。

有人知道当前存在的这些转换的完整列表吗?

我能找到的最接近的结果是将JAGS 2.2.0用户手册的表7中的分布与etc的结果?rnorm以及一些概率文本进行比较。这种方法似乎需要分别从pdf推导转换。

如果执行此任务,我希望避免执行此任务(以及可能的错误),否则,请从此处开始列表。

更新资料

基于Ben的建议,我编写了以下函数,将参数的数据帧从R转换为BUGS参数化。

##' convert R parameterizations to BUGS paramaterizations
##' 
##' R and BUGS have different parameterizations for some distributions. 
##' This function transforms the distributions from R defaults to BUGS 
##' defaults. BUGS is an implementation of the BUGS language, and these 
##' transformations are expected to work for bugs.
##' @param priors data.frame with colnames c('distn', 'parama', 'paramb')
##' @return priors with jags parameterizations
##' @author David LeBauer

r2bugs.distributions <- function(priors) {

  norm   <- priors$distn %in% 'norm'
  lnorm  <- priors$distn %in% 'lnorm'
  weib   <- priors$distn %in% 'weibull'
  bin    <- priors$distn %in% 'binom'

  ## Convert sd to precision for norm & lnorm
  priors$paramb[norm | lnorm] <-  1/priors$paramb[norm | lnorm]^2
  ## Convert R parameter b to JAGS parameter lambda by l = (1/b)^a
  priors$paramb[weib] <-   1 / priors$paramb[weib]^priors$parama[weib]
  ## Reverse parameter order for binomial
  priors[bin, c('parama', 'paramb')] <-  priors[bin, c('parama', 'paramb')]

  ## Translate distribution names
  priors$distn <- gsub('weibull', 'weib',
                       gsub('binom', 'bin',
                            gsub('chisq', 'chisqr',
                                 gsub('nbinom', 'negbin',
                                      as.vector(priors$distn)))))
  return(priors)
}

##' @examples
##' priors <- data.frame(distn = c('weibull', 'lnorm', 'norm', 'gamma'),
##'                     parama = c(1, 1, 1, 1),
##'                     paramb = c(2, 2, 2, 2))
##' r2bugs.distributions(priors)

2
并不是真正的麻烦,但我发现该备忘单很有用,“ 贝叶斯分析中的一些有用分布与来自教育测量的模型”(RJ Mislevy,2001年)-主要涵盖了BUGS分布。
chl 2010年

Answers:


36

我不知道罐头清单。

更新:此列表(以及其他信息)现在以“ 翻译概率密度函数:从R到BUGS并再次返回”的形式发布(2013),DS LeBauer,MC Dietze,BM Bolker R Journal 5(1),207-209。

这是我的清单(原始提问者提供的编辑):

σ σ 2τσσ2τ=1个/σ2=1个/变种

Beta,泊松,指数,均匀一致

BUGS中的负二项式参数化仅具有离散的参数化(大小,概率),而没有“生态”参数(大小,μ,其中大小可以是非整数)。

νshapeλlambda一种shapebscaleλ=1个/b一种

BUGS中的Gamma是(shaperate)。这是R中的默认设置,但R也允许(shape,scale)[如果scale参数被命名];比率= 1 /比例

顺序很重要,尤其是在BUGS(没有命名参数)中,例如R dbinom(x,size,prob)vs BUGS dbin(p,n)[相同参数,相反顺序]。

名称差异

  • 二项式:R = dbinom,BUGS =dbin
  • 卡方:R = dchisq,BUGS =dchisqr
  • 威布尔:R = dweibull,BUGS =dweib
  • 负二项式:R = dnbinom,BUGS =dnegbin

编辑:对于BUGS使用I(),JAGS使用的截断发行版,dinterval()[如果您要使用JAGS文档,则值得在JAGS文档中查看,可能会有其他细微的差异]


好答案-谢谢。这将为我节省大量的脑力,时间,而且最重要的是,避免了潜在的错误。
大卫勒鲍尔

1
不要忘记BUGS和JAGS在处理这些分布的截断,检查和优先排序方面的差异(手册第8节)。特别是,JAGS具有一个dinterval分布,其中BUGS与I()一起工作。
conjugateprior
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.