Para quais distribuições as parametrizações no BUGS e R são diferentes?

31

Eu encontrei algumas distribuições para as quais BUGS e R têm diferentes parametrizações: Normal, log-Normal e Weibull.

Para cada uma delas, entendo que o segundo parâmetro usado por R precisa ser transformado inversamente (1 / parâmetro) antes de ser usado no BUGS (ou JAGS no meu caso).

Alguém sabe de uma lista abrangente dessas transformações que existem atualmente?

O mais próximo que posso encontrar seria comparar as distribuições na tabela 7 do manual do usuário do JAGS 2.2.0 com os resultados de ?rnormetc. e talvez com alguns textos de probabilidade. Essa abordagem parece exigir que as transformações precisem ser deduzidas dos PDFs separadamente.

Eu preferiria evitar esta tarefa (e possíveis erros) se já tiver sido executada, ou então iniciar a lista aqui.

Atualizar

Com base nas sugestões de Ben, escrevi a seguinte função para transformar um quadro de dados de parâmetros de parametrizações R para 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)
David LeBauer
fonte
2
Não é realmente uma resposta, mas achei útil esta folha de dicas, Algumas distribuições úteis em análise bayesiana com modelos de medição educacional (RJ Mislevy, 2001) - abrange principalmente as distribuições de BUGS.
chl

Respostas:

36

Eu não sei de uma lista enlatada.

update : esta lista (mais informações adicionais) agora está publicada como Translating Probens Density Functions: From R to BUGS and Back Again (2013), DS LeBauer, MC Dietze, BM Bolker R Journal 5 (1), 207-209.

Aqui está minha lista (edições fornecidas pelo questionador original):

τσσ2τ=1/σ2=1/var

Beta, Poisson, Exponencial, Uniforme são todos iguais

O binômio negativo no BUGS possui apenas a parametrização discreta (tamanho, prob), não a parametrização "ecológica" (tamanho, mu, onde o tamanho pode ser não inteiro).

νshapeλlambdaashapebscaleλ=(1/b)a

A gama no BUGS é ( shape, rate). Esse é o padrão em R, mas R também permite (forma, escala) [se o argumento de escala for nomeado]; taxa = 1 / escala

A ordem é importante , especialmente em BUGS (que não possui argumentos nomeados), por exemplo, R dbinom(x,size,prob)vs BUGS dbin(p,n)[mesmos parâmetros, ordem oposta].

Diferenças de nome :

  • Binomial : R = dbinom, ERROS =dbin
  • Qui-quadrado : R = dchisq, ERROS =dchisqr
  • Weibull : R = dweibull, ERROS =dweib
  • Binomial negativo : R = dnbinom, BUGS =dnegbin

edit : para distribuições truncadas que o BUGS usa I(), o JAGS usa dinterval()[vale a pena procurar na documentação do JAGS se você for usar isso, pode haver outras diferenças sutis]

Ben Bolker
fonte
Ótima resposta - obrigado. Isso me poupará muito poder cerebral, tempo e - o mais importante - de possíveis erros.
David LeBauer
1
Não se esqueça das diferenças de como o BUGS e o JAGS lidam com o truncamento, a censura e a solicitação prévia dessas distribuições (seção 8 do manual). Em particular, o JAGS tem uma dintervaldistribuição, onde o BUGS trabalha com I ().
conjugateprior