कैसे से नमूना करने के लिए


19

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

()αसी-1Γ()1(1,)()
सी

क्या कोई जानता है कि इस घनत्व से आसानी से कैसे नमूना लिया जाए? शायद यह मानक है और सिर्फ कुछ ऐसा है जिसके बारे में मुझे नहीं पता है?

मैं एक बेवकूफ अस्वीकृति sampliing एल्गोरिथ्म के बारे में सोच सकते हैं कि कम या ज्यादा काम होगा (मोड लगता है की , नमूना एक बड़ा बॉक्स में वर्दी से और अस्वीकार करें अगर ), लेकिन (i) यह बिल्कुल भी कुशल नहीं है और (ii) एक कंप्यूटर के लिए बहुत बड़ा हो जाएगा, यहां तक ​​कि मामूली रूप से आसानी से हैंडल करने के लिए भी बड़े और । (ध्यान दें कि बड़े और लिए मोड लगभग ।)( एक , यू ) [ 0 , 10 एक * ] × [ 0 , ( एक * ) ] यू > ( एक ) ( एक * ) एक = *(,यू)[0,10*]×[0,(*)]यू>()(*)सीसी=सी

किसी भी सहायता के लिए अग्रिम रूप से धन्यवाद!


+1 अच्छा सवाल। मुझे यकीन नहीं है कि अगर कोई मानक दृष्टिकोण मौजूद है।
22 अक्टूबर को सनकूलू जूल

क्या आपने (विचारों के लिए) "स्पष्ट" स्थानों की जाँच की है, जैसे, जैसे, देवरोई का पाठ ?
कार्डिनल

हां, मैंने पहले ही Devroye के पाठ से कई विचारों की कोशिश की है। द ने मुझे उनमें से अधिकांश के साथ कहीं भी जाना मुश्किल बना दिया है, हालांकि ... अधिकांश दृष्टिकोणों को एकीकरण की आवश्यकता होती है (सीएफडी को खोजने के लिए), सरल कार्यों में अपघटन, या सरल कार्यों द्वारा बाध्य करना ।। , लेकिन फ़ंक्शन इन सभी को कठिन बनाता है। अगर किसी के पास इन सबप्रोब्लेम्स के दृष्टिकोणों की तलाश करने के बारे में विचार हैं - उदाहरण के लिए, तो यहां फ़ंक्शन एक" आवश्यक "तरीके से बदल जाता है जैसे कि आंकड़े में यहां (न केवल एक सामान्य स्थिर के रूप में) - यह बहुत उपयोगी हो सकता है मुझे! Γ ΓΓ()ΓΓ
एनएफ

वहाँ मामले में बहुत बड़ा अंतर है और सी डी 2 । क्या आपको इन दोनों मामलों को कवर करने की आवश्यकता है? cd<2cd2
whuber

1
यह सच है - धन्यवाद। हम जानते हैं कि यह मान सकते हैं सी2
एनएफ

जवाबों:


21

अस्वीकृति नमूना असाधारण रूप से अच्छा काम करेंगे जब और के लिए उचित है exp ( 2 )सीexp(5)सीexp(2)

गणित को थोड़ा सरल करने के लिए, , x = a लिखें , और ध्यान दें=सीएक्स=

(एक्स)αएक्सΓ(एक्स)एक्स

के लिए । स्थापना एक्स = यू 3 / 2 देता हैएक्स1एक्स=यू3/2

(यू)αयू3/2Γ(यू3/2)यू1/2यू

के लिए । जब कश्मीर exp ( 5 ) , इस वितरण अत्यंत सामान्य के करीब है (और के रूप में करीब ले आती है कश्मीर बड़ा हो जाता है)। विशेष रूप से, आप कर सकते हैंयू1exp(5)

  1. संख्यात्मक रूप से के मोड का पता लगाएं (उपयोग करना, उदाहरण के लिए, न्यूटन-राफसन)।(यू)

  2. इसके मोड के बारे में दूसरे क्रम में का विस्तार करें ।लॉग(यू)

