3-डी इकाई क्षेत्र की सतह पर समान रूप से वितरित अंक कैसे उत्पन्न करें?


68

मैं सोच रहा हूं कि 3-डी यूनिट क्षेत्र की सतह पर समान रूप से वितरित अंक कैसे उत्पन्न करें? उन बिंदुओं को उत्पन्न करने के बाद, कल्पना करने और जांचने का सबसे अच्छा तरीका क्या है कि क्या वे वास्तव में सतह ?x2+y2+z2=1


यदि वर्दी से आपका मतलब "नियमित" है, तो = 2, 4, 6, 8, 12, 20 के बाहर ऐसा करने का कोई तरीका नहीं है ।n
मार्कोस

1
क्या एक MultiVariateGaussian से नमूना के साथ गलत है और यह वेक्टर सिर्फ इसे सामान्य करता है: v = MultivariateNormal(torch.zeros(10000), torch.eye(10000))और फिर v = v/v.norm(10000)
Pinocchio

जवाबों:


72

एक मानक विधि तीन मानक मानदंडों को उत्पन्न करना और उनसे एक इकाई वेक्टर का निर्माण करना है। अर्थात्, जब और , तब समान रूप से होता है गोले पर वितरित किया गया। इस विधि के लिए अच्छी तरह से काम भी आयामी क्षेत्रों।λ 2 = एक्स 2 1 + एक्स 2 2 + एक्स 2 3 ( एक्स 1 / λ , एक्स 2 / λ , एक्स 3 / λ ) XiN(0,1)λ2=X12+X22+X32(X1/λ,X2/λ,X3/λ)d

3D में आप अस्वीकृति के नमूने का उपयोग कर सकते हैं: को एक समान वितरण से तब तक जब तक की लंबाई 1 से कम या उसके बराबर न हो, तब तक - बस पूर्ववर्ती विधि से - इकाई की लंबाई के लिए वेक्टर को सामान्य करें। गोलाकार बिंदु पर परीक्षणों की अपेक्षित संख्या = 1.91 के बराबर होती है । उच्च आयामों में परीक्षणों की अपेक्षित संख्या इतनी बड़ी हो जाती है कि यह तेजी से अव्यावहारिक हो जाता है। [ - 1 , 1 ] ( X 1 , X 2 , X 3 ) 2 3 / ( 4 π / 3 )Xi[1,1](X1,X2,X3)23/(4π/3)

एकरूपता की जांच करने के कई तरीके हैं । एक साफ-सुथरा तरीका, हालांकि कुछ हद तक कम्प्यूटेशनल रूप से गहन है, रिप्ले के के फ़ंक्शन के साथ है । (3 डी इयूक्लिडियन) दूरी के भीतर अंक की अपेक्षित संख्या क्षेत्र पर किसी भी स्थान की दूरी के भीतर क्षेत्र के क्षेत्र के लिए आनुपातिक है , जो बराबर होती है । सभी इंटरपॉइंट दूरियों की गणना करके आप डेटा को इस आदर्श से तुलना कर सकते हैं।ρ π ρ 2ρρπρ2

सांख्यिकीय ग्राफिक्स के निर्माण के सामान्य सिद्धांत तुलना करने के लिए एक अच्छा तरीका बताते हैं कि विचरण-स्थिर-अवशिष्ट को प्लॉट करना है खिलाफ जहां है आपसी दूरी और सबसे छोटी । भूखंड शून्य के करीब होना चाहिए। (यह दृष्टिकोण अपरंपरागत है।)मैं = 1 , 2 , ... , n ( n - 1 ) / 2 = मीटर [ मैं ] मैं वें मैं = 2 ei(d[i]ei)i=1,2,,n(n1)/2=md[i]ithei=2i/m

यहाँ पहली विधि के साथ प्राप्त एक समान गोलाकार वितरण से 100 स्वतंत्र ड्रॉ की एक तस्वीर है:

100 समान गोलाकार अंक

यहाँ दूरियों की नैदानिक ​​साजिश है:

डायग्नोस्टिक प्लॉट

Y स्केल बताता है कि ये मान शून्य के करीब हैं।

यहाँ 100 ऐसे भूखंडों के संचय का सुझाव दिया गया है जो आकार विचलन वास्तव में गैर-एकरूपता के महत्वपूर्ण संकेतक हो सकते हैं:

संस्कारित मूल्य

(ये भूखंड ब्राउनियन पुलों की तरह एक बहुत ही भयानक लगते हैं ... यहाँ कुछ दिलचस्प सैद्धांतिक खोज हो सकती हैं।)

