Vinecop.cdf

Vinecop.cdf(self: pyvinecopulib.Vinecop, u: numpy.ndarray[numpy.float64[m, n]], N: int = 10000, num_threads: int = 1, seeds: list[int] = []) numpy.ndarray[numpy.float64[m, 1]]

Evaluates the copula distribution.

Because no closed-form expression is available, the distribution is estimated numerically using Monte Carlo integration. The function uses quasi-random numbers from the vine model to do so.

When at least one variable is discrete, two types of “observations” are required in u: the first \(n \; x \; d\) block contains realizations of \(F_{X_j}(X_j)\). The second \(n \; x \; d\) block contains realizations of \(F_{X_j}(X_j^-)\). The minus indicates a left-sided limit of the cdf. For, e.g., an integer-valued variable, it holds \(F_{X_j}(X_j^-) = F_{X_j}(X_j - 1)\). For continuous variables the left limit and the cdf itself coincide. Respective columns can be omitted in the second block.

Parameters:
  • u – An \(n \times (d + k)\) or \(n \times 2d\) matrix of evaluation points, where \(k\) is the number of discrete variables (see Vinecop.select()).

  • N – Integer for the number of quasi-random numbers to draw to evaluate the distribution (default: 1e4).

  • num_threads – The number of threads to use for computations; if greater than 1, the function will generate n samples concurrently in num_threads batches.

  • seeds – Seeds to scramble the quasi-random numbers; if empty (default), the random number quasi-generator is seeded randomly.

Returns:

A vector of length n containing the copula distribution values.