Для яких розподілів параметризації в BUGS та R різні?


31

Я знайшов деякі дистрибутиви, для яких BUGS та R мають різні параметризації: Normal, log-Normal та Weibull.

Для кожного з них я вважаю, що другий параметр, який використовується R, повинен бути перетворений в обернене (1 / параметр) перед тим, як використовувати його в BUGS (або в моєму випадку JAGS).

Хтось знає про всебічний перелік цих перетворень, який існує зараз?

Найближчим, що я можу знайти, було б порівняння розподілів у таблиці 7 керівництва користувача JAGS 2.2.0 з результатами ?rnormтощо і, можливо, декілька текстів ймовірності. Цей підхід вимагає, що перетворення потрібно буде виводити з pdfs окремо.

Я вважаю за краще уникнути цього завдання (та можливих помилок), якщо воно вже було зроблено, інакше запустити список тут.

Оновлення

На основі пропозицій Бена я написав наступну функцію для перетворення фрейму даних параметрів з R у параметри 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
Насправді не відповідь, але я вважаю цей чіт-лист корисним. Деякі корисні дистрибутиви в байєсівському аналізі з моделями навчальних вимірювань (RJ Mislevy, 2001) - він в основному охоплює дистрибутивні помилки.
chl

Відповіді:


36

Я не знаю списку консервів.

оновлення : цей список (плюс додаткова інформація) тепер опублікований як Переклад функцій щільності ймовірності: з R на BUGS і назад знову (2013), DS LeBauer, MC Dietze, BM Bolker R Journal 5 (1), 207-209.

Ось мій список (правки, надані оригінальним запитувачем):

Нормальний і нормально-нормальний параметризуються з точки зору (точність), а не або (std. Dev. Або дисперсія); τσσ2τ=1/σ2=1/вар

Бета, Пуассон, Експоненціальна, Уніформа - все ті ж

Негативний двочлен у BUGS має лише дискретну параметризацію (розмір, зонд), не "екологічну" (розмір, мю, де розмір може бути не цілим) параметризацією.

редагувати : Weibull в BUGS є ( = , = ), в R є ( = , = ) [математична нотація відповідає позначенням, використовуваним у відповідній документації] Як зазначено в розділі Як параметризувати a Розподіл Weibull в JAGS / BUGS? ,νshapeλlambdaаshapeбscaleλ=(1/б)а

Гама в BUGS - це ( shape, rate). Це за замовчуванням у R, але R також дозволяє (форма, масштаб) [якщо аргумент шкали названо]; ставка = 1 / шкала

Порядок має значення , особливо в BUGS (які не мають аргументованих аргументів), наприклад, R dbinom(x,size,prob)проти BUGS dbin(p,n)[однакові параметри, протилежний порядок].

Відмінність імен :

  • Двозначні : R = dbinom, БУГИ =dbin
  • Chi-квадрат : R = dchisq, BUGS =dchisqr
  • Вейбул : R = dweibull, BUGS =dweib
  • Негативний двочлен : R = dnbinom, BUGS =dnegbin

редагувати : для урізаних дистрибутивів використовує BUGS I(), JAGS використовує dinterval()[варто переглянути документацію JAGS, якщо ви збираєтесь це використовувати, можуть бути інші тонкі відмінності]


Чудова відповідь - спасибі. Це позбавить мене багато сил, часу та - головне - від потенційних помилок.
David LeBauer

1
Не забувайте про відмінності в тому, як BUGS та JAGS поводяться з усіченням, цензурою та попереднім замовленням цих розподілів (розділ 8 цього посібника). Зокрема, JAGS має dintervalдистрибуцію, де BUGS працює з I ().
сполученийперіор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.