![]() |
Home | Libraries | People | FAQ | More |
你可能很熟悉一個有自由函數的統計庫( free functions),例如經典的NAG C 庫 以及 匹配的(matching) NAG FORTRAN 庫 ,Microsoft Excel BINOMDIST(number_s,trials,probability_s,cumulative), R, MathCAD pbinom 以及更多其它的庫。
如果是這樣的話,那麼你可能覺得'將分佈作為對像(Distributions as Objects)' 並不是很熟悉。
然而,不要驚慌(panic), 它們的定義和使用沒有太大的不同。
下面是一個使用這個庫和NAG C 庫 針對二項分佈生成相同值的例子 (如果你發現了稍有不同的結果,使用double 或更精確類型的Boost C++版本的統計庫非常可能產生更精確的結果。當然,對於這個函數的大多數應用程序來說,精度通常不是一個關注點)。
NAG 函數原型(function specification) 是:
void nag_binomial_dist(Integer n, double p, Integer k, double *plek, double *pgtk, double *peqk, NagError *fail)
並且通過下面的方法調用:
g01bjc(n, p, k, &plek, &pgtk, &peqk, NAGERR_DEFAULT);
等價的使用Boost C++ 庫的調用是:
using namespace boost::math; // using 聲明(Using declaration)來避免很長的類名. binomial my_dist(4, 0.5); // c.f. NAG n = 4, p = 0.5
並且結果可以打印出來:
cout << my_dist.trials() << " " // 顯示 the NAG input n = 4 trials. << my_dist.success_fraction() << " " // 顯示 the NAG input p = 0.5 << cdf(my_dist, 2) << " " // NAG plek with k = 2 << cdf(complement(my_dist, 2)) << " " // NAG pgtk with k = 2 << pdf(my_dist, 2) << endl; // NAG peqk with k = 2
cdf(dist, k)等價於 NAG 庫函數 plek,
lower tail probability of <= k
cdf(complement(dist, k))
等價於 NAG 庫函數 pgtk,
upper tail probability of > k
pdf(dist, k)等價於 NAG 庫函數 peqk,
點概率(point probability) of == k
參考binomial_example_nag.cpp 瞭解更多信息。