ฉันจะสุ่มตัวอย่างอย่างมีประสิทธิภาพจากการกระจายต่อไปนี้ได้อย่างไร?
หากไม่ใหญ่เกินไปการสุ่มตัวอย่างการปฏิเสธอาจเป็นวิธีที่ดีที่สุด แต่ฉันไม่แน่ใจว่าจะดำเนินการอย่างไรเมื่อkมีขนาดใหญ่ อาจจะมีการประมาณแบบเชิงเส้นกำกับบางอย่างที่สามารถใช้ได้?
ฉันจะสุ่มตัวอย่างอย่างมีประสิทธิภาพจากการกระจายต่อไปนี้ได้อย่างไร?
หากไม่ใหญ่เกินไปการสุ่มตัวอย่างการปฏิเสธอาจเป็นวิธีที่ดีที่สุด แต่ฉันไม่แน่ใจว่าจะดำเนินการอย่างไรเมื่อkมีขนาดใหญ่ อาจจะมีการประมาณแบบเชิงเส้นกำกับบางอย่างที่สามารถใช้ได้?
คำตอบ:
วิธีที่ง่ายที่สุดและวิธีการทั่วไปส่วนใหญ่ที่ใช้กับใด ๆกระจายตัดทอน (มันสามารถทั่วไปยังตัดทั้งสองด้าน) คือการใช้ผกผันเปลี่ยนการสุ่มตัวอย่าง หากคือการแจกแจงดอกเบี้ยสะสมให้ตั้งค่าp 0 = F ( k )และรับ
ที่คือตัวอย่างจากFซ้าย-ตัดทอนที่k ฟังก์ชั่น quantile F - 1แผนที่จะน่าจะเป็นตัวอย่างจากF เนื่องจากเรานำค่าของUเท่านั้นจาก "พื้นที่" ที่ตรงกับค่าของการแจกแจงเบต้าจากภูมิภาคที่ไม่ถูกตัดทอนคุณจะต้องสุ่มตัวอย่างค่าเหล่านั้นเท่านั้น
วิธีนี้จะแสดงให้เห็นในภาพด้านล่างที่พื้นที่ที่ถูกตัดทอนเป็นเครื่องหมายสี่เหลี่ยมสีเทาจุดสีแดงที่มาจากการจัดจำหน่ายและเปลี่ยนแล้วB ( 2 , 8 )ตัวอย่าง
scipy.special.betainc
pbeta
qbeta
สำหรับฟังก์ชั่นค
ความสวยงามของวิธีการนี้คือการทำงานหนักทั้งหมดในการตั้งค่า เมื่อกำหนดฟังก์ชั่นซองจดหมายค่าคงที่ normalizing สำหรับการคำนวณความหนาแน่นเบต้าที่ถูกตัดทอนสิ่งที่เหลืออยู่คือการสร้างตัวแปรสุ่มแบบสม่ำเสมอและดำเนินการเกี่ยวกับการดำเนินการทางคณิตศาสตร์อย่างง่ายไม่กี่บันทึกและพลัง & การเปรียบเทียบ ฟังก์ชั่นซองจดหมายที่กระชับขึ้น - ด้วยเส้นแนวนอนหรือเส้นโค้งแบบเอ็กซ์โปเนนเชียล - สามารถลดจำนวนการปฏิเสธได้