ASA266 Estimating the Parameters of a Dirichlet PDF

ASA266 is a FORTRAN90 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 FORTRAN77 version and a FORTRAN90 version and a MATLAB version.

Related Data and Programs:

ASA032, a FORTRAN90 library which evaluates the incomplete Gamma integral.

ASA066, a FORTRAN90 library which evaluates the percentage points of the normal distribution.

ASA091, a FORTRAN90 library which evaluates the percentage points of the Chi-Squared distribution.

ASA103, a FORTRAN90 library which evaluates the digamma or psi function.

ASA111, a FORTRAN90 library which evaluates the percentage points of the normal distribution.

ASA121, a FORTRAN90 library which evaluates the trigamma function.

ASA147, a FORTRAN90 library which evaluates the incomplete Gamma function.

ASA239, a FORTRAN90 library which evaluates the percentage points of the Chi-Squared distribution and the incomplete Gamma function.

ASA241, a FORTRAN90 library which evaluates the percentage points of the normal distribution.

ASA245, a FORTRAN90 library which evaluates the logarithm of the Gamma function.

DCDFLIB, a FORTRAN90 library which evaluates and inverts a number of statistical distributions.

GSL, a C++ library which includes many routines for evaluating probability distributions.

NORMAL, a FORTRAN90 library which samples the normal distribution.

PROB, a FORTRAN90 library which evaluates the PDF, CDF, mean and variance for a number of probability density functions.

TEST_VALUES, a FORTRAN90 library which contains sample values for a number of distributions.

TOMS291, a FORTRAN90 library which evaluates the logarithm of the Gamma function.

UNIFORM, a FORTRAN90 library which samples the uniform distribution.

Reference:

Algorithm 39: Areas Under the Normal Curve,
Computer Journal,
Volume 12, Number 2, May 1969, pages 197-198.
2. Joachim Ahrens, Ulrich Dieter,
Computer Methods for Sampling from Gamma, Beta, Poisson and Binomial Distributions,
Computing,
Volume 12, Number 3, September 1974, pages 223-246.
3. Joachim Ahrens, Ulrich Dieter,
Generating Gamma Variates by a Modified Rejection Technique,
Communications of the ACM,
Volume 25, Number 1, January 1982, pages 47-54.
4. Jerry Banks, editor,
Handbook of Simulation,
Wiley, 1998,
ISBN: 0471134031,
LC: T57.62.H37.
5. JD Beasley, SG Springer,
Algorithm AS 111: The Percentage Points of the Normal Distribution,
Applied Statistics,
Volume 26, Number 1, 1977, pages 118-121.
6. Jose Bernardo,
Algorithm AS 103: Psi ( Digamma ) Function,
Applied Statistics,
Volume 25, Number 3, 1976, pages 315-317.
7. Donald Best, DE Roberts,
Algorithm AS 91: The Percentage Points of the Chi-Squared Distribution,
Applied Statistics,
Volume 24, Number 3, 1975, pages 385-390.
8. G Bhattacharjee,
Algorithm AS 32: The Incomplete Gamma Integral,
Applied Statistics,
Volume 19, Number 3, 1970, pages 285-287.
9. William Cody, Kenneth Hillstrom,
Chebyshev Approximations for the Natural Logarithm of the Gamma Function,
Mathematics of Computation,
Volume 21, Number 98, April 1967, pages 198-203.
10. William Cody, Anthony Strecok, Henry Thacher,
Chebyshev Approximations for the Psi Function,
Mathematics of Computation,
Volume 27, Number 121, January 1973, pages 123-127.
11. John Hart, Ward Cheney, Charles Lawson, Hans Maehly, Charles Mesztenyi, John Rice, Henry Thacher, Christoph Witzgall,
Computer Approximations,
Wiley, 1968,
LC: QA297.C64.
12. David Hill, Algorithm AS 66: The Normal Integral,
Applied Statistics,
Volume 22, Number 3, 1973, pages 424-427.
13. Cornelius Lanczos,
A precision approximation of the gamma function,
SIAM Journal on Numerical Analysis, B,
Volume 1, 1964, pages 86-96.
14. Chi Leung Lau,
Algorithm AS 147: A Simple Series for the Incomplete Gamma Integral,
Applied Statistics,
Volume 29, Number 1, 1980, pages 113-114.
15. 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 397-402.
16. A. Naryanan,
Algorithm AS 266: Maximum Likelihood Estimation of the Parameters of the Dirichlet Distribution,
Applied Statistics,
Volume 40, Number 2, 1991, pages 365-374.
17. Malcolm Pike, David Hill,
Algorithm 291: Logarithm of Gamma Function,
Communications of the ACM,
Volume 9, Number 9, September 1966, page 684.
18. BE Schneider,
Algorithm AS 121: Trigamma Function,
Applied Statistics,
Volume 27, Number 1, 1978, pages 97-99.
19. BL Shea,
Algorithm AS 239: Chi-squared and Incomplete Gamma Integral,
Applied Statistics,
Volume 37, Number 3, 1988, pages 466-473.
20. Michael Wichura,
Algorithm AS 241: The Percentage Points of the Normal Distribution,
Applied Statistics,
Volume 37, Number 3, 1988, pages 477-484.

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 the digamma or Psi function = d ( LOG ( GAMMA ( X ) ) ) / dX
• DIRICHLET_CHECK checks the parameters of the Dirichlet PDF.
• DIRICHLET_ESTIMATE estimates the parameters of a Dirichlet distribution.
• DIRICHLET_MEAN returns the means of the Dirichlet PDF.
• DIRICHLET_MIX_MEAN returns the means of a Dirichlet mixture PDF.
• DIRICHLET_MIX_SAMPLE samples a Dirichlet mixture PDF.
• DIRICHLET_SAMPLE samples 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.
• GAMMA_LOG calculates the natural logarithm of GAMMA ( X ) for positive X.
• GAMMA_SAMPLE samples the Gamma PDF.
• GAMMAD computes the Incomplete Gamma Integral
• GAMMDS computes the incomplete Gamma integral.
• LNGAMMA computes Log(Gamma(X)) using a Lanczos approximation.
• NORMAL_01_SAMPLE samples the standard Normal PDF.
• 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 chi-squared PDF.
• PPND produces the normal deviate value corresponding to lower tail area = P.
• PPND16 produces the normal deviate value corresponding to lower tail area = P.
• PPND7 produces the normal deviate value corresponding to lower tail area = P.
• PSI evaluates the psi or digamma function, d/dx ln(gamma(x)).
• R4_RANDOM returns a random real in a given range.
• R4COL_MEAN returns the means of columns of a real array.
• R4COL_VARIANCE returns the variances of the columns of a real array.
• 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 FORTRAN90 source codes.

Last revised on 29 December 2007.