VineCopulaRand

Generating (pseudo-)random variables from a copula or vine copula


Purpose

The function draws N pseudo-random d-dimensional tuples from a C-Vine or D-Vine copula. The vine copulas can be of the simplified and non-simplified form. In the case of a non-simplified Vine copula, the parameters of the conditional copulas have to be given as functionals of the variables on which the conditioning is done.

Usage

       Standard C-Vine copula (simplified & non-simplified, where the
       parameters of the conditional copulas have to be given as
       functionals of the variables on which the conditioning is done)
         simplified
           U = CopulaRand('C-Vine',N,d,families,thetas,ones(1,(d-1)*(d-2)/2))
         non-simplified
           U = CopulaRand('C-Vine',N,d,families,thetas,simplified,condparameterfunctionals)
       Standard D-Vine copula (simplified & non-simplified, where the
       parameters of the conditional copulas have to be given as
       functionals of the variables on which the conditioning is done)
         simplified
           U = CopulaRand('D-Vine',N,d,families,thetas,ones(1,(d-1)*(d-2)/2))
         non-simplified
           U = CopulaRand('D-Vine',N,d,families,thetas,simplified,condparameterfunctionals)

Inputs

   type      = The vine copula type.
   N         = The number of pseudo-random tuples to be drawn.
   d         = The dimension of the C- or D-Vine.
   rotation    = A vector of the same dimension as families in
                 which one can specify rotation levels.
   families  = A cell array of the pair-copula families, which are
               part of the PCC. The cell array has to have the length
               (d-1)*d/2. The first d-1 entries are the copula
               families in the first tree and the next d-2 entries are
               the copula families in the second tree and so on. That
               means, for d=4 the array should look similar to this
               {'Frank', 'Frank', 'Frank', 'AMH', 'AMH', 'Clayton'},
               which is the special case where all copulas in the
               second tree are AMH copulas and all copulas in the
               third tree are Clayton copulas. The order of the
               families is (exemplarily for the case d=4): C12, C13,
               C14, C23|1, C24|1, C34|12.
               Note: If families is a simple string/character, e.g.,
               'Clayton', then all pair-copulas are specified to be
               from this copula family.
   thetas    = The values of the parameters for the (d-1)*d/2 pair-
               copulas. These parameter values have to be given in the
               same order as the families vector, but in a row-
               vector. If a pair-copula is a independence copula, then
               there is no parameter needed. Furthermore, if a pair-
               copula has to or more parameters, the parameters have
               to be given in same order as they have to be provided
               if the pair-copula is considered only. For example for
               a t-copula, the first parameter is rho and the second
               parameter is the degrees of freedom parameter nu.
               Note: If thetas is a skalar then all parameters (i.e.,
               the parameters of all pair-copulas) are set to the same
               value (i.e. to the one given).
   simplified
             = A vector consisting of (d-1)*(d-2)/2 zeros or ones
               (either 1 (for an unconditional bivariate pair-copula)
               or 0 for a conditional copula) specifying, whether
               the copulas in the second and higher tree are pair-copulas
               (unconditional bivariate copulas) or conditional copulas.
   condparameterfunctionals
             = A cell array consisting of (# non-partial (i.e.
               conditional) pair-copulas) cell array, which consist of
               as many parameter functionals as the copula families
               has parameters. Therefore, if one of the parameters is
               not varying in the conditioning set, then the function
               handle has to give back constant (e.g., @(w) c, where c
               is a scalar constant. Functionals for conditional
               copulas beeing part of the second tree of the C-Vine
               have to be functions of one variable (i.e., they should
               be evaluatable for column vectors). Functionals of the
               third tree of the C-Vine have to be functionals of two
               variables (i.e. they should be evaluatable for matrices
               of the size N x 2). And so on, for conditional copulas,
               where the conditioning is done on three or more
               variables. The ordering of the variables in the
               conditioning set corresponds to the ordering of the
               root nodes of the different trees (e.g., in the fourth
               tree, the first conditional copula is the C_45|123
               copula and the conditioning set is three-dimensional,
               where the first column of observations corresponds to
               observations of the root node in the first tree (i.e.
               variable X_1).
               Note: Of course it is possible, that the parameter of a
               conditional copula only depends on some of the
               variables, but then the functions have to be specified
               in an appropriate way (e.g., if a conditional copula in
               the third tree, where the conditioning is done on two
               variables, only depends on the second variable, the
               function could look similar to this @(u) 3.*u(:,2),
               when the parameter of the conditional copula is exactly
               three times the second variable on which the
               conditioning is done.

Outputs

  U          = (N x d) Matrix of simulated tuples from the specified
               copula, where every row is a simulated d-dimensional
               tuple from the d-dimensional C-Vine or D-Vine copula.