2011-06-07 11 views
9

मुझे आपकी सलाह चाहिए: क्या आप एक लाइब्रेरी की अनुशंसा कर सकते हैं जो आपको वास्तविक संख्याओं जैसे पीडीएफ (संभाव्यता घनत्व कार्य) को जोड़ने/घटाए/गुणा/विभाजित करने की अनुमति देता है?मैं वास्तविक संख्याओं जैसे संभाव्यता वितरण कैसे जोड़ूं और घटा सकता हूं?

दृश्यों के पीछे, परिणामस्वरूप काम करने के लिए इसे मोंटे कार्लो करना होगा, इसलिए शायद मैं कुछ तेज़ और कुशल पसंद करूंगा, जो सिस्टम में किसी भी जीपीयू का लाभ उठा सकता है।

अद्यतन:

यह सी # कोड की तरह मैं देख रहा हूँ है:

var a = new Normal(0.0, 1.0); // Creates a PDF with mean=0, std. dev=1.0. 
    var b = new Normal(0.0, 2.0); // Creates a PDF with mean=0, std. dev=2.0. 
    var x = a + b; // Creates a PDF which is the sum of a and b. 
       // i.e. perform a Monte Carlo by taking thousands of samples 
       // of a and b to construct the resultant PDF. 

अद्यतन:

क्या मैं के लिए देख रहा हूँ लागू करने के लिए एक विधि है सैम सैवेज द्वारा The Flaw of Averages में "संभाव्यता आकार" पर बीजगणित। वीडियो Monte Carlo Simulation in Matlab मुझे जो प्रभाव चाहता है उसे बताता है - एक पुस्तकालय इनपुट वितरण की श्रृंखला पर गणित करने के लिए।

अद्यतन:

निम्नलिखित के लिए सर्च कर रहे हैं उचित पुस्तकालयों पर जानकारी का उत्पादन करेगा:

  • "मोंटे कार्लो पुस्तकालय"
  • "मोंटे कार्लो सी ++"
  • "मोंटे कार्लो मैटलैब "
  • " मोंटे कार्लो .NET "
+2

क्या आपका मतलब है: यदि एक्स और वाई पीडीएफ पी और क्यू के साथ यादृच्छिक चर हैं, तो आप एक्स + वाई, एक्स-वाई, एक्स * वाई और एक्स/वाई के लिए पीडीएफ चाहते हैं? (यह वही नहीं है जो आप कहते हैं, लेकिन मुझे लगता है कि इसका मतलब है।) और पीडीएफ का क्या प्रतिनिधित्व आप बात कर रहे हैं? क्या वे कोड के रूप में प्रतिनिधित्व करते हैं? टेबल के रूप में? कुछ अन्य वर्णनकर्ता? – sigfpe

+0

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

+0

इससे पहले कि आप इस सवाल पूछें, आपको इसे सटीक रूप से निर्दिष्ट करने में सक्षम होना चाहिए। फिलहाल आप एक ठोस कल्पना नहीं दिखते हैं। –

उत्तर

2

@Risk Developer किट

कीवर्ड on this page इस्तेमाल किया जा सकता अन्य को खोजने के लिए है, तो कुछ उत्पादन, यानी पी = ए + बी प्राप्त करने के लिए इनपुट पर बीजगणित प्रदर्शन आप प्रायिकता घनत्व कार्यों का एक सेट के साथ शुरू करने के लिए अनुमति देता है प्रतिस्पर्धी प्रसाद, उदाहरण के लिए के लिए खोज का प्रयास करें:

  • "मोंटे कार्लो अनुकरण मॉडल सी ++"
  • "मोंटे कार्लो अनुकरण मॉडल .NET"
  • "जोखिम विश्लेषण टूलकिट"
  • "फिटिंग capabilties वितरण"।