अंत में, यहाँ 100 समान यादृच्छिक बिंदुओं के एक सेट के लिए नैदानिक ​​कथानक है और अन्य 41 अंक समान रूप से ऊपरी गोलार्ध में वितरित किए गए हैं:

गैर-समान मूल्यों का अनुकरण किया

समान वितरण के सापेक्ष, यह औसत अंतर दूरी में एक गोलार्ध की सीमा तक महत्वपूर्ण कमी दर्शाता है। यह अपने आप में अर्थहीन है, लेकिन यहां उपयोगी जानकारी यह है कि कुछ एक गोलार्ध के पैमाने पर गैर-समान है। वास्तव में, यह भूखंड आसानी से पता लगा लेता है कि एक गोलार्ध में दूसरे की तुलना में एक अलग घनत्व है। (एक सरल ची-वर्ग परीक्षण और अधिक शक्ति के साथ ऐसा होता है, तो आप पहले से जो गोलार्द्ध का परीक्षण करने में पता था कि असीम कई संभावित लोगों में से।)


@ शुभकर्ता: बहुत अच्छा! आपके पोस्ट के लिए बहुत धन्यवाद! " समान रूप से गोले पर वितरित किया जाता है।" मुझे इसके प्रमाण के बारे में संदर्भ कहां मिल सकता है, या क्या यह सरल है? (X1/λ,X2/λ,X3/λ)
ली

23
@Qiang, यहाँ प्रमाण का सार है: जहाँ पहचान मैट्रिक्स को दर्शाता है । फिर किसी भी ऑर्थोगोनल मैट्रिक्स , । इसलिए के वितरण घूर्णन के तहत अपरिवर्तनीय है। चलो और कहा कि ध्यान दें किसी भी ओर्थोगोनल के लिए । चूँकि घूमने के लिए अपरिवर्तनीय है, इसलिए , और चूंकि लगभग निश्चित रूप से है, फिर इसे समान रूप से गोले पर वितरित किया जाना चाहिए। XN(0,In)Inn×nQQXN(0,In)XY=X/X2YQ=QX/QX2=QX/X2QXYY2=1
कार्डिनल

3
@ माइक नहीं, क्योंकि अक्षांश एक समान वितरण गोले पर एक समान वितरण नहीं देता है। (। क्षेत्र की सतह के अधिकांश भूमध्य रेखा डंडे से आप का एक समान वितरण की जरूरत है दूर के पास कम अक्षांश पर स्थित है के बजाय।)ϕcos(ϕ)
whuber

1
@ अहसान क्योंकि ऑर्थोगोनल मेट्रिसेस, क्षेत्र के परिवर्तनकारी परिवर्तनों का एक सकर्मक समूह बनाते हैं, इसलिए वितरण के क्षेत्र के उपसमूह पर समान है। : लेकिन यह संपूर्ण क्षेत्र है। X/||X||2
whuber

1
@ सीजर "वर्दी वितरण" (गोला पर)।
whuber

19

यहाँ कुछ सरल आर कोड है

n     <- 100000                  # large enough for meaningful tests
z     <- 2*runif(n) - 1          # uniform on [-1, 1]
theta <- 2*pi*runif(n) - pi      # uniform on [-pi, pi]
x     <- sin(theta)*sqrt(1-z^2)  # based on angle
y     <- cos(theta)*sqrt(1-z^2)     

निर्माण से यह देखना बहुत सरल है कि और इसलिए लेकिन अगर इसकी जांच करनी है तोx2+y2=1z2x2+y2+z2=1

mean(x^2+y^2+z^2)  # should be 1
var(x^2+y^2+z^2)   # should be 0

और यह जांचना आसान है कि प्रत्येक और समान रूप से ( जाहिर है) पर वितरित किए गए हैंxy[1,1]z

plot.ecdf(x)  # should be uniform on [-1, 1]
plot.ecdf(y)
plot.ecdf(z)

स्पष्ट रूप से, , और मान को समान रूप से त्रिज्या एक चक्र के चारों ओर वितरित किया जाता है और इसे उनके अनुपात के आर्कटेंट के वितरण को देखकर परीक्षण किया जा सकता है। लेकिन चूँकि का और के समान समान सीमान्त वितरण है , एक समान कथन किसी भी जोड़े के लिए सही है, और इसे भी परखा जा सकता है। zxy1z2zxy

plot.ecdf(atan2(x,y)) # should be uniform on [-pi, pi]
plot.ecdf(atan2(y,z))
plot.ecdf(atan2(z,x))

