ASA053
Wishart Variate Generator
ASA053
is a FORTRAN90 library which
returns samples from the Wishart distribution.
As far as I can tell, there are two mistakes in the printed text
of the algorithm; one involves incorrectly determining the number
of degrees of freedom for the ChiSquared distribution; the
other omits an absolute value sign when inverting the Wilson-Hilferty
formula, so that square roots of negative values are occasionally
requested. These mistakes have been corrected here.
Licensing:
The computer code and data files made available on this
web page are distributed under
the GNU LGPL license.
Languages:
ASA053 is available in
a C version and
a C++ version and
a FORTRAN90 version and
a MATLAB version and
a Python version.
Related Data and Programs:
WISHART,
a FORTRAN90 library which
produces sample matrices from the Wishart or Bartlett distributions,
useful for sampling random covariance matrices.
Reference:
-
Stanley Sawyer,
Wishart Distributions and Inverse-Wishart Sampling,
Washington University,
30 April 2007, 12 pages.
-
William Smith, Ronald Hocking,
Algorithm AS 53, Wishart Variate Generator,
Applied Statistics,
Volume 21, Number 3, pages 341-345, 1972.
Original Source Code:
-
asa053_original.f,
the original text of the source code. Note that the
line "DF = N - I + 1" is believed (by me) to be incorrect,
and is replaced in the present version by "DF = NP - I + 1".
Source Code:
Examples and Tests:
List of Routines:
-
R8_UNIFORM_01 returns a unit pseudorandom R8.
-
R8PP_PRINT prints an R8PP matrix.
-
R8PP_PRINT_SOME prints some of an R8PP matrix.
-
R8UTP_PRINT prints an R8UTP matrix.
-
R8UTP_PRINT_SOME prints some of an R8UTP matrix.
-
RNORM returns two independent standard random normal deviates.
-
TIMESTAMP prints the current YMDHMS date as a time stamp.
-
WSHRT returns a random Wishart variate.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 16 April 2014.