MCMC ในพื้นที่พารามิเตอร์กระโดด?


18

ฉันกำลังพยายามใช้ MCMC กับปัญหา แต่นักบวชของฉัน (ในกรณีของฉันพวกเขาคือ )) ถูก จำกัด พื้นที่ ฉันสามารถใช้ MCMC ปกติและไม่สนใจตัวอย่างที่อยู่นอกเขตหวงห้าม (ซึ่งในกรณีของฉันคือ [0,1] ^ 2) นั่นคือฟังก์ชั่นการใช้การเปลี่ยนผ่านใหม่เมื่อการเปลี่ยนแปลงใหม่หลุดออกจากพื้นที่ที่ถูก จำกัดα[0,1],β[0,1]



@ เซนฉันไม่แน่ใจ แต่คำตอบที่เซียนแนะนำคือการยิบย่อย แต่แทนที่จะใช้ MH เพื่อใช้ตัวอย่างกิ๊บส์และย้ำอีกครั้งว่าหนึ่งในค่าของมิตินั้นเกินขอบเขตใช่ไหม?
Cupitor

1
หาก MH เสนอสิ่งที่อยู่นอกพื้นที่พารามิเตอร์ความน่าจะเป็นที่ยอมรับนั้นตั้งเป็นและทุกอย่างทำงานได้ดี ผมคิดว่า MH เพียงตีความ0 / 0เป็น0 (การประกาศของ0 = 0ในทฤษฎีการวัด) 00/000=0
คนที่แต่งตัวประหลาด

@guy แต่ตามการอภิปรายในหน้าของซีอาน (ลิงค์ด้านบนโดย Zen) ดูเหมือนว่า Gibbs จะมีความเหนือกว่าโดยไม่พูดถึงเหตุผลอะไรก็ตาม!
Cupitor

1
@Cupitor ฉันไม่เห็นเขาพูดแบบนั้น ฉันคิดว่านัยยะคือกาเบรียลกำลังทำ Metropolis-in-Gibbs
คนที่แต่งตัวประหลาด

คำตอบ:


27

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

ตัวเลือก 1: ตัวอย่างอิสระ คุณสามารถตั้งค่าการกระจายข้อเสนอของคุณเท่ากับการกระจายแบบสม่ำเสมอทั่วหน่วยสี่เหลี่ยมจัตุรัสซึ่งทำให้มั่นใจได้ว่าตัวอย่างจะไม่ตกนอกเขตหวงห้ามในขณะที่คุณเรียกมัน ข้อเสียที่อาจเกิดขึ้น: หากด้านหลังมีการกระจุกตัวอยู่ในพื้นที่เล็ก ๆ ของหน่วยสี่เหลี่ยมจัตุรัสคุณอาจมีอัตราการยอมรับที่ต่ำมาก OTOH มันยากที่จะสร้างตัวเลขสุ่มเร็วกว่าจากการแจกแจงแบบ U (0,1) อัพไซด์ที่มีโอกาส: ทำงานน้อยลงสำหรับคุณ

ตัวเลือกที่ 2: แปลงพารามิเตอร์ของคุณเป็นสิ่งที่ไม่ได้ผูกไว้ทำข้อเสนอสำหรับพารามิเตอร์ที่แปลงแล้วเปลี่ยนพารามิเตอร์กลับมาใช้ในฟังก์ชันโอกาส โปรดทราบว่าในกรณีนี้สิ่งที่ควรทำก่อนหน้านี้คือพารามิเตอร์ที่แปลงเพราะนั่นคือสิ่งที่คุณกำลังทำข้อเสนอดังนั้นคุณจะต้องยุ่งกับ Jacobian แห่งการเปลี่ยนแปลงเพื่อรับสิ่งใหม่ก่อน สำหรับการวิเคราะห์ของคุณแน่นอนว่าคุณจะแปลงตัวเลขสุ่มพารามิเตอร์ที่สร้างโดย MCMC กลับไปเป็นพารามิเตอร์ดั้งเดิม ข้อเสียที่อาจเกิดขึ้น: เริ่มต้นทำงานมากขึ้นสำหรับคุณ แนวโน้มกลับหัว: อัตราการตอบรับที่ดีกว่าสำหรับข้อเสนอของคุณ

ตัวเลือก 3: สร้างการแจกแจงข้อเสนอนอกเหนือจากตัวอย่างอิสระที่อยู่ในหน่วยสี่เหลี่ยม สิ่งนี้ช่วยให้คุณสามารถรักษาเครื่องแบบของคุณไว้ก่อนได้ แต่จะมีความซับซ้อนมากขึ้นเมื่อคำนวณความน่าจะเป็นของข้อเสนอ ตัวอย่างนี้ให้เป็นค่าปัจจุบันของหนึ่งในพารามิเตอร์ของคุณจะเป็นการกระจายเบต้ากับพารามิเตอร์( n x , n ( 1 - x ) ) ยิ่งnยิ่งมากขึ้นข้อเสนอของคุณจะเข้มข้นขึ้นกว่ามูลค่าปัจจุบัน ข้อเสียที่อาจเกิดขึ้น: เริ่มต้นทำงานมากขึ้นสำหรับคุณ Pptential คว่ำ: อัตราการยอมรับที่ดีกว่าสำหรับข้อเสนอของคุณ - แต่ถ้าคุณทำnx(nx,n(1x))nn มีขนาดใหญ่เกินไปและขยับเข้าใกล้มุมคุณอาจไขลานทำมุมเล็ก ๆ ก่อนที่จะออก

