การสุ่มตัวอย่างแบบสม่ำเสมอจากเริม


29

ฉันกำลังมองหาอัลกอริทึมในการสร้างอาร์เรย์ของตัวเลขสุ่ม N ซึ่งผลรวมของตัวเลข N คือ 1 และตัวเลขทั้งหมดอยู่ภายใน 0 และ 1 ตัวอย่างเช่น N = 3 จุดสุ่ม (x, y, z) ควรอยู่ภายในสามเหลี่ยม:

x + y + z = 1
0 < x < 1
0 < y < 1
0 < z < 1

โดยหลักการแล้วฉันต้องการให้แต่ละจุดภายในพื้นที่มีความน่าจะเป็นเท่ากัน ถ้ามันยากเกินไปฉันสามารถวางข้อกำหนดได้ ขอบคุณ


การกระจายเป้าหมายคืออะไร? คุณลองทำอะไร
ราฟาเอล

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

คำตอบ:


28

ให้เราคิดก่อนว่าคุณต้องการตัวอย่างภายใน

x + y + z = 1
0 ≤ x ≤ 1
0 ≤ y ≤ 1
0 ≤ z ≤ 1

สิ่งนี้ไม่ได้สร้างความแตกต่างเนื่องจากจุดตัวอย่างจะยังคงอยู่ในพื้นที่ที่คุณร้องขอซึ่งมีความน่าจะเป็นสูง

ตอนนี้คุณจะเหลือการสุ่มตัวอย่างจุดจากเริม ในตัวอย่าง 3 มิติคุณจะได้รับ 2d simplex (สามเหลี่ยม) ที่รับรู้ในแบบ 3 มิติ

วิธีการเลือกจุดที่สุ่มอย่างสม่ำเสมอได้ถูกกล่าวถึงในโพสต์บล็อกนี้(ดูความคิดเห็น)

สำหรับปัญหาของคุณหมายความว่าคุณรับตัวเลขสุ่มจากช่วงเวลา( 0 , 1 )จากนั้นคุณเพิ่ม0และ1เพื่อรับรายการหมายเลขn + 1 คุณเรียงลำดับรายการและจากนั้นคุณบันทึกความแตกต่างระหว่างองค์ประกอบสองรายการที่ต่อเนื่องกัน นี่จะแสดงรายการหมายเลขnที่จะรวมได้สูงสุด1รายการ ยิ่งไปกว่านั้นการสุ่มตัวอย่างนี้ยังเหมือนกัน ความคิดนี้สามารถพบได้ในโดนัลด์บีรูบิน, The Bayesian bootstrap Ann statist 9, 1981, 130-134n-1(0,1)01n+1n1

ตัวอย่างเช่น ( ) คุณมีตัวเลขสุ่มสามตัวจากนั้นคุณจะได้รับการเรียงลำดับและสิ่งนี้จะให้ความแตกต่างและจากการสร้างตัวเลขสี่ตัวเหล่านี้รวมกันเป็น 1n=40.4 0.2 0.10 0.1 0.2 0.4 10.1 0.1 0.2 0.6

อีกวิธีคือต่อไปนี้: ตัวอย่างแรกจากไฮเปอร์คิวบ์ (นั่นคือคุณลืมx+y+z=1) และจากนั้นทำให้ปกติจุดตัวอย่าง การทำให้เป็นมาตรฐานคือการฉายจาก -hypercube ถึงd - 1 -simplex มันควรจะชัดเจนโดยสังหรณ์ว่าจุดที่อยู่ตรงกลางของ simplex นั้นมี "pre-image-points" มากกว่าด้านนอกdd-1. ดังนั้นหากคุณสุ่มตัวอย่างจากไฮเปอร์คิวบ์แบบนี้จะไม่ให้การสุ่มตัวอย่างแบบสม่ำเสมอในซิมเพล็กซ์ อย่างไรก็ตามหากคุณสุ่มตัวอย่างจากไฮเปอร์คิวบ์ด้วยการแจกแจงเอ็กซ์โปเนนเชียลที่เหมาะสมกว่าเอฟเฟกต์นี้จะถูกยกเลิก รูปแสดงความคิดว่าทั้งสองวิธีจะสุ่มตัวอย่างอย่างไร อย่างไรก็ตามฉันชอบวิธีการ "เรียงลำดับ" เนื่องจากรูปแบบเรียบง่าย นอกจากนี้ยังง่ายต่อการใช้งาน

ตัวอย่างวิธีการสุ่มตัวอย่าง 2 แบบ


n(0,1)

ฉันตอบคำถามของคุณในคำตอบเพิ่มเติม
A.Schulz

1
มีหลักฐานง่าย ๆ ที่แสดงการเรียงลำดับให้การแจกแจงแบบเดียวกันหรือไม่? ฉันมีพื้นฐานที่น่าจะเป็นเท่านั้นดังนั้นกระดาษจึงอยู่เหนือหัวฉัน
Chao Xu

5
n(0,1)nn-1(0,1)

1
@Orient: โปรดถามคำถามคุณในโพสต์แยกต่างหากและอย่าใช้ความคิดเห็นในทางที่ผิด
A.Schulz

8

นี่คือการเพิ่มคำตอบที่มีอยู่

Devroyeเป็นข้อมูลอ้างอิงที่ดีเยี่ยมสำหรับคำถามประเภทนี้ Chap.7 ให้อัลกอริทึมที่จำเป็นในการสร้างสถิติการสั่งซื้อเครื่องแบบซึ่ง OP เป็น

n[0,1]O(nเข้าสู่ระบบn)nx1,...,xnExพี(1)

(Yผม)1ผมn=Σ1...ผมxJΣ1...nxJ
O(n)

[0,1]2x+3Y+Z=5


ถ้าฉันทำตามคำตอบที่นี่: stackoverflow.com/questions/2106503/…จากนั้นการสร้างเลขสุ่มจากการแจกแจงเอ็กซ์โพเนนเชียลนั้นเป็นการประเมินลอการิทึมซึ่งอาจช้าไปหน่อย
R zu

3
X[0] = 0
for i = 1 to N-1
    X[i] = uniform(0,1)
X[n] = 1
sort X[0..N]
for i = 1 to N
    Z[i] = X[i] - X[i-1]
return Z[1..N]

ที่นี่uniform(0,1)ส่งกลับจำนวนจริงโดยอิสระและกระจายอย่างสม่ำเสมอระหว่าง 0 ถึง 1


5
นี่คือคำตอบของ A. Schulz ในโค้ดโดยไม่มีคำอธิบายใช่ไหม
ราฟาเอล

1

ดูบทความนี้ : สมิ ธ เอ็นและ Tromble หม่อมราชวงศ์เก็บตัวอย่างสม่ำเสมอจากหน่วยเริม


2
โปรดจัดรูปแบบคำตอบของคุณในแบบที่อ่านได้: คุณกำลังเขียนเพื่อมนุษย์ไม่ใช่คอมไพเลอร์ bibtex นอกจากนี้ถ้ากระดาษมีออนไลน์มันมีประสิทธิภาพมากขึ้นสำหรับคุณที่จะให้ลิงค์
David Richerby
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.