डिरिचलेट वितरण से ड्राइंग


25

मान लीजिए कि हमारे पास -dimensional वेक्टर पैरामीटर । मैं इस वितरण से एक नमूना (एक आयामी वेक्टर) कैसे आकर्षित कर सकता हूं ? मुझे (संभवतः) सरल स्पष्टीकरण की आवश्यकता है।अल्फा = [ अल्फा 1 , अल्फा 2 , , α K ] केKα=[α1,α2,...,αK]K

जवाबों:


25

सबसे पहले, स्वतंत्र यादृच्छिक नमूने गामा वितरण से प्रत्येक को घनत्व के साथवाई 1 , , वाई केKy1,,yK

Gamma(αi,1)=yiαi1eyiΓ(αi),

और फिर सेट करें

xi=yij=1Kyj.

अब, एक वितरण का अनुसरण करेगाx1,...,xK

Dirichlet वितरण पर विकिपीडिया पृष्ठ आपको बताता है कि वास्तव में कैसे Dirichlet वितरण से सैंपल लेने के लिए।

इसके अलावा, Rलाइब्रेरी MCMCpackमें डिरिक्लेट डिस्ट्रीब्यूशन से रैंडम वेरिएबल को सैंपल देने का एक फंक्शन है।


2
Dirichlet से यादृच्छिक पीढ़ी के लिए समारोह के कार्यान्वयन में भी निधि हो सकता है cran.r-project.org/web/packages/extraDistr
टिम

2

एक सरल विधि (जबकि सटीक नहीं) में इस तथ्य का उपयोग करना शामिल है कि एक डिरिचलेट वितरण ड्राइंग पोल्या के कलश के प्रयोग के बराबर है। (रंगीन गेंदों के एक सेट से आकर्षित और हर बार जब आप एक गेंद खींचते हैं, तो आप इसे वापस उसी रंग की दूसरी गेंद के साथ कलश में डालते हैं)

अपने पैरामीटर पर एक असामान्य वितरण के रूप में विचार करें ।αi

फिर :

एन बार दोहराएं

-> मैं का उपयोग करके एक ड्रा करता हूंαi

-> 1 को जोड़ेंαi

अंत दोहराना

α

अगर मैं गलत नहीं हूं, तो यह तरीका पूरी तरह से सटीक है। लेकिन चूँकि N परिमित है, तो आप बहुत कम पूर्व संभाव्यता वाले कुछ वितरणों को आकर्षित करेंगे (जबकि आपको उन्हें बहुत कम आवृत्ति के साथ आकर्षित करना चाहिए)। मुझे लगता है कि यह ज्यादातर मामलों में N = K.10 के साथ संतोषजनक हो सकता है।


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