The R-vine matrix notation in vinecopulib is different from the one in
the VineCopula package. An example matrix is
1 1 1 1
2 2 2 0
3 3 0 0
4 0 0 0
which encodes the following pair-copulas:
tree |
edge |
pair-copulas |
0 |
0 |
(4, 1) |
|
1 |
(3, 1) |
|
2 |
(2, 1) |
1 |
0 |
(4, 2; 1) |
|
1 |
(3, 2; 1) |
Denoting by M[i, j]
the matrix entry in row i
and column j
(the
pair-copula index for edge e
in tree t
of a d
dimensional vine is
(M[d - 1 - t, e], M[t, e]; M[t - 1, e], ..., M[0, e])
. Less formally,
Start with the counter-diagonal element of column e
(first conditioned
variable).
Jump up to the element in row t
(second conditioned variable).
Gather all entries further up in column e
(conditioning set).
A valid R-vine matrix must satisfy several conditions which are checked
when RVineMatrix()
is called:
The lower right triangle must only contain zeros.
The upper left triangle can only contain numbers between 1 and d.
The anti-diagonal must contain the numbers 1, ..., d.
The anti-diagonal entry of a column must not be contained in any
column further to the right.
The entries of a column must be contained in all columns to the left.
The proximity condition must hold: For all t = 1, ..., d - 2 and
e = 0, ..., d - t - 1 there must exist an index j > d, such that
(M[t, e], {M[0, e], ..., M[t-1, e]})
equals either
(M[d-j-1, j], {M[0, j], ..., M[t-1, j]})
or
(M[t-1, j], {M[d-j-1, j], M[0, j], ..., M[t-2, j]})
.
Condition 6 already implies conditions 2-5, but is more difficult to
check by hand.