2011-04-06 14 views
10

प्रलेखन बूस्ट से निर्णय सामान्य और गामा वितरण दोनों के लिए क्वांटाइल फ़ंक्शन (उलटा सीडीएफ फ़ंक्शन) प्रदान करता है, लेकिन यह मेरे लिए स्पष्ट नहीं है कि मैं वास्तव में उनका उपयोग कैसे कर सकता हूं। क्या कोई उदाहरण उदाहरण पेस्ट कर सकता है?बूस्ट (सी ++) में क्वांटाइल फ़ंक्शंस

+0

[इस पृष्ठ] (http://www.boost.org/doc/libs/1_46_1/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example/normal_misc.html) में सामान्य वितरण की मात्रा की गणना करने के लिए एक उदाहरण शामिल है। यह बहुत सरल लगता है। क्या यह आपके लिए काम करता है? –

उत्तर

8

मात्रा गणना को एक मुक्त फ़ंक्शन के रूप में लागू किया गया है।

#include <boost/math/distributions/normal.hpp> 

boost::math::normal dist(0.0, 1.0); 

// 95% of distribution is below q: 
double q = quantile(dist, 0.95); 

तुम भी पूरक (दाएं से quantile) प्राप्त कर सकते हैं का उपयोग कर: यहाँ एक उदाहरण है

// 95% of distribution is above qc: 
double qc = quantile(complement(dist, 0.05)); 

वहाँ कुछ इसी तरह के काम उदाहरण यहां हैं:

http://www.boost.org/doc/libs/1_46_1/libs/math/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg.html

संपादित करें: एडीएल

के लिए नि: शुल्क कार्यों पर नामस्थानों की आवश्यकता नहीं है
+0

कोई विचार क्यों 'सामान्य' और 'सामान्य_डिस्ट्रिब्यूशन' दोनों कक्षाएं हैं? यह मुझे उलझन में मिला है। – Grzenio

+0

मुझे लगता है कि 'सामान्य' केवल 'सामान्य_डिस्ट्रिब्यूशन ' का एक टाइपिफ़ है – Inverse

3

QuantCorner पर एक व्यावहारिक उदाहरण है।

// Édouard Tallent @ TaGoMa.Tech 
// September 2012 

#include<boost/math/distributions.hpp> 
#include<iostream> 
using std::cout; 
using std::endl; 

double inverseNormal(double prob, double mean, double sd){ 
     boost::math::normal_distribution<>myNormal (mean, sd); 
     return quantile(myNormal, prob); 
} 

int main (int, char*[]) 
{ 
     try 
     {     
       double myProb = 0.1; // the 10% quantile 
       double myMean = 0.07; // a 7% mean 
       double myVol = 0.14; // a 14% volatility 

     cout << inverseNormal(myProb, myMean, myVol) << endl; 
     } 

       catch(std::exception& e) 
     { 
       cout << "Error message: " << e.what() << endl; 
     } 
return 0; 
} 
संबंधित मुद्दे