Für welche Distributionen unterscheiden sich die Parametrisierungen in BUGS und R?

31

Ich habe einige Distributionen gefunden, für die BUGS und R unterschiedliche Parametrisierungen haben: Normal, log-Normal und Weibull.

Für jeden von diesen erfahre ich, dass der zweite von R verwendete Parameter invers transformiert werden muss (1 / parameter), bevor er in BUGS (oder in meinem Fall JAGS) verwendet wird.

Kennt jemand eine umfassende Liste dieser Transformationen, die derzeit existiert?

Am ehesten kann ich die Verteilungen in Tabelle 7 des JAGS 2.2.0-Benutzerhandbuchs mit den Ergebnissen von ?rnormusw. und möglicherweise einigen Wahrscheinlichkeitstexten vergleichen. Dieser Ansatz erfordert anscheinend, dass die Transformationen separat von den PDFs abgeleitet werden müssen.

Ich würde es vorziehen, diese Aufgabe (und mögliche Fehler) zu vermeiden, wenn sie bereits ausgeführt wurde, oder die Liste hier zu starten.

Aktualisieren

Auf der Grundlage von Bens Vorschlägen habe ich die folgende Funktion geschrieben, um einen Datenrahmen von Parametern von R- in BUGS-Parametrisierungen umzuwandeln.

##' 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
quelle
2
Keine wirkliche Antwort, aber ich fand diesen Spickzettel nützlich. Einige nützliche Verteilungen in der Bayes'schen Analyse mit Modellen aus der Bildungsmessung (RJ Mislevy, 2001) - er behandelt hauptsächlich BUGS-Verteilungen.
chl

Antworten:

36

Ich kenne keine Dosenliste.

Update : Diese Liste (plus zusätzliche Informationen) wird jetzt als Translating Probability Density Functions veröffentlicht: Von R zu BUGS und zurück (2013), DS LeBauer, MC Dietze, BM Bolker R Journal 5 (1), 207-209.

Hier ist meine Liste (Bearbeitungen vom ursprünglichen Fragesteller):

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

Beta, Poisson, Exponential, Uniform sind alle gleich

Negatives Binomial in BUGS hat nur die diskrete Parametrisierung (Größe, Wahrscheinlichkeit), nicht die "ökologische" (Größe, mu, wobei Größe nicht ganzzahlig sein kann) Parametrisierung.

νshapeλlambdaeinshapebscaleλ=(1/b)ein

Gamma in BUGS ist ( shape, rate). Dies ist die Standardeinstellung in R, aber R erlaubt auch (Form, Skalierung) [wenn das Skalierungsargument benannt ist]; rate = 1 / scale

Die Reihenfolge ist wichtig , insbesondere bei BUGS (die keine Argumente benannt haben), z. B. R dbinom(x,size,prob)vs BUGS dbin(p,n)[gleiche Parameter, umgekehrte Reihenfolge].

Namensunterschiede :

  • Binomial : R = dbinom, BUGS =dbin
  • Chi-Quadrat : R = dchisq, BUGS =dchisqr
  • Weibull : R = dweibull, BUGS =dweib
  • Negatives Binomial : R = dnbinom, BUGS =dnegbin

edit : für gekürzte Distributionen, die BUGS verwendet I(), verwendet dinterval()JAGS

Ben Bolker
quelle
Tolle Antwort - danke. Dies erspart mir viel Gehirnleistung, Zeit und vor allem potenzielle Fehler.
David LeBauer
1
Vergessen Sie nicht, wie BUGS und JAGS mit dem Abschneiden, Zensieren und der vorherigen Bestellung dieser Distributionen umgehen (Abschnitt 8 des Handbuchs). Insbesondere hat JAGS eine dintervalDistribution, in der BUGS mit I () zusammenarbeitet.
Conjugateprior