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

机器算法验证 r 分布 错误 锯齿 参数化
2022-02-03 02:21:24

我发现了一些分布,其中 BUGS 和 R 具有不同的参数化:Normal、log-Normal 和 Weibull。

对于其中的每一个,我认为 R 使用的第二个参数需要在用于 BUGS(或在我的情况下为 JAGS)之前进行逆变换(1/参数)。

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

我能找到的最接近的是将JAGS 2.2.0 用户手册的表 7 中的分布与等的结果进行比较?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)
1个回答

我不知道罐头清单。

更新:此列表(以及附加信息)现已发布为翻译概率密度函数:从 R 到 BUGS 并再次返回(2013),DS LeBauer,MC Dietze,BM Bolker R 期刊 5 (1),207-209。

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

正态和对数正态 参数化为τ(精度)而不是σ或者σ2(标准差或方差);τ=1/σ2=1/变量

Beta, Poisson, Exponential, Uniform都是一样的

BUGS 中的负二项式只有离散参数化(size,prob),没有“生态”(size,mu,其中 size 可以是非整数)参数化。

编辑: BUGS 中的Weibull是 (ν= shape,λ= lambda),在 R 中是 (一种= shape,b= scale) [数学符号与相应文档中使用的符号一致] 正如如何在 JAGS / BUGS 中参数化 Weibull 分布?,λ=(1/b)一种

BUGS 中的Gammashape为 ( , rate)。这是 R 中的默认值,但 R 也允许 (shape,scale) [如果命名了 scale 参数];比率 = 1/比例

顺序很重要,尤其是在 BUGS(没有命名参数)中,例如 Rdbinom(x,size,prob)与 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 文档中查看,可能还有其他细微差别]