यह एक लगभग अनुमानित सामान्य वितरण के मापदंडों को पैदावार देता है। उच्च सटीकता के लिए, यह अनुमानित नॉर्मल अत्यधिक पूंछों को छोड़कर पर हावी है । (जब के < एक्सप ( 5 ) , आपको वर्चस्व को आश्वस्त करने के लिए सामान्य पीडीएफ को थोड़ा बड़ा करने की आवश्यकता हो सकती है।)(यू)<exp(5)

किसी भी मूल्य के लिए यह प्रारंभिक कार्य किया है , और एक निरंतर M > 1 (जैसा कि नीचे वर्णित है) का अनुमान लगाया है , एक यादृच्छिक रूपांतर प्राप्त करना एक बात है:>1

  1. वर्चस्व वाले सामान्य वितरण जी ( यू ) से एक मान ड्रा करें ।यूजी(यू)

  2. अगर या एक नया वर्दी variate यदि एक्स से अधिक है ( यू ) / ( एम जी ( यू ) ) , चरण 1 के लिए वापसी।यू<1एक्स(यू)/(जी(यू))

  3. सेट एक्स=यू3/2

G और f के बीच विसंगतियों के कारण के मूल्यांकन की अपेक्षित संख्या केवल 1 से थोड़ी अधिक है (कुछ अतिरिक्त मूल्यांकन 1 से कम चर के अस्वीकार के कारण उत्पन्न होंगे , लेकिन तब भी जब k 2 के आवृत्ति के अनुसार कम हो। घटनाएँ छोटी हैं।)जी12

K = 5 के लिए f और g का प्लॉट

यह कथानक k = exp ( 5 ) के लिए u के कार्य के रूप में g और f के लघुगणक को दर्शाता है । क्योंकि रेखांकन इतने करीब हैं, हमें यह देखने के लिए कि क्या चल रहा है, उनके अनुपात का निरीक्षण करने की आवश्यकता है:=exp(5)

लॉग अनुपात का प्लॉट

यह लॉग अनुपात ; M = exp ( 0.004 ) का कारक यह सुनिश्चित करने के लिए शामिल किया गया था कि वितरण के मुख्य भाग में लघुगणक सकारात्मक है; यह है कि, आश्वस्त करने के लिए एम जी ( यू ) ( यू ) नगण्य संभावना के क्षेत्रों में संभवतः छोड़कर। करके एम पर्याप्त रूप से बड़े आप गारंटी ले सकते हैं कि एम जीलॉग(exp(0.004)जी(यू)/(यू))=exp(0.004)जी(यू)(यू)Mgसभी में हावी है लेकिन सबसे चरम पूंछ (जो व्यावहारिक रूप से वैसे भी सिमुलेशन में चुने जाने की कोई संभावना नहीं है)। हालांकि, जितना बड़ा एम होता है, उतने अधिक बार अस्वीकृति होगी। जैसा कि k बड़ा होता है, M को 1 के बहुत करीब चुना जा सकता है , जो व्यावहारिक रूप से कोई दंड नहीं देता है।fMkM1

एक समान दृष्टिकोण लिए भी काम करता है , लेकिन M के काफी बड़े मूल्यों की आवश्यकता हो सकती है, जब exp ( 2 ) < k < exp ( 5 ) , क्योंकि f ( u ) काफ़ी असममित होता है। उदाहरण के लिए, के साथ कश्मीर = exp ( 2 ) , एक यथोचित सही पाने के लिए जी हम निर्धारित करने की आवश्यकता एम = 1 :k>exp(2)Mexp(2)<k<exp(5)f(u)k=exp(2)gM=1

K = 2 के लिए प्लॉट

