อันนี้เป็นอีกตัวอย่างที่ผมใช้ประโยชน์ RLink ใน Mathematica ครับ
ผมมีแบบจำลองอันหนึ่งที่ผมเขียนด้วยภาษา Oberon (โบราณมาก; http://en.wikipedia.org/wiki/Oberon_(programming_language)) เพื่อใช้ใน WinBUGS อีกทีเพื่อทำ Markov Chain Monte Carlo (MCMC; http://en.wikipedia.org/wiki/Markov_chain_Monte_Carlo) ด้วยเทคนิค Gibbs Sampling (http://en.wikipedia.org/wiki/Gibbs_sampling) ในการประมาณค่าตัวแปรของแบบจำลองครับ
ในการทำ MCMC เพื่อประมาณค่าตัวแปรของแบบจำลองกับข้อมูลแต่ละชุดของผมนี้จะใช้เวลาประมาณ 15 นาที ซึ่งค่อนข้างจะเสียเวลามากถ้าทำทีละครั้งกับข้อมูลทั้งหมดที่มี ดังนั้นผมเลยใช้ RLink ช่วย
วิธีที่ผมทำก็คือใช้ R เรียก WinBUGS ด้วยแพ็คเกจ R2WinBUGS แล้วก็ใช้ RLink ช่วยเรียก R อีกทีครับ จากนั้นผมก็เอามาทำ parallel ใน Mathematica ครับ
อันนี้เป็นตัวอย่าง code ครับ
เราจะทำการโหลด RLink ไปที่ kernels ทุกตัว พร้อมกับเรียกใช้ R2WinBUGS
ด้านล่างนี้เป็น code ที่ผมใช้ในการสร้าง input ไฟล์ของ WinBUGS สำหรับข้อมูลแต่ล่ะชุด
และ อันนี้ code ที่ผมใช้สำหรับ run WinBUGS ครับ
ซึ่งก่อนที่จะ run แบบ parallel นั้นต้องทำให้ทุก ๆ kernel รู้จัก function หรือ ตัวแปรที่จะใช้ก่อนด้วยคำสั่ง DistributeDefinitions
จากนั้นเราก็สามารถที่จะการคำนวณแบบ parallel ได้ครับ
ส่วนอันนี้เป็นตัวอย่างของผลลัพท์ที่ได้จากการทำ MCMC ครับ