การเซ็นเซอร์ / การตัดปลายใน JAGS


10

ฉันมีคำถามเกี่ยวกับวิธีแก้ไขปัญหาการตรวจสอบใน JAGS

ฉันสังเกตการผสมแบบสองตัวแปรตามปกติซึ่งค่า X มีข้อผิดพลาดในการวัด ฉันต้องการจำลอง 'ค่าเฉลี่ย' ที่แท้จริงของค่าการตรวจสอบที่สังเกตได้

xtrue+ϵ=xobserved ϵN(0,sd=.5)

นี่คือสิ่งที่ฉันมีตอนนี้:

 for (i in 1:n){
   x[i,1:2]~dmnorm(mu[z[i],1:2], tau[z[i],1:2,1:2])
   z[i]~dcat(prob[ ])
 }

Y ยังมีข้อผิดพลาดในการวัด สิ่งที่ฉันต้องการทำคืออะไรเช่นนี้:

 for (i in 1:n){
   x_obs[i] ~ dnorm(x_true[i],prec_x)I(x_true[i],)
   y_obs[i] ~ dnorm(y_true[i],prec_y)
   c(x_true[i]:y_true[i])~dmnorm(mu[ z [ i ],1:2], tau[z[i],1:2,1:2])
   z[i]~dcat(prob[ ])
 }

 #priors for measurement error
 e_x~dunif(.1,.9)
 prec_x<-1/pow(e_x,2)
 e_y~dunif(2,4)
 prec_y<-1/pow(e_y,2)

เห็นได้ชัดว่าคำสั่ง c ไม่ถูกต้องใน JAGS

ขอบคุณล่วงหน้า.


3
หากต้องการตัดให้ใช้ T (-, -) แต่อ่านคู่มือผู้ใช้เพื่อรับข้อมูลเกี่ยวกับการตัดทอนและตัดคำ
David LeBauer

คำตอบ:


9

บางทีนี่อาจเป็นสิ่งที่คุณกำลังมองหา:

x_obs[i] ~ dnorm(x_true[i],prec_x)T(x_true[i], )

JAGS มีตัวเลือกสำหรับการตรวจสอบและตัดทอน ดูเหมือนว่าคุณต้องการตัดทอนเนื่องจากคุณรู้เบื้องต้นว่าการสังเกตอยู่ในช่วงใดช่วงหนึ่ง

อ่านคู่มือผู้ใช้สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีที่ jags ใช้การตัดและการตัด


3

ขอบคุณสำหรับเคล็ดลับเดวิด ฉันโพสต์คำถามนี้ในฟอรัมสนับสนุน JAGS และได้รับคำตอบที่เป็นประโยชน์ กุญแจสำคัญคือการใช้อาร์เรย์สองมิติสำหรับค่า 'จริง'

for (j in 1:n){ 
  x_obs[j] ~ dnorm(xy_true[j,1], prec_x)T(xy_true[j,1],) 
  y_obs[j] ~ dnorm(xy_true[j,2], prec_y)
  xy_true[j, ] ~ dmnorm(mu[ z [j],1:2], tau[z[j],1:2,1:2]) 
  z[j]~dcat(prob[ ]) 
}

 #priors for measurement error 
 e_x~dunif(.1,.9)
 prec_x<-1/pow(e_x,2)
 e_y~dunif(2,4)
 prec_y<-1/pow(e_y,2) 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.