ऊपरी लाल वक्र का ग्राफ है, जबकि निचला नीला वक्र लॉग ( एफ ( यू ) ) का ग्राफ है । ऍक्स्प ( 1 ) जी के सापेक्ष एफ नमूने की अस्वीकृति नमूने के सभी परीक्षण ड्रॉ के 2/3 को खारिज कर दिया जाएगा, इस प्रयास को तीन बार: अभी भी बुरा नहीं है। सही पूंछ ( यू > 10 या एक्स > 10 3 / 2 ~ 30log(exp(1)g(u))log(f(u))fexp(1)gu>10x>103/230) अस्वीकृति के नमूने में अंडर-प्रतिनिधित्व किया जाएगा (क्योंकि अब वहाँ एफ पर हावी नहीं होता है), लेकिन उस पूंछ में एक्सपोजर ( - 20 ) से कम कुल 10 - 9 शामिल हैं।exp(1)gfexp(20)109

संक्षेप में, मोड की गणना करने के लिए प्रारंभिक प्रयास के बाद और मोड के चारों ओर की शक्ति श्रृंखला के द्विघात शब्द का मूल्यांकन करने के लिए - एक प्रयास जिसमें अधिकांश पर कुछ दसियों फ़ंक्शन मूल्यांकन की आवश्यकता होती है - आप अस्वीकृति नमूने का उपयोग कर सकते हैं 1 और 3 के बीच की अनुमानित लागत (या तो) प्रति संस्करण मूल्यांकन। लागत गुणक तेजी से 1 से k = c d 5 से आगे बढ़ता है।f(u)k=cd

यहां तक ​​कि जब से सिर्फ एक ड्रॉ की जरूरत होती है, तो यह विधि उचित है। यह अपने आप में आता है जब कश्मीर के समान मूल्य के लिए कई स्वतंत्र ड्रॉ की आवश्यकता होती है , तब के लिए प्रारंभिक गणना के ओवरहेड को कई ड्रॉ से अधिक परिशोधित किया जाता है।fk


परिशिष्ट

@ कार्डिनल ने कहा है कि, यथोचित, हाथ से लहराते हुए विश्लेषण के समर्थन के लिए। विशेष रूप से, क्यों परिवर्तन करना चाहिए मेकअप वितरण लगभग सामान्य?x=u3/2

बॉक्स-कॉक्स परिवर्तनों के सिद्धांत के प्रकाश में , प्रपत्र (निरंतर α के लिए , उम्मीद से बहुत अलग नहीं है) के कुछ बिजली परिवर्तन की तलाश करना स्वाभाविक है जो वितरण को "अधिक" सामान्य कर देगा। याद रखें कि सभी सामान्य वितरणों की विशेषता है: उनके pdfs के लघुगणक विशुद्ध रूप से द्विघात होते हैं, जिसमें शून्य रेखीय शब्द और कोई उच्च क्रम शब्द नहीं होते हैं। इसलिए हम किसी भी pdf को ले सकते हैं और इसकी लॉगरिथम को उसके (उच्चतम) शिखर के चारों ओर एक शक्ति श्रृंखला के रूप में विस्तारित करके एक सामान्य वितरण से तुलना कर सकते हैं । हम α का एक मूल्य चाहते हैं जो तीसरा (कम से कम) बनाता हैx=uαααशक्ति गायब हो जाती है, कम से कम लगभग: यही कारण है कि हम सबसे अधिक उम्मीद कर सकते हैं कि एक एकल मुक्त गुणांक पूरा करेगा। अक्सर यह अच्छी तरह से काम करता है।

लेकिन इस विशेष वितरण पर एक हैंडल कैसे प्राप्त करें? बिजली परिवर्तन को प्रभावित करने पर, इसका पीडीएफ है

f(u)=kuαΓ(uα)uα1.

इसका लघुगणक लें और स्टर्लिंग के के विषम विस्तार का उपयोग करें ( ar ) :log(Γ)

log(f(u))log(k)uα+(α1)log(u)αuαlog(u)+uαlog(2πuα)/2+cuα

