public class RandomEx2 extends Object
Generates a pseudorandom multivariate sequence with user defined marginal distributions.
This example uses method Random.nextGaussianCopula
to generate a
multivariate sequence
GCdevt[k=0..nseq-1][j=0..nvar-1]
whose marginal distributions
are user-defined and imprinted with a user-specified correlation matrix
CorrMtrxIn[i=0..nvar-1][j=0..nvar-1]
and then uses method
Random.canonicalCorrelation
to extract from this multivariate
random sequence a canonical correlation matrix
CorrMtrx[i=0..nvar-1][j=0..nvar-1]
.
This example illustrates two useful copula related procedures. The first procedure generates a random multivariate sequence with arbitrary user-defined marginal deviates whose dependence is specified by a user-defined correlation matrix. The second procedure is the inverse of the first: an arbitrary multivariate deviate input sequence is first mapped to a corresponding sequence of empirically derived variates, i.e. cumulative distribution function values representing the probability that each random variable has a value less than or equal to the input deviate. The variates are then inverted, using the inverse Normal(0,1) function, to N(0,1) deviates; and finally, a canonical covariance matrix is extracted from the multivariate N(0,1) sequence using the standard sum of products.
This example demonstrates that the nextGaussianCopula
method
correctly embeds the user-defined correlation information into an arbitrary
marginal distribution sequence by extracting the canonical correlation from
these sequences and showing that they differ from the original correlation
matrix by a small relative error, which generally decreases as the number of
multivariate sequence vectors increases.
Constructor and Description |
---|
RandomEx2() |
public static void main(String[] args) throws IMSLException
IMSLException
Copyright © 2020 Rogue Wave Software. All rights reserved.