ASA266
Estimating the Parameters of a Dirichlet PDF
ASA266
is a C++ library which
estimates the parameters of a Dirichlet probability density function.
ASA266 is Applied Statistics Algorithm 266. Source code for many
Applied Statistics Algorithms is available through
STATLIB.
The assumption is that a given process is governed by a Dirichlet
distribution with parameters ALPHA(I), I = 1 to N, positive quantities
which are required to sum to 1. Each observation of the process yields
a vector of N data values. After a number of observations of this sort,
it is desired to estimate the the underlying parameters ALPHA of
the Dirichlet distribution.
There are a considerable number of routines required to get DIRICH
to work. In some cases, there are several versions of the routines,
and they all were included, in order to provide a way to check
results. Most of the routines are themselves Applied Statistics
Algorithms, and their source code is available through
STATLIB.
Also included is a routine DIRICHLET_SAMPLE, with which experiments
can be carried out. Values for the parameters ALPHA can be chosen,
and data generated by DIRICHLET_SAMPLE. Then DIRICH can analyze this
data and attempt to determine the values of ALPHA.
Another routine, DIRICHLET_MIX_SAMPLE, allows you to sample a
probability distribution that is a weighted mixture of Dirichlet
distributions.
Languages:
ASA266 is available in
a C version and
a C++ version and
a FORTRAN90 version and
a MATLAB version.
Related Data and Programs:
ASA032,
a C++ library which
evaluates the incomplete Gamma integral.
ASA066,
a C++ library which
evaluates the percentage points of the normal distribution.
ASA091,
a C++ library which
evaluates the percentage points of the ChiSquared distribution.
ASA103,
a C++ library which
evaluates the digamma or psi function.
ASA111,
a C++ library which
evaluates the percentage points of the normal distribution.
ASA121,
a C++ library which
evaluates the trigamma function.
ASA147,
a C++ library which
evaluates the incomplete Gamma function.
ASA239,
a C++ library which
evaluates the percentage points of the ChiSquared distribution
and the incomplete Gamma function.
ASA241,
a C++ library which
evaluates the percentage points of the normal distribution.
ASA245,
a C++ library which
evaluates the logarithm of the Gamma function.
NORMAL,
a C++ library which
samples the normal distribution.
PROB,
a C++ library which
evaluates the PDF, CDF, mean and variance for a number of probability
density functions.
TEST_VALUES,
a C++ library which
contains sample values
for a number of distributions.
TOMS291,
a C++ library which
evaluates the logarithm of the Gamma function.
UNIFORM,
a C++ library which
samples the uniform distribution.
Reference:

AG Adams,
Algorithm 39:
Areas Under the Normal Curve,
Computer Journal,
Volume 12, Number 2, May 1969, pages 197198.

Joachim Ahrens, Ulrich Dieter,
Computer Methods for Sampling from Gamma, Beta, Poisson and
Binomial Distributions,
Computing,
Volume 12, Number 3, September 1974, pages 223246.

Joachim Ahrens, Ulrich Dieter,
Generating Gamma Variates by a Modified Rejection Technique,
Communications of the ACM,
Volume 25, Number 1, January 1982, pages 4754.

Jerry Banks, editor,
Handbook of Simulation,
Wiley, 1998,
ISBN: 0471134031,
LC: T57.62.H37.

JD Beasley, SG Springer,
Algorithm AS 111:
The Percentage Points of the Normal Distribution,
Applied Statistics,
Volume 26, Number 1, 1977, pages 118121.

Jose Bernardo,
Algorithm AS 103:
Psi ( Digamma ) Function,
Applied Statistics,
Volume 25, Number 3, 1976, pages 315317.

Donald Best, DE Roberts,
Algorithm AS 91:
The Percentage Points of the ChiSquared Distribution,
Applied Statistics,
Volume 24, Number 3, 1975, pages 385390.

G Bhattacharjee,
Algorithm AS 32:
The Incomplete Gamma Integral,
Applied Statistics,
Volume 19, Number 3, 1970, pages 285287.

William Cody, Kenneth Hillstrom,
Chebyshev Approximations for the Natural Logarithm of the
Gamma Function,
Mathematics of Computation,
Volume 21, Number 98, April 1967, pages 198203.