(के छोटे मूल्यों के लिए , जो है नहीं निरंतर)। यह प्रदान किया गया कार्य α सकारात्मक है, जिसे हम मामला मानेंगे (अन्यथा हम विस्तार के शेष की उपेक्षा नहीं कर सकते)।cα

इसकी तीसरी व्युत्पत्ति की गणना करें (जो, जब विभाजित हो !, शक्ति श्रृंखला में यू की तीसरी शक्ति का गुणांक होगा ) और इस तथ्य का फायदा उठाएं कि चरम पर, पहला व्युत्पन्न शून्य होना चाहिए। यह तीसरे व्युत्पन्न को बहुत सरल करता है, दे रहा है (लगभग, क्योंकि हम सी के व्युत्पन्न की अनदेखी कर रहे हैं )3!uc

12u(3+α)α(2α(2α3)u2α+(α25α+6)uα+12cα).

जब बहुत छोटा नहीं है, तो u वास्तव में शिखर पर बड़ा होगा। क्योंकि α सकारात्मक है, इस अभिव्यक्ति में प्रमुख शब्द 2 α शक्ति है, जिसे हम इसके गुणांक को गायब करके शून्य पर सेट कर सकते हैं:kuα2α

2α3=0.

यही कारण है कि है काम करता है इतनी अच्छी तरह से: इस विकल्प के साथ, की तरह बर्ताव करता है शिखर के आसपास घन अवधि के गुणांक यू - 3 है, जो के करीब है exp ( - 2 कश्मीर ) । एक बार जब कश्मीर में 10 से अधिक है या ऐसा है तो आप व्यावहारिक रूप से इसके बारे में भूल सकता है, और यह भी के लिए यथोचित छोटे है कश्मीर 2. करने के लिए नीचे उच्च शक्तियों, चौथे पर से, एक भूमिका की और कम से कम खेलने के रूप में कश्मीर , बड़े हो जाता है क्योंकि उनके गुणांकों बढ़ने आनुपातिक रूप से छोटा, भी। संयोग से, एक ही गणना ( एल जी के दूसरे व्युत्पन्न पर आधारित) ( एफα=3/2यू-3exp(-2) अपने चरम पर) इस सामान्य सन्निकटन के मानक विचलन 2 से थोड़ा कम हैएलजी((यू)),एक्सपी(-के/) केलिए आनुपातिक त्रुटि के साथ।23exp(/6)exp(-/2)


(+1) शानदार जवाब। शायद आप परिवर्तनशील चर की अपनी पसंद के लिए प्रेरणा पर संक्षिप्त विस्तार कर सकते हैं।
कार्डिनल

इसके अलावा अच्छा है। यह एक बहुत, बहुत पूरा जवाब देता है!
कार्डिनल

11

मुझे @ व्हीबर का जवाब बहुत पसंद है; यह बहुत कुशल होने की संभावना है और इसका एक सुंदर विश्लेषण है। लेकिन इस विशेष वितरण के संबंध में कुछ गहरी अंतर्दृष्टि की आवश्यकता है। उन स्थितियों के लिए जहां आपके पास वह अंतर्दृष्टि नहीं है (इसलिए अलग-अलग वितरणों के लिए), मुझे निम्न दृष्टिकोण भी पसंद है जो सभी वितरणों के लिए काम करता है जहां पीडीएफ दो बार भिन्न होता है और दूसरी व्युत्पन्न में कई जड़ें होती हैं। इसे स्थापित करने के लिए काफी काम की आवश्यकता होती है, लेकिन फिर बाद में आपके पास एक इंजन होता है जो अधिकांश वितरणों के लिए काम करता है जिसे आप इसे फेंक सकते हैं।

