Per quali distribuzioni differiscono le parametrizzazioni in BUGS e R?


31

Ho trovato alcune distribuzioni per le quali BUGS e R hanno parametrizzazioni diverse: normale, log-normale e Weibull.

Per ognuno di questi, ho capito che il secondo parametro utilizzato da R deve essere trasformato inverso (1 / parametro) prima di essere utilizzato in BUGS (o JAGS nel mio caso).

Qualcuno sa di un elenco completo di queste trasformazioni che attualmente esiste?

Il più vicino che posso trovare sarebbe confrontare le distribuzioni nella tabella 7 del manuale utente JAGS 2.2.0 con i risultati di ?rnormecc. E forse alcuni testi probabilistici. Questo approccio sembra richiedere che le trasformazioni debbano essere dedotte separatamente dai pdf.

Preferirei evitare questo compito (e possibili errori) se è già stato fatto, oppure avviare l'elenco qui.

Aggiornare

Sulla base dei suggerimenti di Ben, ho scritto la seguente funzione per trasformare un dataframe di parametri da R a parametri di 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
Non proprio una risposta, ma ho trovato utile questo cheat sheet, alcune utili distribuzioni nell'analisi bayesiana con modelli tratti da misure educative (RJ Mislevy, 2001) - copre principalmente le distribuzioni BUGS.
chl

Risposte:


36

Non conosco un elenco predefinito.

aggiornamento : questo elenco (oltre a ulteriori informazioni) è ora pubblicato come Translating Probability Density Functions: da R a BUGS and Back Again (2013), DS LeBauer, MC Dietze, BM Bolker R Journal 5 (1), 207-209.

Ecco la mia lista (modifiche fornite dall'interrogatore originale):

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

Beta, Poisson, esponenziale, uniforme sono tutti uguali

Il binomio negativo in BUGS ha solo la parametrizzazione discreta (dimensione, prob), non la parametrizzazione "ecologica" (dimensione, mu, dove la dimensione può essere non intera).

νshapeλlambdaun'shapeBscaleλ=(1/B)un'

Gamma in BUGS è ( shape, rate). Questo è il valore predefinito in R, ma R consente anche (forma, scala) [se l'argomento scale è denominato]; rate = 1 / scale

L'ordine è importante , specialmente in BUGS (che non ha argomenti con nome), ad esempio R dbinom(x,size,prob)vs BUGS dbin(p,n)[stessi parametri, ordine opposto].

Differenze di nome :

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

modificare : per le distribuzioni troncate che utilizza BUGS I(), utilizza JAGS dinterval()[vale la pena cercare nella documentazione JAGS se intendi utilizzarla, potrebbero esserci altre sottili differenze]


Ottima risposta - grazie. Questo mi farà risparmiare un sacco di energia, tempo e, soprattutto, da potenziali errori.
David LeBauer,

1
Non dimenticare le differenze nel modo in cui BUGS e JAGS gestiscono il troncamento, la censura e l'ordinamento precedente di tali distribuzioni (sezione 8 del manuale). In particolare, JAGS ha una dintervaldistribuzione, in cui BUGS lavora con I ().
conjugateprior,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.