โดยทั่วไปแล้วฉันขอแนะนำไม่ให้เข้ารหัส MCMC ของคุณสำหรับการวิเคราะห์แบบเบย์ที่ใช้จริง นี่เป็นทั้งการทำงานและเวลาและมีแนวโน้มที่จะแนะนำบั๊กในโค้ด ตัวอย่างของ Blackbox เช่น Stan ใช้ตัวอย่างที่ซับซ้อนมากแล้ว เชื่อฉันสิคุณจะไม่เขียนรหัสตัวอย่างนี้สำหรับการวิเคราะห์เพียงครั้งเดียว!
มีกรณีพิเศษที่จะไม่เพียงพอ ตัวอย่างเช่นหากคุณต้องการทำการวิเคราะห์แบบเรียลไทม์ (เช่นการตัดสินใจทางคอมพิวเตอร์โดยใช้ข้อมูลที่เข้ามา) โปรแกรมเหล่านี้จะไม่เป็นความคิดที่ดี เนื่องจาก Stan ต้องการคอมไพล์โค้ด C ++ ซึ่งอาจใช้เวลามากกว่าการใช้แซมเพลอร์ที่เตรียมไว้แล้วสำหรับรุ่นที่ค่อนข้างง่าย ในกรณีนั้นคุณอาจต้องการเขียนรหัสของคุณเอง นอกจากนี้ฉันเชื่อว่ามีกรณีพิเศษที่แพคเกจอย่างสแตนทำได้ไม่ดีมากเช่นโมเดลของรัฐที่ไม่ใช่แบบเกาส์ (การเปิดเผยอย่างเต็มรูปแบบ: ฉันเชื่อว่าสแตนไม่ดีในกรณีนี้ แต่ไม่รู้) ในกรณีดังกล่าวอาจคุ้มค่าที่จะใช้ MCMC แบบกำหนดเอง แต่นี่เป็นข้อยกเว้นไม่ใช่กฎ!
พูดตามตรงฉันคิดว่านักวิจัยส่วนใหญ่ที่เขียนตัวอย่างสำหรับการวิเคราะห์เพียงครั้งเดียว (และสิ่งนี้เกิดขึ้นฉันได้เห็นแล้ว) ทำเช่นนั้นเพราะพวกเขาชอบเขียนตัวอย่างของตัวเอง อย่างน้อยที่สุดฉันสามารถพูดได้ว่าฉันตกอยู่ภายใต้หมวดหมู่นั้น (เช่นฉันผิดหวังที่การเขียนตัวอย่างของตัวเองไม่ใช่วิธีที่ดีที่สุดในการทำสิ่งต่าง ๆ )
นอกจากนี้ในขณะที่มันไม่สมเหตุสมผลที่จะเขียนตัวอย่างของคุณเองสำหรับการวิเคราะห์เพียงครั้งเดียวแต่มันก็สมเหตุสมผลที่จะเขียนโค้ดของคุณเองสำหรับคลาสของการวิเคราะห์. เนื่องจาก JAG, Stan ฯลฯ เป็นตัวอย่างกล่องดำคุณสามารถทำให้สิ่งต่าง ๆ เร็วขึ้นโดยผู้เชี่ยวชาญสำหรับรุ่นที่กำหนดแม้ว่าจำนวนของการปรับปรุงจะขึ้นอยู่กับรุ่น แต่การเขียนตัวอย่างที่มีประสิทธิภาพสูงจากพื้นดินขึ้นมาอาจจะเป็น 10-1,000 ชั่วโมงของการทำงานขึ้นอยู่กับประสบการณ์ความซับซ้อนของแบบจำลอง ฯลฯ หากคุณกำลังทำวิจัยในวิธีการแบบเบย์หรือการเขียนซอฟต์แวร์เชิงสถิติ มันเป็นงานของคุณ แต่ถ้าเจ้านายของคุณพูดว่า "เฮ้คุณสามารถวิเคราะห์ชุดข้อมูลการวัดซ้ำนี้ได้ไหม?" และคุณใช้เวลา 250 ชั่วโมงในการเขียนตัวอย่างที่มีประสิทธิภาพเจ้านายของคุณมีแนวโน้มที่จะอารมณ์เสีย ในทางตรงกันข้ามคุณอาจจะเขียนแบบจำลองนี้ในสแตนอินพูด 2 ชั่วโมงและมีเวลาทำงาน 2 นาทีแทนที่จะใช้เวลา 1 นาทีโดยตัวอย่างที่มีประสิทธิภาพ