असल में, विचार यह है कि पीडीएफ के लिए एक टुकड़े-टुकड़े रैखिक ऊपरी सीमा का उपयोग किया जाए, जिसे आप अस्वीकृति के नमूने के रूप में अनुकूलित करते हैं। एक ही समय में आप एक टुकड़ा रैखिक कम हैपीडीएफ के लिए बाध्य जो आपको पीडीएफ का मूल्यांकन करने से अक्सर रोकता है। ऊपरी और निचले सीमा को पीडीएफ ग्राफ में जीवा और स्पर्शरेखा द्वारा दिया गया है। अंतराल में प्रारंभिक विभाजन ऐसा है कि प्रत्येक अंतराल पर, पीडीएफ या तो सभी अवतल या सभी उत्तल है; जब भी आपको किसी बिंदु (x, y) को अस्वीकार करना होता है तो आप उस अंतराल को x में घटाते हैं। (आप एक्स पर एक अतिरिक्त उपखंड भी कर सकते हैं यदि आपको पीडीएफ की गणना करनी थी क्योंकि निचली सीमा वास्तव में खराब है।) इससे उपखंड विशेष रूप से अक्सर होते हैं जहां ऊपरी (और निचले) सीमाएं खराब होती हैं, इसलिए आपको वास्तव में अच्छा लगता है मुफ्त में अनिवार्य रूप से आपके पीडीएफ का सन्निकटन। विवरण सही होने के लिए थोड़ा मुश्किल है, लेकिन मैंने उनमें से अधिकांश को ब्लॉग पोस्ट की इस श्रृंखला में समझाने की कोशिश की है - विशेष रूप से आखिरी वाला

उन पोस्टों पर चर्चा नहीं होती है कि यदि डोमेन या मूल्यों में पीडीएफ अनबाउंड है तो क्या करें; मैं या तो एक परिवर्तन करने के कुछ स्पष्ट समाधान की सिफारिश करूंगा जो उन्हें परिमित बनाता है (जो स्वचालित रूप से कठिन होगा) या कटऑफ का उपयोग करना। मैं कुल अंकों के आधार पर कटऑफ चुनूंगा, जो आप उत्पन्न करने की अपेक्षा करते हैं, एन कहते हैं , और कटऑफ चुनें ताकि हटाए गए भाग में संभावना कम हो। (यह काफी आसान है अगर आपके पास सीडीएफ के लिए एक बंद फॉर्म है, अन्यथा यह मुश्किल भी हो सकता है।)1/(10एन)

यह विधि मेपल में उपयोगकर्ता-परिभाषित निरंतर वितरण के लिए डिफ़ॉल्ट विधि के रूप में लागू की गई है। (पूर्ण प्रकटीकरण - मैं Maplesoft के लिए काम करता हूं।)


मैंने एक उदाहरण चलाया, c = 2, d = 3 के लिए 10 ^ 4 अंक उत्पन्न करते हुए, मूल्यों के लिए प्रारंभिक सीमा के रूप में, [1, 100] निर्दिष्ट करते हुए:

ग्राफ

23 अस्वीकार (लाल रंग में), 51 अंक "परिवीक्षा पर" थे जो उस समय निचले बाउंड और वास्तविक पीडीएफ के बीच में थे, और 9949 अंक जो केवल रैखिक असमानताओं की जांच के बाद स्वीकार किए गए थे। कुल पीडीएफ का 74 मूल्यांकन है, या 135 अंक प्रति एक पीडीएफ मूल्यांकन है। अनुपात और बेहतर होना चाहिए क्योंकि आप अधिक अंक उत्पन्न करते हैं, क्योंकि सन्निकटन बेहतर और बेहतर होता है (और इसके विपरीत, यदि आप केवल कुछ बिंदुओं को उत्पन्न करते हैं, तो अनुपात और भी खराब होता है)।


और वैसे - यदि आपको पीडीएफ का मूल्यांकन केवल बहुत बार करने की आवश्यकता है क्योंकि आपके पास इसके लिए एक अच्छी निचली सीमा है, तो आप इसके लिए अधिक समय ले सकते हैं, इसलिए आप बस एक bignum पुस्तकालय का उपयोग कर सकते हैं (शायद MPFR?) और मूल्यांकन अतिप्रवाह के डर के बिना उस में गामा समारोह।
एरिक पी।

