nag_rngs_corr_matrix (g05qbc) generates a random correlation matrix with given eigenvalues.
Given
eigenvalues,
, such that
and
nag_rngs_corr_matrix (g05qbc) will generate a random correlation matrix,
, of dimension
, with eigenvalues
.
The method used is based on that described by
Lin and Bendel (1985). Let
be the diagonal matrix with values
and let
be a random orthogonal matrix generated by
nag_rngs_orthog_matrix (g05qac) then the matrix
is a random covariance matrix with eigenvalues
. The matrix
is transformed into a correlation matrix by means of
elementary rotation matrices
such that
. The restriction on the sum of eigenvalues implies that for any diagonal element of
, there is another diagonal element
. The
are constructed from such pairs, chosen at random, to produce a unit diagonal element corresponding to the first element. This is repeated until all diagonal elements are
to within a given tolerance
.
One of the initialization functions
nag_rngs_init_repeatable (g05kbc) (for a repeatable sequence if computed sequentially) or
nag_rngs_init_nonrepeatable (g05kcc) (for a non-repeatable sequence) must be called prior to the first call to nag_rngs_corr_matrix (g05qbc).
Lin S P and Bendel R B (1985) Algorithm AS 213: Generation of population correlation on matrices with specified eigenvalues Appl. Statist. 34 193–198
The maximum error in a diagonal element is given by
eps.
The time taken by nag_rngs_corr_matrix (g05qbc) is approximately proportional to .
Following initialization of the pseudorandom number generator by a call to
nag_rngs_init_repeatable (g05kbc), a
by
correlation matrix with eigenvalues of
,
and
is generated and printed.