सी ++ या .NET जैसी भाषा में इसे कोड करना मुश्किल नहीं है। सैम सैवेज द्वारा

  • पढ़ें "The Flaw Of Averages" समझने के लिए कि कैसे आप "संभावना आकारों में" पर बीजगणित का उपयोग कर सकते हैं: मोंटे कार्लो भाग शायद कोड का केवल लगभग 50 लाइनों है।
  • कुछ "नमूना आकार" उत्पन्न करने की कुछ विधि है, या तो कुछ नमूना डेटा से बूटस्ट्रैपिंग, या पूर्व-निर्धारित संभाव्यता घनत्व फ़ंक्शन से, या Math.NET probability library का उपयोग करके।
  • इनपुट संभावना आकार से 10000 नमूने लें।
  • 1000 आउटपुट प्राप्त करने के लिए नमूनों पर बीजगणित करें, यानी,,, /, *, आदि। आप एक संभावित पेड़ भी बना सकते हैं जो इनपुट पर संकेत देता है और, या आदि।
  • परिणामों को 100 अलग "बाल्टी" में डालकर इन 10000 आउटपुट को एक नए "संभावना आकार" में मिलाएं।
  • अब हमारे पास एक नया "संभाव्यता आकार" है, फिर हम इसे एक नए संभाव्यता पेड़ में इनपुट के रूप में उपयोग कर सकते हैं, या क्षेत्र प्राप्त करने के लिए एकीकरण कर सकते हैं, जो इसे कुछ थ्रेसहोल्ड दिए गए हार्ड संभाव्यता संख्या में परिवर्तित कर देता है।
  • वीडियो Monte Carlo Simulation in Matlab इस पूरी प्रक्रिया को मैं जितना कर सकता हूं उससे काफी बेहतर बताता हूं।
0

Math.NET न्यूमेरिक्स लाइब्रेरी पर एक नज़र डालें। Here संभावितता वितरण समर्थन के लिए विशिष्ट पृष्ठ है।

+0

यह लाइब्रेरी आपको संभाव्यता घनत्व कार्यों को बनाने की अनुमति देती है। हालांकि, जो मैं खोज रहा हूं वह इन संभाव्यता घनत्व कार्यों को जोड़ने और घटाने की क्षमता है, जो कि Math.NET का समर्थन नहीं करता है। – Contango

1

@ ग्रेविटास - @ user207442 के साथ उस एक्सचेंज के आधार पर, ऐसा लगता है कि आप केवल एक ऑब्जेक्ट चाहते हैं जो अतिरिक्त और घटाव के लिए एक रूपांतरण को दूर करता है। निश्चित रूप से दो यादृच्छिक चर के उत्पाद के लिए एक बंद फॉर्म समाधान है, लेकिन यह वितरण पर निर्भर हो सकता है।

सी # की गर्म नई सौतेली बहन, एफ #, चलो आप कुछ मजेदार एफपी तकनीकों करते हैं, और यह सी # के साथ सहजता से एकीकृत करता है। एक "यादृच्छिक परिवर्तनीय" प्रकार को सारणित करने का आपका लक्ष्य जिसे "सारांशित किया जा सकता है" (संकलित) या "गुणा" (??) ऐसा लगता है जैसे यह a monad के लिए चिल्लाना है। यहां एक simple example है।

संपादित करें: क्या आपको सी # में एमसीएमसी को फिर से शुरू करने की आवश्यकता है? हम अपने स्कूल में इसके लिए winbugs का उपयोग करते हैं ... यह C++ लाइब्रेरी winbugs का उपयोग करता है: http://darwin.eeb.uconn.edu/mcmc++/mcmc++.html। पहिया को फिर से शुरू करने के बजाय, क्या आप बस अपना कोड सी ++ के चारों ओर लपेट सकते हैं (फिर से, ऐसा लगता है जैसे मोनैड यहां आयेगा)?

+1

लेकिन वास्तविक कार्यान्वयन कैसा दिखता है? – svick

+0

जो मैं चाहता हूं वह ऐसा कुछ है जो न केवल अतिरिक्त या घटाव के लिए संकल्प को दूर करता है, लेकिन किसी भी मनमाना सूत्र के लिए जिसमें कुछ यादृच्छिक चर इनपुट होता है। यदि हम गैर-मानक वितरण, या गैर-मानक बीजगणित से निपट रहे हैं (जब आप इसे स्क्वायर करते हैं तो यादृच्छिक चर की संभावना वितरण क्या होता है?) तो मोंटे कार्लो एक सामान्य समाधान है जो केवल काम करता है (यद्यपि अधिक CPU की लागत पर एक गैर-मोंटे कार्लो समाधान)। – Contango

+0

@svick मैं एफ # में एक मोनड (आईएसएच?) उदाहरण बनाने की कोशिश करूंगा, अगर यह जानकारीपूर्ण होगा। – egbutter

संबंधित मुद्दे