วิธีการสร้างคะแนนการกระจายอย่างสม่ำเสมอในลูกบอลหน่วย 3 มิติ?


11

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


4
เทคนิคในคำถามก่อนหน้านี้สมัครโดยตรงเมื่อคุณสังเกตว่าจำนวนของจุดภายในระยะทางที่ต้นทางจะต้องเป็นสัดส่วนกับ 3 ดังนั้นหากคุณสร้างตัวแปรอิสระชุดในพร้อมกับจุดบนพื้นผิวของทรงกลม, ปรับโดยไม่หลอกลวง R 3 U [ 0 , 1 ] W W U 1 / 3rr3u[0,1]wwu1/3
whuber

@ โฮเบอร์: บางทีฉันอาจไม่ได้รับสาระสำคัญของเทคนิคก่อนหน้านี้ ให้ฉันลองสิ่งที่คุณอธิบาย นอกจากนี้วิธีใดในการตรวจสอบความเหมือนกันที่นี่อีกครั้ง
Qiang Li

2
ฟังก์ชั่น K ของ @Qiang Ripley และการทดสอบไคสแควร์ คุณสามารถตรวจสอบความสม่ำเสมอของการฉายรัศมีของจุดบนพื้นผิวทรงกลมความสม่ำเสมอของลูกบาศก์ของความยาวของคะแนนและความเป็นอิสระของทั้งสอง
whuber

