การกระจายของพารามิเตอร์ใน BUGS และ R แตกต่างกันอย่างไร?


31

ฉันได้พบการแจกแจงบางอย่างซึ่ง BUGS และ R มีพารามิเตอร์ต่างกัน: Normal, log-Normal และ Weibull

สำหรับแต่ละสิ่งเหล่านี้ฉันรวบรวมว่าพารามิเตอร์ตัวที่สองที่ใช้โดย R จำเป็นต้องแปลงผกผัน (1 / พารามิเตอร์) ก่อนที่จะใช้ใน BUGS (หรือ JAGS ในกรณีของฉัน)

ไม่มีใครทราบรายการที่ครอบคลุมของการเปลี่ยนแปลงเหล่านี้ที่มีอยู่ในปัจจุบัน?

ที่ใกล้เคียงที่สุดที่ฉันสามารถหาได้คือการเปรียบเทียบการแจกแจงในตารางที่ 7 ของคู่มือผู้ใช้ JAGS 2.2.0กับผลลัพธ์?rnormอื่น ๆ และอาจเป็นข้อความความน่าจะเป็นบางอย่าง วิธีนี้ดูเหมือนจะต้องการการแปลงที่จะต้องมีการอนุมานจากไฟล์ PDF แยกต่างหาก

ฉันต้องการหลีกเลี่ยงงานนี้ (และข้อผิดพลาดที่เป็นไปได้) หากทำไปแล้วหรือเริ่มรายการที่นี่

ปรับปรุง

ตามคำแนะนำของเบ็นฉันได้เขียนฟังก์ชั่นต่อไปนี้เพื่อแปลงดาต้าเฟรมของพารามิเตอร์จาก R เป็น BUGS parameterization

##' 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
ไม่ใช่ anwer จริงๆ แต่ฉันพบว่าแผ่นงานนี้มีประโยชน์, การแจกแจงที่เป็นประโยชน์บางอย่างในการวิเคราะห์แบบเบย์ด้วยแบบจำลองจากการวัดทางการศึกษา (RJ Mislevy, 2001) - ส่วนใหญ่จะครอบคลุมการแจกแจงแบบ BUGS
chl

คำตอบ:


36

ฉันไม่รู้รายชื่อกระป๋อง

อัปเดต : รายการนี้ (รวมถึงข้อมูลเพิ่มเติม) ได้รับการเผยแพร่ในขณะนี้เป็นฟังก์ชั่นการแปลความหนาแน่นความน่าจะเป็น: จาก R ถึง BUGS และกลับมาอีกครั้ง (2013), DS LeBauer, MC Dietze, BM Bolker R Journal 5 (1), 207-209

นี่คือรายการของฉัน (แก้ไขโดยผู้ถามต้นฉบับ):

Normal และ log-normal มีการกำหนดพารามิเตอร์ในรูปของ (ความแม่นยำ) มากกว่าหรือ (std. dev. หรือความแปรปรวน); τσσ2τ=1/σ2=1/var

Beta, Poisson, Exponential, Uniformเหมือนกันหมด

ทวินามลบใน BUGS มีการกำหนดพารามิเตอร์แบบแยกเฉพาะ (ขนาด, โพรบ), ไม่ใช่ "เชิงนิเวศวิทยา" (ขนาด, mu, โดยที่ขนาดสามารถเป็นพารามิเตอร์ที่ไม่ใช่จำนวนเต็ม)

แก้ไข : Weibullใน BUGS คือ ( = , = ), ใน R คือ ( = , = ) [สัญกรณ์คณิตศาสตร์สอดคล้องกับสัญกรณ์ที่ใช้ในเอกสารที่เกี่ยวข้อง] ดังที่ฉันจะแปรพารามิเตอร์ a การกระจาย Weibull เป็น JAGS / BUGS หรือไม่ ,νshapeλlambdaashapescaleλ=(1/)a

แกมมาใน BUGS คือ ( shape, rate) นี่เป็นค่าเริ่มต้นใน R แต่ R ยังอนุญาตให้ (รูปร่างขนาด) [ถ้าอาร์กิวเมนต์สเกลตั้งชื่อ]; rate = 1 / scale

การสั่งซื้อมีความสำคัญโดยเฉพาะอย่างยิ่งใน BUGS (ซึ่งไม่มีชื่ออาร์กิวเมนต์) เช่น R dbinom(x,size,prob)vs BUGS dbin(p,n)[พารามิเตอร์เดียวกันตามลำดับตรงข้าม]

ความแตกต่างของชื่อ :

  • ทวินาม : R = dbinom, BUGS =dbin
  • Chi-squared : R = dchisq, BUGS =dchisqr
  • Weibull : R = dweibull, BUGS =dweib
  • ทวินามลบ : R = dnbinom, BUGS =dnegbin

แก้ไข : สำหรับการแจกแจงแบบตัดปลาย BUGS ใช้I()JAGS ใช้dinterval()[มันคุ้มค่าที่จะดูในเอกสารประกอบของ JAGS หากคุณจะใช้สิ่งนี้อาจมีความแตกต่างเล็กน้อยอื่น ๆ ]


คำตอบที่ดี - ขอบคุณ สิ่งนี้จะช่วยฉันประหยัดพลังงานสมองเวลาและที่สำคัญที่สุด - จากข้อผิดพลาดที่อาจเกิดขึ้น
David LeBauer

1
อย่าลืมความแตกต่างในวิธีที่ BUGS และ JAGS จัดการกับการตัดทอนการตัดทอนและการเรียงลำดับก่อนหน้าของการแจกแจงเหล่านั้น (ส่วนที่ 8 ของคู่มือ) โดยเฉพาะอย่างยิ่ง JAGS มีการdintervalกระจายที่ BUGS ทำงานร่วมกับ I ()
ผัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.