Skip to content

Correctness

Correctness is the release gate. benchmarks/correctness/ compares VineCopulas.jl with rvinecopulib using shared deterministic inputs and strict tolerances.

What is validated?

The gate is sequential: 2. Pair copulas — log density, h-functions, and inverse h-functions for Independence, Gaussian, Student-t, Clayton, Gumbel, Frank, Joe, BB1, BB6, BB7, and BB8, including representative rotations.

  1. Fixed general R-vines — structure exchange, log density, Rosenblatt transform, and inverse Rosenblatt transform on branching 5D and 7D fixtures.

  2. Fixed-structure fitting — selected families and rotations, fitted parameters, parameter count, and likelihood while the R-vine structure is held fixed.

  3. Automatic structure selection — the same quantities after Dißmann-style sequential selection with deterministic Kruskal maximum-spanning trees.

Equivalent R-vine matrices can encode the same conditioned and conditioning sets. Structure parity is therefore checked through represented edges rather than raw matrix equality.

Release reference

The v0.1.1 release candidate was checked with   in both supported parity modes.

ModeFitParametersStructureFamiliesFitted parameters
commonautomatic 10 / 10PASSPASSPASS
commonfixed 11 / 11PASSPASSPASS
defaultautomatic 11 / 11PASSPASSPASS
defaultfixed 11 / 11PASSPASSPASS

The largest raw fitted-parameter difference was approximately   in the common fixed-structure run and   in the default fixed-structure run. Both complete fitting/selection gates passed without weakening the configured tolerances.

The fixed-model stage also passed for all pair fixtures and both general R-vine fixtures. Representative fixed-vine discrepancies were on the order of for log density and below   for inverse transforms.

Common and default model spaces

common aligns the primary parametric search space in both engines:

  • Gaussian, Student-t, Clayton, Gumbel, Frank, and Joe;

  • rotations enabled;

  • AIC selection;

  • no family preselection;

  • independence excluded;

  • absolute Kendall's tree weights;

  • Kruskal maximum-spanning trees.

Run it with:

bash
PARITY_N=800 PARITY_FIT_MODE=common \
  bash benchmarks/correctness/run_correctness_gate.sh

default exercises the broader package selector: independence plus Gaussian, Student-t, Clayton, Gumbel, Frank, Joe, BB1, BB6, BB7, and BB8, using BIC.

bash
PARITY_N=800 PARITY_FIT_MODE=default \
  bash benchmarks/correctness/run_correctness_gate.sh

Selection parameter domains

Some families use finite selection parameter domains so that VineCopulas.jl and rvinecopulib optimize over the same candidate space. These bounds belong to automatic selection only. They do not narrow the mathematical parameter domain available when a copula is constructed and used directly through Copulas.jl.

This distinction is important: vine truncation controls how many trees are retained, while selection parameter domains control only the optimizer's candidate region for a pair family.

Failure policy

A failure is diagnostic. The gate does not pass by silently dropping a family, changing strict=true, or relaxing tolerances. Primitive and traversal failures are resolved before fitting differences are interpreted.