สำหรับฉันมันไม่ชัดเจนว่า "การกระจายแบบสม่ำเสมอ" หมายความว่าอย่างไร ... และอาจเป็นความพยายามในการกำหนดว่าจะสร้างอัลกอริทึมการสร้างโดยอัตโนมัติ (=

@mbq ผมคิดว่าการกำหนดคำว่าเราจำเป็นต้องมีรูปแบบไฟล์ PDF ของ 2 fR,Θ,Φ(r,θ,ϕ)=r2
Qiang Li

คำตอบ:


14

วิธีที่ง่ายที่สุดคือการสุ่มตัวอย่างคะแนนในไฮเปอร์คิวบ์ที่เกี่ยวข้องและละทิ้งสิ่งที่ไม่ได้อยู่ในทรงกลม ใน 3D สิ่งนี้ไม่ควรเกิดขึ้นบ่อยครั้งประมาณ 50% ของเวลา (ปริมาตรของ hypercube คือ 1 ปริมาตรของทรงกลมคือ .)43πr3=0.523...


+1 นี่เป็นหนึ่งในเทคนิคที่แนะนำโดย comp.graphics.algorithms คำถามที่พบบ่อย"เครื่องแบบสุ่มจุดบนทรงกลม"
เดวิดแครี

1
เกิดอะไรขึ้นถ้าเราต้องการที่จะทำที่สำหรับ ? n>100
Ares

2
สิ่งนี้เรียกว่า "วิธีการปฏิเสธ" ในขณะที่ทำงานได้ดีในสามมิติโดยยี่สิบเจ็ดมิติมีเพียงหนึ่งในล้านล้านคะแนนเท่านั้นที่อยู่ใน 27 ลูกและไม่ใช่ในส่วนที่เหลือของ 27- คิวบ์ดังนั้นวิธีการปฏิเสธจึงไม่ได้มาตรฐานที่ดี ฉันพูดถึงเรื่องนี้เพราะฉันต้องการตัวอย่างที่สม่ำเสมอในลูกบอล 2,440 มิติ
Reb.Cabin

13

คุณสามารถทำสิ่งนี้ในพิกัดกลมซึ่งในกรณีนี้จะไม่มีการปฏิเสธ ก่อนอื่นคุณสร้างรัศมีและมุมทั้งสองโดยการสุ่มจากนั้นคุณใช้สูตรการเปลี่ยนแปลงเพื่อกู้คืน ,และ ( , , )y z x = r บาปθ cos ϕ y = r บาปθ บาปϕ z = r cos θxyzx=rsinθcosϕy=rsinθsinϕz=rcosθ

คุณสร้าง unifomly ระหว่างและ2รัศมีและความเอียงนั้นไม่เหมือนกัน น่าจะเป็นที่จุดอยู่ภายในลูกของรัศมีคือเพื่อฟังก์ชั่นความหนาแน่นของความน่าจะเป็นของคือ 2 คุณสามารถตรวจสอบได้อย่างง่ายดายว่าลูกบาศก์รากของตัวแปรเครื่องแบบมีตรงการกระจายเดียวกันดังนั้นนี้เป็นวิธีที่คุณสามารถสร้างRความน่าจะเป็นที่จุดหนึ่งอยู่ภายในทรงกลมรูปกรวยที่กำหนดโดยการเอียงคือหรือถ้าϕ02πrθrr3r3r2rθ(1cosθ)/21(1cos(θ))/2θ>π/2 2 ดังนั้นความหนาแน่นเป็น 2 คุณสามารถตรวจสอบว่าลบอาร์คโคซีนของตัวแปรเครื่องแบบมีความหนาแน่นที่เหมาะสมθsin(θ)/2

หรือมากกว่าเพียงแค่เราสามารถจำลองโคไซน์ของสม่ำเสมอ beteenและ1θ11

ใน R นี้จะมีลักษณะที่แสดงด้านล่าง

n <- 10000 # For example n = 10,000.
phi <- runif(n, max=2*pi)
r <- runif(n)^(1/3)
cos_theta <- runif(n, min=-1, max=1)
x <- r * sqrt(1-cos_theta^2) * cos(phi)
y <- r * sqrt(1-cos_theta^2) * sin(phi)
z <- r * cos_theta

ในระหว่างการเขียนและแก้ไขคำตอบนี้ฉันรู้ว่าวิธีแก้ปัญหานั้นเล็กน้อยกว่าที่ฉันคิด

ผมคิดว่าวิธีการที่ง่ายที่สุดและคอมพิวเตอร์ที่มีประสิทธิภาพที่สุดคือการปฏิบัติตาม @ วิธี whuber ในการสร้างในหน่วยทรงกลมตามที่ปรากฏในโพสต์นี้และปรับให้พวกเขาด้วยR(x,y,z)r

xyz <- matrix(rnorm(3*n), ncol=3)
lambda <- runif(n)^(1/3) / sqrt(rowSums(xyz^2))
xyz <- xyz*lambda

3
นี่เป็นคำตอบที่ดีกว่าเนื่องจากขาดการปฏิเสธ ในพื้นที่ที่มีมิติสูงการสุ่มตัวอย่างการปฏิเสธอาจมีค่าใช้จ่ายสูงเนื่องจากความน่าจะเป็นที่ได้รับการยอมรับต่ำ
kingledion

2
บิตสุดท้ายของรหัสสามารถปรับให้เข้ากับมิติที่สูงขึ้นdได้ สำหรับเรื่องนี้แทนที่ทุกกรณีโดย3 d
gui11aume

0

ในความคิดของฉันตัวเลือกที่ง่ายที่สุดซึ่งรวมถึงลูกบอลมิติที่สูงขึ้น (ซึ่งไม่ใช่กรณีของพิกัดทรงกลมและแม้แต่น้อยกรณีการปฏิเสธการสุ่มตัวอย่าง) คือการสร้างจุดสุ่มซึ่งเป็นผลิตภัณฑ์ของตัวแปรสุ่มสองตัว โดยที่เป็นตัวแปรสุ่มแบบเกาส์ (เช่น isotropic, ชี้ไปในทิศทางใด ๆ อย่างสม่ำเสมอ) ปรับให้เป็นมาตรฐานเพื่อให้มันอยู่บนทรงกลมและซึ่งเป็นตัวแปรสุ่มแบบสุ่มในถึง พลังงาน ,เป็นมิติของข้อมูลการดูแลของรัศมีP = N / | | N | | U 1 / n N U [ 0 , 1 ] 1 / n nPP=N/||N||U1/nNU[0,1]1/nn

และอื่น ๆ !


2
รัศมีที่กระจายอย่างสม่ำเสมอจะไม่ให้จุดที่เหมือนกันในลูกบอล ...
kjetil b halvorsen

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