ในช่วงไม่กี่วันที่ผ่านมาฉันพยายามเข้าใจว่า Markov Chain Monte Carlo (MCMC) ทำงานอย่างไร โดยเฉพาะฉันพยายามทำความเข้าใจและใช้อัลกอริทึม Metropolis-Hastings จนถึงตอนนี้ฉันคิดว่าฉันมีความเข้าใจโดยรวมเกี่ยวกับอัลกอริทึม แต่มีบางสิ่งที่ยังไม่ชัดเจนสำหรับฉัน ฉันต้องการใช้ MCMC เพื่อให้พอดีกับบางรุ่นของข้อมูล ด้วยเหตุนี้ฉันจะอธิบายความเข้าใจของฉันเกี่ยวกับอัลกอริทึม Metropolis-Hastings สำหรับปรับเส้นตรงให้กับข้อมูลที่สังเกตได้ :
1) ตรวจเดาการเริ่มต้นสำหรับ ตั้งค่านี้เป็นปัจจุบันของเรา( ) เพิ่มตอนท้ายของ Markov Chain ( ) ด้วย
2) ทำซ้ำขั้นตอนการร้องหลายครั้ง
3) ประเมินโอกาสในปัจจุบัน ( ) ให้และD
4) เสนอใหม่( ) โดยการสุ่มตัวอย่างจากการกระจายปกติกับและ\สำหรับตอนนี้คงที่
5) ประเมินโอกาสใหม่ ( ) ให้และD a 1 D
6) หากใหญ่กว่าให้ยอมรับเป็นใหม่ต่อท้ายและไปที่ขั้นตอนที่ 2L 0 a 1 a 0 C
7) ถ้าน้อยกว่าสร้างตัวเลข ( ) ในช่วง [0,1] จากการแจกแจงแบบเดียวกันL 0 U
8) หากมีขนาดเล็กกว่าความแตกต่างระหว่างสองโอกาส ( - ) ให้ยอมรับเป็นใหม่ต่อท้ายและไปที่ขั้นตอนที่ 2L 1 L 0 a 1 a 0 C
9) ถ้ามีค่ามากกว่าความแตกต่างระหว่างสองโอกาส ( - ) ให้ผนวกที่ส่วนท้ายของให้ใช้ไปให้ไปที่ขั้นตอนที่ 2L 1 L 0 a 0 C a 0
10) สิ้นสุดการทำซ้ำ
11) ลบองค์ประกอบบางอย่างจากจุดเริ่มต้นของ (เฟสเบิร์นอิน)
12) ตอนนี้ใช้ค่าเฉลี่ยของค่าในCเฉลี่ยนี้เป็นประมาณ
ตอนนี้ฉันมีคำถามบางอย่างเกี่ยวกับขั้นตอนข้างต้น:
- ฉันจะสร้างฟังก์ชันความน่าจะเป็นสำหรับแต่สำหรับฟังก์ชันใด ๆ ได้อย่างไร?
- นี่เป็นการใช้งานอัลกอริทึม Metropolis-Hastings ที่ถูกต้องหรือไม่?
- การเลือกวิธีการสร้างหมายเลขสุ่มในขั้นตอนที่ 7 สามารถเปลี่ยนผลลัพธ์ได้อย่างไร
- อัลกอริทึมนี้จะเปลี่ยนไปอย่างไรถ้าฉันมีพารามิเตอร์หลายตัว? ตัวอย่างเช่นถ้าผมมีรูปแบบ B
หมายเหตุ / เครดิต: โครงสร้างหลักของอัลกอริทึมที่อธิบายข้างต้นขึ้นอยู่กับรหัสจาก MPIA Python Workshop