ตัวเลือก 4: เพียงปฏิเสธข้อเสนอที่อยู่นอกหน่วยสี่เหลี่ยม (ข้อเสนอแบบครึ่งใจของซีอาน) โปรดทราบว่านี่ไม่เหมือนกับการสร้างข้อเสนออื่น ในกรณีนี้คุณกำลังปฏิเสธข้อเสนอซึ่งหมายความว่าค่าถัดไปของคุณสำหรับพารามิเตอร์เหมือนกันกับค่าปัจจุบันสำหรับพารามิเตอร์ สิ่งนี้จะได้ผลเพราะมันจะเกิดอะไรขึ้นถ้าคุณมีความน่าจะเป็นก่อนหน้าเป็นศูนย์สำหรับบางส่วนของพื้นที่พารามิเตอร์ของคุณและสร้างตัวเลขสุ่มที่ตกอยู่ในภูมิภาคนั้น ข้อเสียที่อาจเกิดขึ้น: หากคุณเข้าใกล้มุมคุณอาจมีโอกาสได้รับการยอมรับต่ำและติดอยู่พักหนึ่ง อัพไซด์ที่มีโอกาส: ทำงานน้อยลงสำหรับคุณ

ตัวเลือกที่ 5: สร้างปัญหาแบบขยายบนระนาบซึ่งในหน่วยสี่เหลี่ยมจัตุรัสเหมือนกับปัญหาจริงที่คุณเผชิญทำทุกอย่างถูกต้องจากนั้นเมื่อโพสต์ประมวลผลผลลัพธ์ของการสุ่มตัวอย่าง MCMC ให้ทิ้งตัวอย่างทั้งหมดภายนอก ของตารางหน่วย ความเป็นไปได้ที่จะเกิดขึ้น: ถ้ามันง่ายที่จะสร้างปัญหาที่ขยายออกไปมันอาจจะทำงานได้ไม่ดีสำหรับคุณ ข้อเสียที่อาจเกิดขึ้น: หากโซ่มาร์คอฟเดินไปที่ไหนสักแห่งนอกจัตุรัสหน่วยในขณะที่คุณอาจมีความน่าจะเป็นที่ยอมรับที่น่ากลัวเพราะคุณจะทิ้งตัวอย่างส่วนใหญ่ของคุณ

ไม่ต้องสงสัยเลยว่ามีตัวเลือกอื่นฉันสนใจที่จะเห็นสิ่งที่คนอื่นแนะนำ!

ความแตกต่างระหว่าง 2 และ 3 คือความคิดแม้ว่าจะมีความหมายที่แท้จริงสำหรับสิ่งที่คุณทำ ฉันอาจจะไปกับ 3 เพราะฉันแค่ให้ R บอกฉันว่าน่าจะเป็นข้อเสนอ (ถ้าฉันเขียนโปรแกรมใน R) และจำนวนของความพยายามพิเศษนอกเหนือจากการปรับแต่งของพารามิเตอร์การกระจายข้อเสนอดู เล็กสำหรับฉัน ถ้าฉันใช้ JAGS หรือ BUGS แน่นอนว่าเป็นเรื่องที่แตกต่างกันโดยสิ้นเชิงเนื่องจากเครื่องมือเหล่านั้นจัดการกับข้อเสนอของตัวเองn


โหวต! ขอบคุณมากสำหรับคำตอบอย่างละเอียด แต่มีไม่กี่จุดที่ฉันพยายามที่จะปฏิบัติตาม: 1) จริง ๆ แล้วพื้นที่พารามิเตอร์มาจากส่วนของเส้นตรงในตารางและมันยากที่จะได้รับจากการสุ่มตัวอย่างแบบสม่ำเสมอฉันเดา 2) สิ่งนี้ไม่ได้เป็นความคิดที่ดีนัก เพื่อให้ภาพประกอบง่าย ๆ ให้จินตนาการขยายขอบเขตตัวอย่างเพียงแค่ตั้งค่าความน่าจะเป็นของพื้นที่รอบนอกเป็นศูนย์! นี่จะทำให้กระบวนการมาบรรจบกันช้ามากฉันเดาว่าน่าจะคล้ายกับ subsampling
Cupitor

3) ปัญหาเกี่ยวกับความคิดนี้คือข้อเสนอของคุณไม่สามารถย้อนกลับได้ดังนั้นจึงอาจเป็นไปได้ว่ารูปแบบการสุ่มตัวอย่างที่เกิดขึ้นอาจไม่เป็นไปตามหลักสรีรศาสตร์อีกต่อไป!
Cupitor

4) เป็นวิธีที่ฉันลองและดูสมเหตุสมผล (IMH!) 5) สิ่งนี้ดูเหมือนจะประสบจากตัวอย่างที่ฉันพูดถึงใน 2 และตามที่คุณบอกว่าตัวคุณเองอาจให้อัตราการยอมรับที่แย่มาก!
Cupitor

2
(0,inf)x(0,1)β

α=2.5(0.5,1)α=3.2(0,0.8)α=0.2(0.2,0)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.