การวาดภาพจากการกระจาย Dirichlet


25

สมมติว่าเรามีการกระจาย Dirichlet กับมิติเวกเตอร์พารามิเตอร์alpha_K] ฉันจะวาดตัวอย่าง ( เวกเตอร์ Dimensional) จากการแจกแจงนี้ได้อย่างไร? ฉันต้องการคำอธิบายง่ายๆ→การα = [ α 1 , α 2 , . . , α K ] KKα=[α1,α2,...,αK]K

คำตอบ:


25

ขั้นแรกให้สุ่มตัวอย่างตัวอย่างอิสระจากการแจกแจงแกมมาแต่ละรายการด้วยความหนาแน่นy 1 , , y KKY1,...,YK

แกมมา(αผม,1)=Yผมαผม-1อี-YผมΓ(αผม),

จากนั้นตั้งค่า

xผม=YผมΣJ=1KYJ.

ตอนนี้จะติดตามการแจกแจง Dirichletx1,...,xK

หน้าวิกิพีเดียในการกระจาย Dirichletจะบอกคุณว่าวิธีการตัวอย่างจากการกระจาย Dirichlet

นอกจากนี้ในRไลบรารีMCMCpackยังมีฟังก์ชันสำหรับการสุ่มตัวอย่างตัวแปรแบบสุ่มจากการแจกแจง Dirichlet


2
การใช้งานฟังก์ชั่นสำหรับการสร้างแบบสุ่มจาก Dirichlet สามารถเป็นทุนได้ในcran.r-project.org/web/packages/extraDistr
ทิม

2

วิธีการง่าย ๆ (ในขณะที่ไม่แน่นอน) ประกอบด้วยการใช้ความจริงที่ว่าการแจกแจงแบบดิริชเลตนั้นเทียบเท่ากับการทดลองโกศของ Polya (วาดจากชุดของลูกบอลสีและทุกครั้งที่คุณวาดลูกบอลคุณจะนำกลับมาวางในโกศด้วยลูกบอลที่สองที่มีสีเดียวกัน)

αผม

จากนั้น:

ทำซ้ำ N ครั้ง

αผม

αผม

จบซ้ำ

α

หากฉันไม่ผิดวิธีการนั้นแน่นอน asymptotically แต่เนื่องจาก N มี จำกัด คุณจะไม่วาดการแจกแจงบางอย่างที่มีความน่าจะเป็นน้อยก่อน (ในขณะที่คุณควรวาดด้วยความถี่ที่น้อยมาก) ฉันเดาว่ามันอาจจะน่าพอใจในกรณีส่วนใหญ่กับ N = K.10


ฉันสงสัยว่านี่คือวิธีnp.random.dirichletการใช้งานเพราะมันจะสร้างศูนย์ที่แน่นอนในเวกเตอร์ความน่าจะเป็นที่สุ่มตัวอย่างแม้ว่าเวกเตอร์ดังกล่าวไม่ได้อยู่ในการสนับสนุนของ Dirichlet นี่คือสิ่งที่ฉันได้ที่นี่
Eli Korvigo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.