यदि अभी भी असंबद्ध है, तो अगले कदमों में कुछ मनमाने 3-डी रोटेशन को देखना होगा या किसी दिए गए ठोस कोण के भीतर कितने अंक गिरेंगे, लेकिन यह अधिक जटिल होने लगता है, और मुझे लगता है कि अनावश्यक है।


मैं सोच रहा हूँ कि क्या आपके अंक बनाने की विधि (x, y, z) अनिवार्य रूप से व्हीलर की विधि के समान है?
ली

3
नहीं, यह नहीं है: जब मैं दो का उपयोग करता हूं तो व्हीबर तीन यादृच्छिक संख्याओं का उपयोग करता है। मेरा एक विशेष मामला है " उपयुक्त घनत्व [आनुपातिक ] के साथ पर एक बिंदु उत्पन्न करें और फिर एक आयाम नीचे ले जाएं"। यहाँ आसानी से क्योंकि यह औपचारिक रूप से 2-क्षेत्र है[1,1](1z2)n/21n=2
हेनरी

3
या, अधिक आम तौर पर, किसी भी समान क्षेत्र के प्रक्षेपण (तुम्हारा एक बेलनाकार समान क्षेत्र एक का उपयोग करके) मानचित्र पर समान अंक उत्पन्न करते हैं, फिर वापस प्रोजेक्ट करते हैं। (+1)
whuber

@ शुभकर्ता: वास्तव में। ऑफटॉपिक, लेकिन मेरी दिलचस्पी किसी के लिए यहां दुनिया के मानचित्र अनुमानों का एक इंटरैक्टिव चयन है , जिनमें से कुछ समान क्षेत्र हैं
हेनरी

2
यह कंप्यूटर ग्राफिक्स, आर्किमिडीज 'हैट-बॉक्स प्रमेय: mathworld.wolfram.com/ArchimedesHat-BoxTheorem.html
एडवर्ड KMETT

10

यदि आप 3 डी क्षेत्र पर समान रूप से वितरित अंक (यानी, एक 3D गेंद की सतह) का नमूना करना चाहते हैं, तो एक साधारण अस्वीकृति का उपयोग करें, या मार्साग्लिया की विधि (एन। गणित। सांख्यिकी। 43) (1972), पीपी। 645 646)। कम आयामों के लिए, अस्वीकृति अनुपात काफी कम है।

यदि आप उच्च-आयामी क्षेत्रों और गेंदों से यादृच्छिक अंक उत्पन्न करना चाहते हैं, तो यह सिमुलेशन के उद्देश्य और पैमाने पर निर्भर करता है। यदि आप बड़े सिमुलेशन प्रदर्शन नहीं करना चाहते हैं, तो मुलर (कम्युनिटी एसीएम, 2 (1959, पीपी। 19–20) या इसके "बॉल" संस्करण का उपयोग करें (ऊपर हरमन और लैको का पेपर देखें)। अर्थात्:

एक n- क्षेत्र (सतह) पर समान रूप से वितरित एक नमूना प्राप्त करने के लिए 1) n- आयामी मानक सामान्य वितरण 2 से X उत्पन्न करें) X के प्रत्येक घटक को X के यूक्लिडियन मानदंड से विभाजित करें।

एक n- बॉल (आंतरिक) 1 पर समान रूप से वितरित एक नमूना प्राप्त करने के लिए (n + 2) से x उत्पन्न करें- आयामी मानक सामान्य वितरण 2) X के प्रत्येक घटक को X के यूक्लिडियन मानदंड से विभाजित करें और केवल पहले n घटक लें

