สมมติว่าเรามีการกระจาย Dirichlet กับมิติเวกเตอร์พารามิเตอร์alpha_K] ฉันจะวาดตัวอย่าง ( เวกเตอร์ Dimensional) จากการแจกแจงนี้ได้อย่างไร? ฉันต้องการคำอธิบายง่ายๆ→การα = [ α 1 , α 2 , . . , α K ] K
สมมติว่าเรามีการกระจาย Dirichlet กับมิติเวกเตอร์พารามิเตอร์alpha_K] ฉันจะวาดตัวอย่าง ( เวกเตอร์ Dimensional) จากการแจกแจงนี้ได้อย่างไร? ฉันต้องการคำอธิบายง่ายๆ→การα = [ α 1 , α 2 , . . , α K ] K
คำตอบ:
ขั้นแรกให้สุ่มตัวอย่างตัวอย่างอิสระจากการแจกแจงแกมมาแต่ละรายการด้วยความหนาแน่นy 1 , … , y K
จากนั้นตั้งค่า
ตอนนี้จะติดตามการแจกแจง Dirichlet
หน้าวิกิพีเดียในการกระจาย Dirichletจะบอกคุณว่าวิธีการตัวอย่างจากการกระจาย Dirichlet
นอกจากนี้ในR
ไลบรารีMCMCpack
ยังมีฟังก์ชันสำหรับการสุ่มตัวอย่างตัวแปรแบบสุ่มจากการแจกแจง Dirichlet
วิธีการง่าย ๆ (ในขณะที่ไม่แน่นอน) ประกอบด้วยการใช้ความจริงที่ว่าการแจกแจงแบบดิริชเลตนั้นเทียบเท่ากับการทดลองโกศของ Polya (วาดจากชุดของลูกบอลสีและทุกครั้งที่คุณวาดลูกบอลคุณจะนำกลับมาวางในโกศด้วยลูกบอลที่สองที่มีสีเดียวกัน)
จากนั้น:
ทำซ้ำ N ครั้ง
จบซ้ำ
หากฉันไม่ผิดวิธีการนั้นแน่นอน asymptotically แต่เนื่องจาก N มี จำกัด คุณจะไม่วาดการแจกแจงบางอย่างที่มีความน่าจะเป็นน้อยก่อน (ในขณะที่คุณควรวาดด้วยความถี่ที่น้อยมาก) ฉันเดาว่ามันอาจจะน่าพอใจในกรณีส่วนใหญ่กับ N = K.10
np.random.dirichlet
การใช้งานเพราะมันจะสร้างศูนย์ที่แน่นอนในเวกเตอร์ความน่าจะเป็นที่สุ่มตัวอย่างแม้ว่าเวกเตอร์ดังกล่าวไม่ได้อยู่ในการสนับสนุนของ Dirichlet นี่คือสิ่งที่ฉันได้ที่นี่