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 ?rnorm
vv 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)