Untuk distribusi mana parameterisasi dalam BUGS dan R berbeda?

31

Saya telah menemukan beberapa distribusi yang BUGS dan R memiliki parameterisasi berbeda: Normal, log-Normal, dan Weibull.

Untuk masing-masing ini, saya mengumpulkan bahwa parameter kedua yang digunakan oleh R perlu diubah terbalik (1 / parameter) sebelum digunakan dalam BUGS (atau JAGS dalam kasus saya).

Adakah yang tahu daftar lengkap transformasi yang saat ini ada?

Yang paling dekat yang dapat saya temukan adalah membandingkan distribusi dalam tabel 7 dari manual pengguna JAGS 2.2.0 dengan hasil ?rnormdll. Dan mungkin beberapa kemungkinan teks. Pendekatan ini tampaknya mensyaratkan bahwa transformasi perlu disimpulkan dari pdf secara terpisah.

Saya lebih suka menghindari tugas ini (dan kemungkinan kesalahan) jika sudah dilakukan, atau mulai daftar di sini.

Memperbarui

Berdasarkan saran Ben, saya telah menulis fungsi berikut untuk mengubah kerangka data dari parameter dari parameterisasi ke 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)
David LeBauer
sumber
2
Bukan benar-benar anwer, tetapi saya menemukan lembar contekan ini bermanfaat, Beberapa Distribusi Berguna dalam Analisis Bayesian dengan Model dari Pengukuran Pendidikan (RJ Mislevy, 2001) - ini terutama mencakup distribusi BUGS.
chl

Jawaban:

36

Saya tidak tahu daftar kaleng.

pembaruan : daftar ini (ditambah informasi tambahan) sekarang diterbitkan sebagai Menerjemahkan Fungsi Kerapatan Probabilitas: Dari R ke BUGS dan Kembali Lagi (2013), DS LeBauer, MC Dietze, BM Bolker R Journal 5 (1), 207-209.

Ini daftar saya (suntingan disediakan oleh penanya asli):

Normal dan log-normal adalah parameter dalam hal (presisi) daripada atau (std. Dev. Or variance); τσσ2τ=1/σ2=1/var

Beta, Poisson, Eksponensial, Seragam semuanya sama

Binomial negatif dalam BUGS hanya memiliki parameterisasi diskrit (ukuran, prob), bukan parameterisasi "ekologis" (ukuran, mu, di mana ukuran dapat menjadi non-integer).

sunting : Weibull dalam BUGS adalah ( = , = ), dalam R is ( = , = ) [notasi matematika konsisten dengan notasi yang digunakan dalam dokumentasi masing-masing] Seperti yang ditunjukkan pada Bagaimana cara mengukur parameter a Distribusi Weibull di JAGS / BUGS? ,νshapeλlambdaashapebscaleλ=(1/b)a

Gamma dalam BUGS adalah ( shape, rate). Ini adalah default dalam R, tetapi R juga memungkinkan (bentuk, skala) [jika argumen skala bernama]; tingkat = 1 / skala

Urutan penting , terutama dalam BUGS (yang tidak memiliki argumen nama), misalnya R dbinom(x,size,prob)vs BUGS dbin(p,n)[parameter yang sama, urutan yang berlawanan].

Perbedaan nama :

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

sunting : untuk distribusi terpotong penggunaan BUGS I(), JAGS menggunakan dinterval()[perlu melihat dalam dokumentasi JAGS jika Anda akan menggunakan ini, mungkin ada perbedaan halus lainnya]

Ben Bolker
sumber
Jawaban yang bagus - terima kasih. Ini akan menghemat banyak kekuatan otak, waktu, dan - yang paling penting - dari potensi kesalahan.
David LeBauer
1
Jangan lupa perbedaan dalam bagaimana BUGS dan JAGS berurusan dengan pemotongan, penyensoran dan pemesanan sebelumnya dari distribusi tersebut (bagian 8 dari manual). Secara khusus, JAGS memiliki dintervaldistribusi, di mana BUGS bekerja dengan I ().
conjugateprior