(+1) यह एक अच्छा तरीका है। इसे शेयर करने के लिए धन्यवाद।
whuber

1Γ(exp(सी))/Γ(एक्स)एक्सexp()Γ12
whuber

@ शुभंकर पुन: गामा: आह हां - मैं देख रहा हूं कि आपने इसे ऊपर भी सुझाया था। धन्यवाद!
एरिक पी।

3

आप इसे व्युत्क्रम पद्धति को संख्यात्मक रूप से निष्पादित करके कर सकते हैं, जो कहता है कि यदि आप उलटा सीडीएफ में एकरूप (0,1) यादृच्छिक चर प्लग करते हैं, तो आपको वितरण से एक ड्रॉ मिलता है। मैंने नीचे कुछ आर कोड शामिल किया है जो ऐसा करता है, और मैंने जो कुछ चेक किए हैं, वह अच्छी तरह से काम कर रहा है, लेकिन यह थोड़ा टेढ़ा है और मुझे यकीन है कि आप इसे अनुकूलित कर सकते हैं।

यदि आप R से परिचित नहीं हैं, तो lgamma () गामा फ़ंक्शन का लॉग है; एकीकृत () एक निश्चित 1-डी अभिन्न गणना करता है; uniroot () 1-डी बिसनेस का उपयोग करके फ़ंक्शन की एक जड़ की गणना करता है।

# density. using the log-gamma gives a more numerically stable return for 
# the subsequent numerical integration (will not work without this trick)
f = function(x,c,d) exp( x*log(c) + (x-1)*log(d) - lgamma(x) )

# brute force calculation of the CDF, calculating the normalizing constant numerically
F = function(x,c,d) 
{
   g = function(x) f(x,c,d)
   return( integrate(g,1,x)$val/integrate(g,1,Inf)$val )
}

# Using bisection to find where the CDF equals p, to give the inverse CDF. This works 
# since the density given in the problem corresponds to a continuous CDF. 
F_1 = function(p,c,d) 
{
   Q = function(x) F(x,c,d)-p
   return( uniroot(Q, c(1+1e-10, 1e4))$root )
}

# plug uniform(0,1)'s into the inverse CDF. Testing for c=3, d=4. 
G = function(x) F_1(x,3,4)
z = sapply(runif(1000),G)

# simulated mean
mean(z)
[1] 13.10915

# exact mean
g = function(x) f(x,3,4)
nc = integrate(g,1,Inf)$val
h = function(x) f(x,3,4)*x/nc
integrate(h,1,Inf)$val
[1] 13.00002 

# simulated second moment
mean(z^2)
[1] 183.0266

# exact second moment
g = function(x) f(x,3,4)
nc = integrate(g,1,Inf)$val
h = function(x) f(x,3,4)*(x^2)/nc
integrate(h,1,Inf)$val
[1] 181.0003

# estimated density from the sample
plot(density(z))

# true density 
s = seq(1,25,length=1000)
plot(s, f(s,3,4), type="l", lwd=3)

(1,10000)>100000सी,

सी


1
विधि सही है, लेकिन भयानक दर्दनाक है! एकल यादृच्छिक संस्करण के लिए आपको कितने फ़ंक्शन मूल्यांकन की आवश्यकता है? हजारों? दसियों हजारों की?
whuber

सी(सी)एक्सएक्स

1
लॉग(सी)-लॉग(Γ())

यही मैं अभिकलन के लिए करता हूं - यह अभी भी अतिप्रवाह से बचता नहीं है। आप एक कंप्यूटर पर लगभग 500 से अधिक की संख्या का घातांक नहीं कर सकते। वह मात्रा इससे बहुत बड़ी हो जाती है। मेरा मतलब है "बहुत अच्छा" यह ओपी के उल्लेख के नमूने की अस्वीकृति के साथ तुलना करता है।
मैक्रो

1
सी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.