31 votos

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

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

Para cada uno de ellos, deduzco que el segundo parámetro utilizado por R necesita ser transformado inversamente (1/parámetro) antes de ser utilizado en BUGS (o JAGS en mi caso).

¿Alguien conoce una lista completa de estas transformaciones que exista actualmente?

Lo más parecido que puedo encontrar sería comparar las distribuciones de la tabla 7 del Manual del usuario de JAGS 2.2.0 con los resultados de ?rnorm etc. y quizás algunos textos de probabilidad. Este enfoque parece requerir que las transformaciones tengan que ser deducidas de los pdfs por separado.

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

Actualización

Basado en las sugerencias de Ben, he escrito la siguiente función para transformar un marco de datos de parámetros de R a parametrizaciones de 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)

36voto

Ben Bolker Puntos 8729

No conozco ninguna lista enlatada.

actualización La lista (más información adicional) se publica ahora como Traducción de las funciones de densidad de probabilidad: De R a BUGS y viceversa (2013), DS LeBauer, MC Dietze, BM Bolker Diario R 5 (1), 207-209.

Esta es mi lista (editada por el autor de la pregunta):

Normal y log-normal se parametrizan en términos de $\tau$ (precisión) en lugar de que $\sigma$ o $\sigma^2$ (desviación estándar o varianza); $\tau = 1/\sigma^2 = 1/\mbox{var}$

Beta, Poisson, Exponencial, Uniforme son todos iguales

Binomio negativo en BUGS sólo tiene la parametrización discreta (tamaño,prob), no la parametrización "ecológica" (tamaño,mu, donde el tamaño puede ser no entero).

editar : Weibull en BUGS es ( $\nu$ = shape , $\lambda$ = lambda ), en R es ( $a$ = shape , $b$ = scale ) [la notación matemática es coherente con la notación utilizada en la documentación respectiva] Como se señala en ¿Cómo parametrizo una distribución Weibull en JAGS / BUGS? , $\lambda= (1/b)^a$

Gamma en BUGS es ( shape , rate ). Este es el valor por defecto en R, pero R también permite (shape,scale) [si el argumento scale es nombrado]; rate = 1/escala

Cuestiones de orden especialmente en BUGS (que no tiene nombre argumentos), por ejemplo, R dbinom(x,size,prob) vs BUGS dbin(p,n) [mismos parámetros, orden inverso].

Diferencias de nombres :

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

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X