Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext
非中心β分佈(Noncentral Beta Distribution)

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

namespace boost{ namespace math{ 

template <class RealType = double, 
          class Policy   = policies::policy<> >
class non_central_beta_distribution;

typedef non_central_beta_distribution<> non_central_beta;

template <class RealType, class Policy>
class non_central_beta_distribution
{
public:
   typedef RealType  value_type;
   typedef Policy    policy_type;

   // 構造函數:
   non_central_beta_distribution(RealType alpha, RealType beta, RealType lambda);

   // 形狀參數訪問函數(Accessor to shape parameters):
   RealType alpha()const;
   RealType beta()const;

   // 非中心參數lambda訪問函數(Accessor to non-centrality parameter lambda):
   RealType non_centrality()const;
};

}} // namespaces

非中心β分佈( noncentral beta distribution)是β分佈(Beta Distribution)的一般化。

比( ratio) X = χm2(λ) / (χm2(λ) + χn2) 其中χm2(λ) 是一個自由度(degree of freedom)為 m 的非中心(noncentral) χ2 隨機變量,且χn2 是一個自由度(degree of freedom)為 n 的非中心(noncentral) χ2 隨機變量。

下面給出了函數PDF(概率分佈函數),可以表示為β分佈(beta distribution)的PDF函數的泊松混合(Poisson mixture)T:

其中 P(i;λ/2) 在i處的離散泊松概率(discrete Poisson probablity),均值(mean)為λ/2,且 Ix'(α, β)是不完全β函數的導數。 這就產生了函數CDF的一般形式:

下面的圖像顯示了對於不同的 λ 值,非中心β分佈是如何改變的:

成員函數
non_central_beta_distribution(RealType a, RealType b, RealType lambda);

使用形狀參數(shape parameter)ab 以及非中心(non-centrality)參數 lambda 來構造一個非中心β分佈(noncentral beta distribution)。

要求: a > 0, b > 0 且 lambda >= 0,否則調用定義域錯誤

RealType alpha()const;

返回構造非中心β分佈(noncentral beta distribution)的參數a

RealType beta()const;

返回構造非中心β分佈(noncentral beta distribution)的參數b

RealType non_centrality()const;

返回構造非中心β分佈(noncentral beta distribution)的參數lambda

非成員訪問函數(Non-member Accessors)

支持所有的分佈都通用的 常見的非成員訪問函數累積分佈函數(Cumulative Distribution Function)概率密度函數(Probability Density Function)分位點(Quantile)故障率函數(Hazard Function)累積危險函數(Cumulative Hazard Function)均值(mean)中位數(median)眾數(mode)方差(variance)標準差(standard deviation)偏斜(skewness)峰態(kurtosis)峰態超越(kurtosis_excess)值域(range) 以及 支持(support)

然而,當前並沒有實現下面的函數:均值(mean)方差(variance)標準差(standard deviation)偏斜(skewness)峰態(kurtosis) 以及 峰態超越(kurtosis_excess)

隨機變量的定義域為: [0, 1]。

精確度

下面的表中顯示了在不同的平台上使用不同的浮點類型所產生的峰值誤差(peak errors) (以10的-5次方(epsilon)為單位)。沒有給出與R-2.5.1 Math library庫的比較,也沒有給出用FORTRAN實現的 AS226 或 AS310 的比較,因為這些庫顯示出只保證絕對誤差( absolute error): 這將會導致當測試相對誤差(relative error )時,對於一些測試數據,我們的測試工具將會把一個「無限」的誤差賦值給這個庫。除非另外指定了比這裡顯示的浮點類型更窄的浮點類型,否則計算結果具有有效零誤差(effectively zero error)

表3.非中心β分佈( Noncentral Beta)的CDF函數的誤差

有效數字位數

平台和編譯器

α, β,λ < 200

α,β,λ > 200

53

Win32, Visual C++ 8

峰值=620 均值=22

峰值=8670 均值=1040

64

RedHat Linux IA32, gcc-4.1.1

峰值=825 均值=50

峰值=2.5x104 均值=4000

64

Redhat Linux IA64, gcc-3.4.4

峰值=825 均值=30

峰值=1.7x104 均值=2500

113

HPUX IA64, aCC A.06.06

峰值=420 均值=50

峰值=9200 均值=1200


函數PDF的誤差率,CDF函數補集的誤差率以及分位點函數的誤差率大體上是相同的。

測試

有兩種類型的測試數據來驗證這個庫的實現:首先我們可以與R library庫生成的一些樣本值進行比較。然後,我們有多個表的測試數據,使用這個庫計算以及使用區間算術計算-這些數據應當精確到至少50個十進制數字-並且用於我們的精度測試。

實現

函數CDF及其補集(complement)通過下面的方式計算:

首先我們判定這兩個值(CDF及其補集)中哪一個更小一些,交叉點作為分佈的均值(mean):對於這一點,我們使用由:R. Chattamvelli and R. Shanmugam, "Algorithm AS 310: Computing the Non-Central Beta Distribution Function", Applied Statistics, Vol. 46, No. 1. (1997), pp. 146-156 發明的逼近算法。

然後,CDF或其補集(complement)使用下面的關係計算:

從 i = λ/2點處開始求和,然後在兩個方向上進行遞歸,使用泊松(Poisson)PDF函數和不完全β函數的一般遞歸關係。這個算法是由:

Denise Benton and K. Krishnamoorthy, "Computing discrete mixtures of continuous distributions: noncentral chisquare, noncentral t and the distribution of the square of the sample multiple correlation coefficient", Computational Statistics & Data Analysis 43 (2003) 249-267.

所介紹的「第二種」算法。

上面的非中心β分佈(noncentral beta distribution)方程的特定應用可以在:

Russell V. Lenth, "Algorithm AS 226: Computing Noncentral Beta Probabilities", Applied Statistics, Vol. 36, No. 2. (1987), pp. 241-244.

H. Frick, "Algorithm AS R84: A Remark on Algorithm AS 226: Computing Non-Central Beta Probabilities", Applied Statistics, Vol. 39, No. 2. (1990), pp. 311-312.

Ming Long Lam, "Remark AS R95: A Remark on Algorithm AS 226: Computing Non-Central Beta Probabilities", Applied Statistics, Vol. 44, No. 4. (1995), pp. 551-552.

Harry O. Posten, "An Effective Algorithm for the Noncentral Beta Distribution Function", The American Statistician, Vol. 47, No. 2. (May, 1993), pp. 129-131.

R. Chattamvelli, "A Note on the Noncentral Beta Distribution Function", The American Statistician, Vol. 49, No. 2. (May, 1995), pp. 231-234.

中找到。在這些應用之中,Posten 引用(reference)提供了最完整的概覽,並且包含了在點λ/2處開始迭代的修正。

這個庫的實現與上面的參考資料中的實現的主要區別是直接計算補集(complement),最高效地計算補集(complement),以及將和累加到-1而不是在最後用1減去結果:當結果接近於1時,這可以從本質上減少要求的迭代次數。

PDF函數的計算使用 Benton 和 Krishnamoorthy 發明的方法以及下面的關係式:

分位點(Quantiles)使用一個特別修正版本的bracket_and_solve_root,在分佈的均值(mean)處開始查找根(root),(同樣也嘗試了Cornish-Fisher類型的展開,因為這種方法在大多數情況下已經非常接近於根,當發生錯誤的時候,這種方法趨向於產生很病態(pathological)的行為:在這個領域的更多研究可能是保證的(warranted))。


PrevUpHomeNext