การเพิ่ม function เข้าไปใน WINBUGS

การเพิ่ม function เข้าไปใน WINBUGS

ผมมีข้อมูลที่ต้องการนำมาเปรียบเทียบกับแบบจำลองการเพิ่มจำนวนของเชื้อมาลาเรียในร่างกายผู้ติดเชื้อที่เสนอโดย N.J. White et al. ด้วยเทคนิค Markov chain Monte Carlo (MCMC) และผมได้เขียนโปรแกรมด้วย Mathematica ตัวอย่างตามนี้ครับ

เพื่อช่วยในการเปรียบเทียบนี้แต่ติดปัญหาว่าข้อมูลมีจำนวนมากและโปรแกรมที่ผมเขียนด้วย Mathematica นี้ค่อนข้างช้า มีคนแนะนำให้ทดลองใช้ WINBUGS แต่ภาษาของ BUGS เองไม่เหมาะที่จะนำมาประยุกต์ใช้กับแบบจำลองที่ผมต้องการได้  แต่ผมก็ไปพบว่าเราสามารถที่จะเพิ่มคำสั่งหรือfunction เข้าไปในตัว WINBUGS ได้ด้วยการเขียนภาษาที่เรียกว่า Component Pascal  ผ่านโมดูลอันหนึ่งที่เรียกว่า WBDev ด้วยตัวโปรแกรมที่เรียกว่า BlackBox  ซึ่งผมจะอธิบายคร่าวๆว่าทำอย่างไร
1. ก่อนอื่นเลยก็ทำการติดตั้ง BlackBox จากนั้นก็ copy ไฟล์และ folder ทั้งหมดของ WINBUGS (version > 1.4) ไปว่างไว้ใน folder ของ BlackBox
2. จากนั้นก็เปิด template ไฟล์ที่ชื่อ VectorTemplate.odc หรือ ScalarTemplate.odc ใน BlackBox จาก BlackBoxFolder\WBDev\Mod ขึ้นกับว่า function ที่เขียนมีการ return ค่ากลับเป็นเลขโดด ๆ (scalar) หรือเป็นอาร์เรย์ของตัวเลข (vector)
3. ทำการแก้ไข template ตามต้องการ จากนั้นก็บันทึกไฟล์ไว้ที่เดียวกันกับ template ที่  BlackBoxFolder\WBDev\Mod (อย่าลืมเปลี่ยนชื่อนะครับ)
4. ให้เปิดไฟล์ชื่อ Functions.odc จาก BlackBoxFolder\WBDev\Rsrc แล้วเพิ่มชื่อ function ของเราเข้าไป ดูตัวอย่างในไฟล์นั้นได้ครับ
5. ปิด BlackBox แล้วเปิดใหม่ครับ จะเห็นว่าเราสามารถใช้ WINBUGS จากใน BlackBox ได้เลยพร้อมกัน function ที่เราเพิ่มเข้าไปครับ
ขอให้สนุกกับ MCMC ครับ