यदि आप बड़े सिमुलेशन प्रदर्शन करना चाहते हैं, तो आपको अधिक विशिष्ट तरीकों की जांच करनी चाहिए। अनुरोध करने पर, मैं आपको सशर्त वितरण विधियों पर हरमन और लैको का पेपर भेज सकता हूं, जो इस चर्चा में वर्णित कुछ एल्गोरिदम के वर्गीकरण और सामान्यीकरण प्रदान करता है। संपर्क मेरी वेबसाइट (http://www.iam.fmph.uniba.sk/ospm/Lacko) पर उपलब्ध है

यदि आप जांचना चाहते हैं, कि क्या आप वास्तव में एक गेंद की सतह या इंटीरियर पर समान बिंदु हैं, तो मार्जिन को देखें (सभी को एक ही होना चाहिए, क्योंकि घूर्णी इनवेरियन के कारण, अनुमानित प्रोजेक्ट के नमूने का चुकता मान बीटा वितरित है)।


क्या एक MultiVariateGaussian से नमूना के साथ गलत है और यह वेक्टर सिर्फ इसे सामान्य करता है: v = MultivariateNormal(torch.zeros(10000), torch.eye(10000))और फिर v = v/v.norm(10000)
Pinocchio

8

मेरे पीएचडी के दौरान मुझे इसी तरह की समस्या (n-sphere) हुई और स्थानीय 'विशेषज्ञों' में से एक ने n-cube से अस्वीकृति के नमूने का सुझाव दिया! यह, निश्चित रूप से, ब्रह्मांड की उम्र ले लिया होगा क्योंकि मैं hunderds के क्रम में n देख रहा था।

मैंने जिस एल्गोरिथ्म का उपयोग किया है वह बहुत सरल है और इसमें प्रकाशित किया गया है:

WP पीटरसेन और ए। बर्नसकोनिक यूनिफ़ॉर्म नमूनाकरण एन-गोले: आइसोट्रोपिक विधि तकनीकी रिपोर्ट, TR-97-06, स्विस सेंटर फॉर साइंटिफिक कंप्यूटिंग

मेरी ग्रन्थसूची में भी यह पत्र है जिसे मैंने देखा था। आपको यह उपयोगी लग सकता है।

हरमन, आर। एंड लेको, वी। चरवाहों और चार्ट्स से एकसमान नमूने के लिए विघटनकारी एल्गोरिदम पर मल्टीवेरेट एनालिसिस जर्नल, 2010nn


क्या उन लिंक को पोस्ट करना संभव है, जहाँ मुझे इन संदर्भों का पूरा पाठ मिल सकता है? धन्यवाद।
क्विआंग ली

मेरे पास कागज नहीं है, लेकिन यह पृष्ठ एल्गोरिथ्म (और कई अन्य) mlahanas.de/Math/nsphere.htm
emakalic

3
जैसा कि मैं समझता हूं, (डी पीटरसन और बर्नसकोनिक के कागज से) एक डी-डायमेंशनल बॉल के लिए, यू (0,1) वेरिएंट (1 / d) पावर और अंतिम एंगल के रूप में एक वर्जन उठाकर त्रिज्या उत्पन्न कर सकता है। U (0,2 ) प्रकार। मध्यवर्ती कोणों को रूप में प्राप्त किया जा सकता है , जहां is । मेरे लिए यह सरल लगता है। मैं जो सोच रहा हूं वह यह है: अगर मैं अपनी वर्दी के लिए एक अर्ध यादृच्छिक अनुक्रम का उपयोग करता हूं, तो क्या मुझे गेंद में भी अच्छाई मिलेगी? πC.asin(uk)C1
πΓ(k2+0.5)Γ(k2+1)
मोहित

3

मुझे पहले भी यह समस्या हो चुकी है, और यहाँ एक विकल्प मुझे मिल गया है,

स्वयं वितरण के लिए, सूत्र मैंने पाया कि शालीनता से काम करता है ध्रुवीय निर्देशांक का उपयोग करना (मैं वास्तव में उस विकसित ध्रुवीय निर्देशांक की विविधता का उपयोग करता हूं), फिर कार्टेशियन निर्देशांक में परिवर्तित करें।

त्रिज्या निश्चित रूप से उस क्षेत्र की त्रिज्या है जिस पर आप साजिश कर रहे हैं। फिर आपके पास समतल तल पर कोण के लिए दूसरा मूल्य है, उसके बाद तीसरा मान जो उस तल से ऊपर या नीचे का कोण है।

एक सभ्य वितरण प्राप्त करने के लिए, मान लें कि यू एक समान रूप से वितरित यादृच्छिक संख्या है, आर त्रिज्या है, एक दूसरा ध्रुवीय समन्वय है, और बी तीसरा ध्रुवीय समन्वय है,

a = U * 360 b = U + U-1 तब x = r * sin (b) sin (a) z = r sin (b) cos (a) y = r sin (b) के माध्यम से कार्टेशियन में परिवर्तित करें।

मैंने हाल ही में निम्नलिखित पाया है जो बेहतर गणितीय रूप से बोल रहा है, a = 2 (pi) * U b = cos ^ -1 (2-1)

वास्तव में मेरे मूल सूत्र से बहुत अलग नहीं है, हालांकि मेरा डिग्री बनाम रेडियन है।

माना जाता है कि यह हालिया संस्करण हाइपरस्पर्स के लिए उपयोग किया जा सकता है, हालांकि इसे कैसे प्राप्त किया जाए, इस पर कोई उल्लेख नहीं किया गया था।

हालांकि मैं होमवर्ल्ड 2 के लिए नक्शे बनाने के बजाय सस्ते तरीके से एकरूपता की जांच करता हूं और फिर उन मानचित्रों को "खेल" देता हूं। वास्तव में, क्योंकि नक्शे लुआ स्क्रिप्ट के साथ बनाए गए हैं, आप अपने फॉर्मूले को नक्शे में सही तरीके से बना सकते हैं और इस तरह कभी भी गेम को छोड़े बिना कई नमूनों की जांच कर सकते हैं। शायद वैज्ञानिक नहीं, लेकिन परिणामों को देखने के लिए एक अच्छी विधि है।


2

यहाँ छद्मकोड है:

  1. vMultiVariateGaussian(μ,σI)
  2. v=vv

पाइरॉच में:

v = MultivariateNormal(torch.zeros(10000), torch.eye(10000))
v = v/v.norm(2)

मुझे यह अच्छी तरह से समझ में नहीं आता है, लेकिन मुझे बताया गया है कि:

v = torch.normal(torch.zeros(10000), torch.eye(10000))
v = v/v.norm(2)

यह भी सही है यानी प्रत्येक समन्वय के लिए एक सामान्य से नमूना लेना।


0

मेरा सबसे अच्छा अनुमान पहले 2 आयामी अंतरिक्ष में समान रूप से वितरित बिंदुओं के एक सेट को उत्पन्न करना होगा और फिर उन बिंदुओं को किसी प्रकार के प्रक्षेपण का उपयोग करके एक गोले की सतह पर प्रोजेक्ट करना होगा।

आप जिस तरह से आप उन्हें नक्शे के साथ अंक उत्पन्न करने के लिए आप मिश्रण और मैच करना होगा। 2 डी पॉइंट जेनरेशन के संदर्भ में, मुझे लगता है कि कम-विसंगति वाले दृश्यों को शुरू करने के लिए एक अच्छी जगह होगी (यानी एक स्क्रब किए गए सोबोल अनुक्रम) क्योंकि यह आमतौर पर ऐसे बिंदुओं का उत्पादन करता है जो "एक साथ नहीं टकराए"। मैं इस बारे में निश्चित नहीं हूं कि किस प्रकार की मैपिंग का उपयोग करना है, लेकिन वोल्फ्रैम ने गोनोमिक प्रोजेक्शन को पॉप अप किया है ... इसलिए शायद यह काम कर सके?

MATLAB में कम विसंगति के अनुक्रमों का एक अच्छा कार्यान्वयन है, जिसका उपयोग करके आप उपयोग q = sobolset(2)और हाथापाई उत्पन्न कर सकते हैं q = scramble(q)। MATLAB में विभिन्न प्रक्षेपण कार्यों के एक समूह के साथ एक मैपिंग टूलबॉक्स भी है जिसका उपयोग आप उस मामले में कर सकते हैं जब आप मैपिंग और ग्राफिक्स को खुद कोड नहीं करना चाहते थे।


1
क्या इनमें से कोई अनुमान अभी भी यादृच्छिकता की एकरूपता को संरक्षित कर सकता है? फिर, मैं कैसे जांच सकता हूं कि क्या इन बिंदुओं का अंतिम वितरण वास्तव में समान रूप से गोलाकार सतह पर वितरित किया गया है? धन्यवाद।
कियान्ग ली

क्षमा करें, मैं सिर्फ काल्पनिक रूप से बोल रहा था ... मुझे लगता है कि MATLAB पर मैपिंग फ़ंक्शन आपको यह जांचने की अनुमति देगा कि चूंकि उनके पास कुछ विज़ुअलाइज़ेशन हैं जो उनमें अंतर्निहित हैं। यदि नहीं, तो मुझे एक अच्छी वेबसाइट भी मिली जो 3 डी क्षेत्र में समान रूप से वितरित कोणों आदि जैसी चीजों का उपयोग करके समान रूप से वितरित अंक उत्पन्न करने के बारे में बात करती है। उनके पास वहां पर भी कुछ सी कोड हैं। एक नज़र
Berk U.

3
ग्नोमोनिक प्रक्षेपण पर समान यादृच्छिक अंक गोले पर समान नहीं होंगे, क्योंकि ग्नोमोनिक समान क्षेत्र नहीं है। प्रक्षेपण हेनरी द्वारा प्रस्तावित -> (देशांतर अक्षांश से में एक आयत को ), है बराबर-क्षेत्र। ( λ , पाप ( φ ) ) आर 2(λ,ϕ)(λ,sin(ϕ))R2
whuber
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.