एक सिंप्लेक्स से वर्दी का नमूना


29

मैं एन यादृच्छिक संख्याओं की एक सरणी उत्पन्न करने के लिए एक एल्गोरिथ्म की तलाश कर रहा हूं, जैसे कि एन संख्याओं का योग 1 है, और सभी संख्याएं 0 और 1 के भीतर हैं। उदाहरण के लिए, एन = 3, यादृच्छिक बिंदु (एक्स, वाई) z) त्रिकोण के भीतर झूठ होना चाहिए:

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

आदर्श रूप से मैं चाहता हूं कि क्षेत्र के भीतर प्रत्येक बिंदु पर समान संभावना हो। यदि यह बहुत कठिन है, तो मैं आवश्यकता को छोड़ सकता हूं। धन्यवाद।


लक्ष्य वितरण क्या है? आपने क्या प्रयास किया है?
राफेल

3
ध्यान दें कि हमेशा अस्वीकृति नमूनाकरण होता है : नमूना समरूप संख्या और अस्वीकार करें यदि संख्या तक नहीं जोड़ते हैं । यहां, पुनरावृत्तियों की अपेक्षित संख्या असुविधाजनक रूप से अधिक है, इसलिए आपको कुछ और करना चाहिए। n1
राफेल

जवाबों:


28

आइए हम पहले यह मान लें कि आप किस चीज का नमूना लेना चाहते हैं

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

यह काफी अंतर नहीं करता है, क्योंकि नमूना बिंदु अभी भी उच्च संभावना के साथ आपके अनुरोधित क्षेत्र में झूठ होगा।

अब आप एक सिंप्लेक्स से एक बिंदु का नमूना लेने से बचे हैं । 3 डी उदाहरण में आपको 3 डी में एक 2d सिम्प्लेक्स (त्रिकोण) का एहसास होता है।

इस ब्लॉग पोस्ट में यादृच्छिक रूप से एक बिंदु को समान रूप से कैसे चुना जाए (टिप्पणियों को देखें)।

आपकी समस्या के लिए इसका मतलब होगा कि आप अंतराल ( 0 , 1 ) से यादृच्छिक संख्या लेते हैं , फिर आप n + 1 संख्याओं की सूची प्राप्त करने के लिए एक 0 और 1 जोड़ते हैं । आप सूची को सॉर्ट करते हैं और फिर आप लगातार दो तत्वों के बीच अंतर रिकॉर्ड करते हैं। यह आपको n संख्या की एक सूची देता है जो 1 तक की राशि देगा । इसके अलावा यह नमूना एक समान है। यह विचार डोनाल्ड बी। रुबिन, द बायेसियन बूटस्ट्रैप एन में पाया जा सकता है । सांख्यिकीविद। 9, 1981, 130-134।n1(0,1)01n+1n1

उदाहरण के लिए ( ) आपके पास तीन यादृच्छिक संख्याएँ हैं फिर आप क्रमबद्ध अनुक्रम प्राप्त करते हैं और यह अंतर देता है , और निर्माण द्वारा इन चार संख्याओं का योग 1 तक होता है।n=40.4 0.2 0.10 0.1 0.2 0.4 10.1 0.1 0.2 0.6

एक अन्य दृष्टिकोण निम्नलिखित है: हाइपरक्यूब से पहला नमूना (कि आप के बारे में भूल जाते हैं x+y+z=1) और फिर नमूना बिंदु को सामान्य करें। सामान्यीकरण, हाइपरक्यूब से d - 1 -simplex का प्रक्षेपण है। यह सहज रूप से स्पष्ट होना चाहिए कि सिंप्लेक्स के केंद्र के बिंदुओं में बाहर की तुलना में अधिक "पूर्व-छवि-बिंदु" हैंdd1। इसलिए, यदि आप हाइपरक्यूब से समान रूप से नमूना लेते हैं, तो यह आपको सिम्पलेक्स में एक समान नमूना नहीं देगा। हालांकि, यदि आप हाइपरक्यूब से एक उचित घातांक वितरण के साथ नमूना लेते हैं, तो इस प्रभाव से रद्द हो जाता है। चित्रा आपको एक विचार देता है कि दोनों तरीके कैसे नमूना लेंगे। हालांकि, मैं इसके सरल रूप के कारण "छंटाई" विधि पसंद करता हूं। इसे लागू करना भी आसान है।

2 नमूने के तरीकों का उदाहरण


n(0,1)

मैंने आपके प्रश्न को विस्तारित उत्तर में संबोधित किया।
अचुल

1
क्या एक सरल प्रमाण है जो छँटाई दिखाता है एक समान वितरण देता है? मेरे पास संभावना में केवल प्राथमिक पृष्ठभूमि है इसलिए कागज मेरे सिर पर है।
चाओ जू

5
n(0,1)nn1(0,1)

1
@Orient: कृपया आपसे एक अलग पोस्ट में प्रश्न पूछें और इसके लिए टिप्पणियों का दुरुपयोग न करें।
शूलज

8

यह मौजूदा उत्तरों को जोड़ना है।

इस प्रकार के प्रश्नों के लिए देवराय एक उत्कृष्ट संदर्भ है। Chap.7 एल्गोरिदम को एक समान ऑर्डर आँकड़े उत्पन्न करने के लिए आवश्यक देता है, जो कि ओपी के बाद है।

n[0,1]O(nlogn)nx1,,xnExp(1)

(yi)1in=1ixj1nxj
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
यह स्पष्टीकरण के बिना कोड में ए। शुल्ज़ का जवाब है, है ना?
राफेल

1

इस पत्र को देखें : स्मिथ, एन। और ट्रॉम्बल, आर।, यूनिट सिम्प्लेक्स से समान रूप से नमूना लेना


2
कृपया अपने उत्तर को एक पठनीय तरीके से प्रारूपित करें: आप मनुष्य के लिए लिख रहे हैं, न कि बाइबेट संकलक। इसके अलावा, यदि पेपर ऑनलाइन उपलब्ध है, तो आपके लिए लिंक प्रदान करना अधिक कुशल है।
डेविड रिचेर्बी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.