สุ่มตัวอย่างการกระจายเบต้าที่มีประสิทธิภาพอย่างมีประสิทธิภาพ


10

ฉันจะสุ่มตัวอย่างอย่างมีประสิทธิภาพจากการกระจายต่อไปนี้ได้อย่างไร?

xB(α,β), x>k

หากไม่ใหญ่เกินไปการสุ่มตัวอย่างการปฏิเสธอาจเป็นวิธีที่ดีที่สุด แต่ฉันไม่แน่ใจว่าจะดำเนินการอย่างไรเมื่อkมีขนาดใหญ่ อาจจะมีการประมาณแบบเชิงเส้นกำกับบางอย่างที่สามารถใช้ได้?kk


1
มันไม่ชัดเจนอย่างชัดเจนในสิ่งที่คุณตั้งใจจะมี " " คุณหมายถึงการตัดทอนกระจายเบต้า (ตัดทอนบนซ้ายที่k )? xB(α,β), x>kk
Glen_b -Reinstate Monica

@Glen_b อย่างแน่นอน
user1502040

5
สำหรับพารามิเตอร์รูปร่างทั้งสองที่มีค่ามากกว่า 1 การแจกแจงแบบเบต้าคือ log-concave ดังนั้นซองจดหมายแบบเอ็กซ์โปเนนเชียลจึงสามารถใช้สำหรับการสุ่มตัวอย่างการปฏิเสธ ในการสร้างความแปรปรวนเบต้าที่ไม่ได้รับการตัดทอนคุณกำลังสุ่มตัวอย่างจากการแจกแจงเอ็กซ์โพเนนเชียลที่ถูกตัดทอน (ซึ่งง่ายต่อการทำ) มันควรจะตรงไปตรงมาเพื่อปรับวิธีนี้
Scortchi - Reinstate Monica

คำตอบ:


14

วิธีที่ง่ายที่สุดและวิธีการทั่วไปส่วนใหญ่ที่ใช้กับใด ๆกระจายตัดทอน (มันสามารถทั่วไปยังตัดทั้งสองด้าน) คือการใช้ผกผันเปลี่ยนการสุ่มตัวอย่าง หากคือการแจกแจงดอกเบี้ยสะสมให้ตั้งค่าp 0 = F ( k )และรับFp0=F(k)

UU(p0,1)X=F1(U)

ที่คือตัวอย่างจากFซ้าย-ตัดทอนที่k ฟังก์ชั่น quantile F - 1แผนที่จะน่าจะเป็นตัวอย่างจากF เนื่องจากเรานำค่าของUเท่านั้นจาก "พื้นที่" ที่ตรงกับค่าของการแจกแจงเบต้าจากภูมิภาคที่ไม่ถูกตัดทอนคุณจะต้องสุ่มตัวอย่างค่าเหล่านั้นเท่านั้นXFkF1FU

วิธีนี้จะแสดงให้เห็นในภาพด้านล่างที่พื้นที่ที่ถูกตัดทอนเป็นเครื่องหมายสี่เหลี่ยมสีเทาจุดสีแดงที่มาจากการจัดจำหน่ายและเปลี่ยนแล้วB ( 2 , 8 )ตัวอย่างU(p0,1)B(2,8)

การสุ่มตัวอย่างการแปลงผกผันจากการแจกแจงแบบปลาย


5
(+1) เป็นเรื่องที่ควรสังเกตว่าฟังก์ชั่นควอไทล์นั้นไม่ได้รับการประเมินอย่างง่ายดาย
Scortchi - Reinstate Monica

1
@Scortchi ถ้า a หรือ b เป็น 1 หรืออย่างน้อยจำนวนเต็มจะมีรูปแบบไม่เลว (ดูวิกิพีเดีย ) และในหลามมีสำหรับผกผันและในการวิจัยมีscipy.special.betainc pbeta
Graipher

3
@Graipher: ฉันควรจะพูดว่า "ถูกโดยทั่วไป" - มันจะดีกว่าที่จะหลีกเลี่ยง Newton-Raphson หรือวิธีแก้ปัญหาซ้ำ ๆ ถ้าเป็นไปได้ (BTW qbetaสำหรับฟังก์ชั่นค
วอไทล์

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

1
kk

8

k

αβk1<k2

f(x)=x(α1)(1x)(β1)B(k2,α,β)B(k1,α,β)

xLxUα,β>1

g(x)=cλeλ(xxL)

λ

λ=a1xb11x
c
c=f(x)λeλ(xxL)

ป้อนคำอธิบายรูปภาพที่นี่

A=c(1eλ(xUxL))
xλc

Q(x)=xa(1x)b(a+b2)xa+1[exp((b1)(xxL)1x+xL(a1)x(a1))exp((b1)(xxU)1x+xU(a1)x(a1))]

dQdxxdQdx=0

k1k2Ulog(1U)λλ

ป้อนคำอธิบายรูปภาพที่นี่

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


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

α<1β<1

1
αβ

@whuber: (1) วิธีการที่ฉันได้รับที่นี่เพื่อสร้างซองจดหมายจะไม่ทำงานเพราะความหนาแน่นไม่เข้าสู่เว้า (2) (a) ฉันหมายถึงฟังก์ชั่นพีชคณิตอย่างแน่นอน + บันทึกและอำนาจ, ตรีโกณมิติ ฟังก์ชั่นถ้าฉันถูกถามหรืออาจเป็นฟังก์ชั่นแกมม่า - ฉันยอมรับว่าฉันไม่มีความคิดที่ชัดเจน (b) คะแนนที่ได้รับ - การประเมินฟังก์ชั่นที่รวดเร็วจะไม่ถูก จำกัด อยู่กับผู้ที่มีรูปแบบปิด
Scortchi - Reinstate Monica

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