📄 nc_beta.qbk
字号:
[section:nc_beta_dist Noncentral Beta Distribution]``#include <boost/math/distributions/non_central_beta.hpp>`` namespace boost{ namespace math{ template <class RealType = double, class ``__Policy`` = ``__policy_class`` > 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; // Constructor: non_central_beta_distribution(RealType alpha, RealType beta, RealType lambda); // Accessor to shape parameters: RealType alpha()const; RealType beta()const; // Accessor to non-centrality parameter lambda: RealType non_centrality()const; }; }} // namespaces The noncentral beta distribution is a generalization of the __beta_distrib.It is defined as the ratio X = [chi][sub m][super 2]([lambda]) \/ ([chi][sub m][super 2]([lambda]) + [chi][sub n][super 2])where [chi][sub m][super 2]([lambda]) is a noncentral [chi][super 2]random variable with /m/ degrees of freedom, and [chi][sub n][super 2]is a central [chi][super 2] random variable with /n/ degrees of freedom.This gives a PDF that can be expressed as a Poisson mixtureof beta distribution PDFs:[equation nc_beta_ref1]where P(i;[lambda]\/2) is the discrete Poisson probablity at /i/, with mean [lambda]\/2, and I[sub x][super ']([alpha], [beta]) is the derivative ofthe incomplete beta function. This leads to the usual form of the CDFas:[equation nc_beta_ref2]The following graph illustrates how the distribution changesfor different values of [lambda]:[graph nc_beta_pdf][h4 Member Functions] non_central_beta_distribution(RealType a, RealType b, RealType lambda); Constructs a noncentral beta distribution with shape parameters /a/ and /b/and non-centrality parameter /lambda/.Requires a > 0, b > 0 and lambda >= 0, otherwise calls __domain_error. RealType alpha()const; Returns the parameter /a/ from which this object was constructed. RealType beta()const; Returns the parameter /b/ from which this object was constructed. RealType non_centrality()const; Returns the parameter /lambda/ from which this object was constructed.[h4 Non-member Accessors]Most of the [link math_toolkit.dist.dist_ref.nmp usual non-member accessor functions]are supported: __cdf, __pdf, __quantile, __median, __mode, __hazard, __chf, __range and __support.However, the following are not currently implemented: __mean, __variance, __sd, __skewness, __kurtosis and __kurtosis_excess.The domain of the random variable is \[0, 1\].[h4 Accuracy]The following table shows the peak errors(in units of [@http://en.wikipedia.org/wiki/Machine_epsilon epsilon]) found on various platforms with various floating point types. No comparison to the [@http://www.r-project.org/ R-2.5.1 Math library],or to the FORTRAN implementations of AS226 or AS310 are given since these appearto only guarantee absolute error: this would causes our test harnessto assign an /"infinite"/ error to these libraries for some of ourtest values when measuring /relative error/.Unless otherwise specified any floating-point type that is narrowerthan the one shown will have __zero_error.[table Errors In CDF of the Noncentral Beta[[Significand Size] [Platform and Compiler] [[alpha], [beta],[lambda] < 200] [[alpha],[beta],[lambda] > 200]][[53] [Win32, Visual C++ 8] [Peak=620 Mean=22] [Peak=8670 Mean=1040]][[64] [RedHat Linux IA32, gcc-4.1.1] [Peak=825 Mean=50] [Peak=2.5x10[super 4] Mean=4000]][[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=825 Mean=30] [Peak=1.7x10[super 4] Mean=2500]][[113] [HPUX IA64, aCC A.06.06] [Peak=420 Mean=50] [Peak=9200 Mean=1200]]]Error rates for the PDF, the complement of the CDF and for the quantile functions are broadly similar.[h4 Tests]There are two sets of test data used to verify this implementation:firstly we can compare with a few sample values generated by the[@http://www.r-project.org/ R library].Secondly, we have tables of test data, computed with thisimplementation and using interval arithmetic - this data shouldbe accurate to at least 50 decimal digits - and is the used forour accuracy tests.[h4 Implementation]The CDF and its complement are evaluated as follows:First we determine which of the two values (the CDF or itscomplement) is likely to be the smaller, the crossover pointis taken to be the mean of the distribution: for this we use theapproximation due to: 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.[equation nc_beta_ref3]Then either the CDF or its complement is computed using therelations:[equation nc_beta_ref4]The summation is performed by starting at i = [lambda]/2, and then recursingin both directions, using the usual recurrence relations for the PoissonPDF and incomplete beta functions. This is the "Method 2" describedby:Denise Benton and K. Krishnamoorthy,"Computing discrete mixtures of continuousdistributions: noncentral chisquare, noncentral tand the distribution of the square of the samplemultiple correlation coefficient", Computational Statistics & Data Analysis 43 (2003) 249-267.Specific applications of the above formulae to the noncentralbeta distribution can be found in: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 BetaProbabilities", 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 BetaProbabilities", 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.Of these, the Posten reference provides the most complete overview, and includes the modification starting iteration at [lambda]/2.The main difference between this implementation and the above references is the direct computation of the complement when mostefficient to do so, and the accumulation of the sum to -1 ratherthan subtracting the result from 1 at the end: this can substantiallyreduce the number of iterations required when the result is near 1.The PDF is computed using the methodology of Benton and Krishnamoorthyand the relation:[equation nc_beta_ref1]Quantiles are computed using a specially modified version of[link math_toolkit.toolkit.internals1.roots2 bracket_and_solve_root],starting the search for the root at the mean of the distribution.(A Cornish-Fisher type expansion was also tried, but while this getsquite close to the root in many cases, when it is wrong it tends tointroduce quite pathological behaviour: more investigation in thisarea is probably warranted).[endsect][/section:nc_beta_dist][/ nc_beta.qbk Copyright 2008 John Maddock and Paul A. Bristow. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt).]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -