Đối với phân phối nào thì các tham số hóa trong BUGS và R khác nhau?


31

Tôi đã tìm thấy một số bản phân phối mà BUGS và R có các tham số hóa khác nhau: Bình thường, log-Bình thường và Weibull.

Đối với mỗi trong số này, tôi tập hợp rằng tham số thứ hai được sử dụng bởi R cần phải được biến đổi nghịch đảo (1 / tham số) trước khi được sử dụng trong BUGS (hoặc JAGS trong trường hợp của tôi).

Có ai biết một danh sách toàn diện về những biến đổi hiện đang tồn tại?

Cách gần nhất tôi có thể tìm thấy là so sánh các bản phân phối trong bảng 7 của hướng dẫn sử dụng JAGS 2.2.0 với kết quả của ?rnormvv và có lẽ một vài văn bản xác suất. Cách tiếp cận này dường như yêu cầu các phép biến đổi sẽ cần phải được suy ra từ các tệp pdf một cách riêng biệt.

Tôi muốn tránh nhiệm vụ này (và các lỗi có thể xảy ra) nếu nó đã được thực hiện, nếu không thì bắt đầu danh sách ở đây.

Cập nhật

Dựa trên đề xuất của Ben, tôi đã viết hàm sau để chuyển đổi khung dữ liệu của các tham số từ tham số R sang 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
Không thực sự là một anwer, nhưng tôi thấy bảng cheat này hữu ích, Một số phân phối hữu ích trong phân tích Bayes với các mô hình từ đo lường giáo dục (RJ Mislevy, 2001) - nó chủ yếu bao gồm các phân phối BUGS.
chl

Câu trả lời:


36

Tôi không biết về một danh sách đóng hộp.

cập nhật : danh sách này (cộng với thông tin bổ sung) hiện được xuất bản dưới dạng Dịch các hàm mật độ xác suất: Từ R sang BUGS và Quay lại (2013), DS LeBauer, MC Dietze, BM Bolker R Tạp chí 5 (1), 207-209.

Đây là danh sách của tôi (các chỉnh sửa được cung cấp bởi người hỏi ban đầu):

Bình thường và log-normal được tham số hóa theo (độ chính xác) thay vì hoặc (std. Dev. Hoặc variance); τσσ2τ=1/σ2=1/var

Beta, Poisson, Exponential, Đồng phục đều giống nhau

Nhị thức âm trong BUGS chỉ có tham số hóa rời rạc (kích thước, đầu dò), không phải là tham số "sinh thái" (kích thước, mu, trong đó kích thước có thể không phải là số nguyên).

chỉnh sửa : Weibull trong BUGS là ( = , = ), trong R là ( = , = ) [ký hiệu toán học phù hợp với ký hiệu được sử dụng trong tài liệu tương ứng] Như được chỉ ra trong Làm thế nào để tôi tham số hóa Phân phối Weibull trong JAGS / BUGS? ,νshapeλlambdaashapebscaleλ=(1/b)a

Gamma trong BUGS là ( shape, rate). Đây là mặc định trong R, nhưng R cũng cho phép (hình dạng, tỷ lệ) [nếu đối số tỷ lệ được đặt tên]; tỷ lệ = 1 / tỷ lệ

Các vấn đề về thứ tự , đặc biệt là trong BUGS (không có đối số được đặt tên), ví dụ R dbinom(x,size,prob)vs BUGS dbin(p,n)[cùng tham số, thứ tự ngược lại].

Tên khác nhau :

  • Nhị thức : R = dbinom, BUGS =dbin
  • Chi bình phương : R = dchisq, BUGS =dchisqr
  • Weibull : R = dweibull, BUG =dweib
  • Nhị thức âm : R = dnbinom, BUGS =dnegbin

chỉnh sửa : đối với các bản phân phối bị cắt ngắn Sử dụng BUGS I(), JAGS sử dụng dinterval()[đáng để xem trong tài liệu JAGS nếu bạn sẽ sử dụng phần này, có thể có những khác biệt tinh tế khác]


Câu trả lời tuyệt vời - cảm ơn. Điều này sẽ giúp tôi tiết kiệm rất nhiều năng lực não bộ, thời gian và - quan trọng nhất - từ các lỗi tiềm ẩn.
David LeBauer

1
Đừng quên sự khác biệt trong cách BUGS và JAGS xử lý việc cắt xén, kiểm duyệt và đặt hàng trước các phân phối đó (phần 8 của tài liệu hướng dẫn). Đặc biệt, JAGS có một bản dintervalphân phối, trong đó BUGS hoạt động với I ().
liên hợp chiến binh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.