g05rd sets up a reference vector and generates an array of pseudorandom numbers from a Normal (Gaussian) copula with covariance matrix .
Syntax
C# |
---|
public static void g05rd( int mode, int n, int m, double[,] c, double[] r, G05..::..G05State g05state, double[,] x, out int ifail ) |
Visual Basic |
---|
Public Shared Sub g05rd ( _ mode As Integer, _ n As Integer, _ m As Integer, _ c As Double(,), _ r As Double(), _ g05state As G05..::..G05State, _ x As Double(,), _ <OutAttribute> ByRef ifail As Integer _ ) |
Visual C++ |
---|
public: static void g05rd( int mode, int n, int m, array<double,2>^ c, array<double>^ r, G05..::..G05State^ g05state, array<double,2>^ x, [OutAttribute] int% ifail ) |
F# |
---|
static member g05rd : mode : int * n : int * m : int * c : float[,] * r : float[] * g05state : G05..::..G05State * x : float[,] * ifail : int byref -> unit |
Parameters
- mode
- Type: System..::..Int32On entry: a code for selecting the operation to be performed by the method.
- Set up reference vector only.
- Generate variates using reference vector set up in a prior call to g05rd.
- Set up reference vector and generate variates.
Constraint: , or .
- n
- Type: System..::..Int32On entry: , the number of random variates required.Constraint: .
- m
- Type: System..::..Int32On entry: , the number of dimensions of the distribution.Constraint: .
- c
- Type: array<System..::..Double,2>[,](,)[,][,]An array of size [dim1, m]Note: dim1 must satisfy the constraint:On entry: the covariance matrix of the distribution. Only the upper triangle need be set.Constraint: must be positive semidefinite to machine precision.
- r
- Type: array<System..::..Double>[]()[][]An array of size [lr]On entry: if , the reference vector as set up by g05rd in a previous call with or .On exit: if or , the reference vector that can be used in subsequent calls to g05rd with .
- g05state
- Type: NagLibrary..::..G05..::..G05StateAn Object of type G05.G05State.
- x
- Type: array<System..::..Double,2>[,](,)[,][,]An array of size [dim1, _tdx]Note: dim1 must satisfy the constraint:On exit: the array of values from a multivariate Gaussian copula, with holding the th dimension for the th variate.
- ifail
- Type: System..::..Int32%On exit: unless the method detects an error or a warning has been flagged (see [Error Indicators and Warnings]).
Description
The Gaussian copula, , is defined by
where is the number of dimensions, is the multivariate Normal density function with mean zero and covariance matrix and is the inverse of the univariate Normal density function with mean zero and variance .
g05rz is used to generate a vector from a multivariate Normal distribution and g01ea is used to convert each element of that vector into a uniformly distributed value between zero and one.
One of the initialization methods (G05KFF not in this release) (for a repeatable sequence if computed sequentially) or (G05KGF not in this release) (for a non-repeatable sequence) must be called prior to the first call to g05rd.
References
Nelsen R B (1998) An Introduction to Copulas. Lecture Notes in Statistics 139 Springer
Sklar A (1973) Random variables: joint distribution functions and copulas Kybernetika 9 499–460
Error Indicators and Warnings
Errors or warnings detected by the method:
Some error messages may refer to parameters that are dropped from this interface
(LDC, LDX) In these
cases, an error in another parameter has usually caused an incorrect value to be inferred.
- On entry, , or .
- On entry, .
- On entry, .
- The covariance matrix is not positive semidefinite to machine precision.
- On entry, .
- On entry, .
On entry, state vector was not initialized or has been corrupted.
- On entry, .
Accuracy
See [Accuracy] in g05rz for an indication of the accuracy of the underlying multivariate Normal distribution.
Parallelism and Performance
None.
Further Comments
The time taken by g05rd is of order .
It is recommended that the diagonal elements of should not differ too widely in order of magnitude. This may be achieved by scaling the variables if necessary. The actual matrix decomposed is , where is a diagonal matrix with small positive diagonal elements. This ensures that, even when is singular, or nearly singular, the Cholesky factor corresponds to a positive definite covariance matrix that agrees with within machine precision.