William Cody, Anthony Strecok, Henry Thacher,
Chebyshev Approximations for the Psi Function,
Mathematics of Computation,
Volume 27, Number 121, January 1973, pages 123127.

John Hart, Ward Cheney, Charles Lawson, Hans Maehly,
Charles Mesztenyi, John Rice, Henry Thacher,
Christoph Witzgall,
Computer Approximations,
Wiley, 1968,
LC: QA297.C64.

David Hill,
Algorithm AS 66:
The Normal Integral,
Applied Statistics,
Volume 22, Number 3, 1973, pages 424427.

Cornelius Lanczos,
A precision approximation of the gamma function,
SIAM Journal on Numerical Analysis, B,
Volume 1, 1964, pages 8696.

Chi Leung Lau,
Algorithm AS 147:
A Simple Series for the Incomplete Gamma Integral,
Applied Statistics,
Volume 29, Number 1, 1980, pages 113114.

Allan Mcleod,
Algorithm AS 245:
A Robust and Reliable Algorithm for the Logarithm
of the Gamma Function,
Applied Statistics,
Volume 38, Number 2, 1989, pages 397402.

A. Naryanan,
Algorithm AS 266:
Maximum Likelihood Estimation of the Parameters of the
Dirichlet Distribution,
Applied Statistics,
Volume 40, Number 2, 1991, pages 365374.

Malcolm Pike, David Hill,
Algorithm 291:
Logarithm of Gamma Function,
Communications of the ACM,
Volume 9, Number 9, September 1966, page 684.

BE Schneider,
Algorithm AS 121:
Trigamma Function,
Applied Statistics,
Volume 27, Number 1, 1978, pages 9799.

BL Shea,
Algorithm AS 239:
Chisquared and Incomplete Gamma Integral,
Applied Statistics,
Volume 37, Number 3, 1988, pages 466473.

Michael Wichura,
Algorithm AS 241:
The Percentage Points of the Normal Distribution,
Applied Statistics,
Volume 37, Number 3, 1988, pages 477484.
Source Code:
Examples and Tests:
List of Routines:

ALNGAM computes the logarithm of the gamma function.

ALNORM computes the cumulative density of the standard normal distribution.

ALOGAM computes the logarithm of the Gamma function.

DIGAMMA calculates DIGAMMA ( X ) = d ( LOG ( GAMMA ( X ) ) ) / dX

DIRICHLET_CHECK checks the parameters of the Dirichlet PDF.

DIRICHLET_VARIANCE returns the variances of the Dirichlet PDF.

EXPONENTIAL_01_SAMPLE samples the Exponential PDF with parameters 0, 1.

EXPONENTIAL_CDF_INV inverts the Exponential CDF.

GAMAIN computes the incomplete gamma ratio.

GAMMAD computes the Incomplete Gamma Integral

GAMMDS computes the incomplete Gamma integral.

LNGAMMA computes Log(Gamma(X)) using a Lanczos approximation.

NORMP computes the cumulative density of the standard normal distribution.

NPROB computes the cumulative density of the standard normal distribution.

PPCHI2 evaluates the percentage points of the Chisquared PDF.

PPND produces the normal deviate value corresponding to lower tail area = P.

PPND16 inverts the standard normal CDF.

R8_ABS returns the absolute value of an R8.

R8_EPSILON returns the R8 round off unit.

R8_GAMMA_LOG evaluates the logarithm of the gamma function.

R8_HUGE returns a "huge" R8.

R8_MIN returns the minimum of two R8's.

R8_UNIFORM returns a pseudorandom R8 scaled to [A,B].

R8COL_MEAN returns the column means of an R8COL.

R8COL_VARIANCE returns the variances of an R8COL.

R8POLY_VALUE evaluates a polynomial.

R8VEC_SUM returns the sum of an R8VEC.

TIMESTAMP prints the current YMDHMS date as a time stamp.

TRIGAMMA calculates trigamma(x) = d^2 log(gamma(x)) / dx^2
You can go up one level to
the C++ source codes.
Last revised on 05 June 2013.