¿Para qué distribuciones son diferentes las parametrizaciones en BUGS y R?

31

He encontrado algunas distribuciones para las cuales BUGS y R tienen diferentes parametrizaciones: Normal, log-Normal y Weibull.

Para cada uno de estos, deduzco que el segundo parámetro utilizado por R debe transformarse inversamente (1 / parámetro) antes de usarse en BUGS (o JAGS en mi caso).

¿Alguien sabe de una lista completa de estas transformaciones que existe actualmente?

Lo más cercano que puedo encontrar sería comparar las distribuciones en la tabla 7 del manual de usuario de JAGS 2.2.0 con los resultados de ?rnormetc. y quizás algunos textos de probabilidad. Este enfoque parece requerir que las transformaciones deban deducirse de los archivos PDF por separado.

Preferiría evitar esta tarea (y posibles errores) si ya se ha hecho, o comenzar la lista aquí.

Actualizar

Basado en las sugerencias de Ben, he escrito la siguiente función para transformar un marco de datos de parámetros de R a BUGS parametrizaciones.

##' 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
fuente
2
Realmente no es una respuesta, pero encontré útil esta hoja de trucos, Algunas distribuciones útiles en el análisis bayesiano con modelos de medición educativa (RJ Mislevy, 2001): cubre principalmente las distribuciones de ERRORES.
chl

Respuestas:

36

No sé de una lista enlatada.

actualización : esta lista (más información adicional) ahora se publica como Funciones de densidad de probabilidad de traducción: de R a BUGS y viceversa (2013), DS LeBauer, MC Dietze, BM Bolker R Journal 5 (1), 207-209.

Aquí está mi lista (ediciones proporcionadas por el interrogador original):

Normal y log-normal se parametrizan en términos de (precisión) en lugar de o (std. Dev. O varianza); σ σ 2 τ = 1 / σ 2 = 1 / varτσσ2τ=1/σ2=1/var

Beta, Poisson, Exponencial, Uniforme son todos iguales

El binomio negativo en BUGS tiene solo la parametrización discreta (tamaño, problema), no la parametrización "ecológica" (tamaño, mu, donde el tamaño puede ser no entero).

editar : Weibull en BUGS es ( = , = ), en R es ( = , = ) [la notación matemática es consistente con la notación utilizada en la documentación respectiva] Como se señaló en Cómo parametrizo un Distribución Weibull en JAGS / BUGS? ,νshapeλlambdaashapebscaleλ=(1/b)a

Gamma en ERRORES es ( shape, rate). Este es el valor predeterminado en R, pero R también permite (forma, escala) [si se nombra el argumento de escala]; tasa = 1 / escala

El orden es importante , especialmente en BUGS (que no tiene argumentos con nombre), por ejemplo, R dbinom(x,size,prob)vs BUGS dbin(p,n)[mismos parámetros, orden opuesto].

Diferencias de nombre :

  • Binomial : R = dbinom, ERRORES =dbin
  • Chi-cuadrado : R = dchisq, ERRORES =dchisqr
  • Weibull : R = dweibull, ERRORES =dweib
  • Binomio negativo : R = dnbinom, ERRORES =dnegbin

editar : para distribuciones truncadas, BUGS usa I(), JAGS usa dinterval()[vale la pena mirar en la documentación de JAGS si va a usar esto, puede haber otras diferencias sutiles]

Ben Bolker
fuente
Gran respuesta, gracias. Esto me ahorrará mucho poder mental, tiempo y, lo más importante, de posibles errores.
David LeBauer
1
No olvide las diferencias en la forma en que BUGS y JAGS tratan el truncamiento, la censura y el pedido previo de esas distribuciones (sección 8 del manual). En particular, JAGS tiene una dintervaldistribución, donde BUGS funciona con I ().
conjugateprior