Provides tools for the statistical analysis of regular vine copula
models, see Aas et al. (2009)
Vine copulas are a flexible class of dependence models consisting of bivariate building blocks (see e.g., Aas et al., 2009). You can find a comprehensive list of publications and other materials on vine-copula.org.
This package is primarily made for the statistical analysis of vine copula models. The package includes tools for parameter estimation, model selection, simulation, goodness-of-fit tests, and visualization. Tools for estimation, selection and exploratory data analysis of bivariate copula models are also provided. Please see the API documentation for a detailed description of all functions.
You can install:
the stable release on CRAN:
the latest development version:
Below, we list most functions and features you should know about. As usual in copula models, data are assumed to be serially independent and lie in the unit hypercube.
BiCop: Creates a bivariate copula by specifying the family and parameters
(or Kendall's tau). Returns an object of class
BiCop. The class has the
summary: a brief or comprehensive overview of the bivariate
contour: surface/perspective and contour plots of the copula
density. Possibly coupled with standard normal margins (default for
BiCopSim: Simulates from a bivariate copula.
BiCopEst: Estimates parameters of a bivariate copula with a prespecified
family. Estimation can be done by maximum likelihood (
method = "mle") or
inversion of the empirical Kendall's tau (
method = "itau", only available
for one-parameter families). Returns an object of class
BiCopSelect: Estimates the parameters of a bivariate copula for a set
of families and selects the best fitting model (using either AIC or BIC).
Returns an object of class
BiCopGofTest: Goodness-of-Fit tests for bivariate copulas.
BiCopVuongClarke: Vuong and Clarke tests for model comparison within a
prespecified set of copula families.
Conversion between dependence measures and parameters (for a given family).
Functions are vectorized in all arguments.
Evaluate functions related to a bivariate copula:
BiCopHinv. Functions are vectorized in the
BiCopKDE: Kernel density plots for copula data.
BiCopChiPlot: Further plot types for the
analysis of bivariate copulas.
For most functions, you can provide an object of class
BiCop instead of
RVineMatrix: Creates a vine copula model by specifying structure, family
and parameter matrices. Such matrices have been introduced by Dissman et al.
(2013). Returns an object of class
RVineMatrix. The class has
the following methods:
plot: Plots the trees of the the R-vine tree structure. Optionally,
you can annotate the edges with pair-copula families and parameters.
contour: Creates a matrix of contour plots associated with the
RVineSim: Simulates from a vine copula model.
RVineSeqEst: Estimates the parameters of a vine copula model with
prespecified structure and families.
RVineCopSelect: Estimates the parameters and selects the best family for a
vine copula model with prespecified structure matrix.
RVineStructureSelect: Fits a vine copula model assuming no prior knowledge.
It selects the R-vine structure using Dissmann et al. (2013)'s
method, estimates parameters for various families, and selects the best
family for each pair.
RVineGoFTest: Goodness-of-Fit tests for a vine copula model (c.f.,
Schepsmeier, 2013, 2015). Related functions are
RVineClarkeTest: Vuong and Clarke tests for comparing
two vine copula models.
RVinePar2Beta: Calculate dependence measures
corresponding to a vine copula model.
RVineBIC: Calculate the density,
log-likelihood, AIC, and BIC of a vine copula.
RVineMatrix objects for C- and
D-vine copulas. This is particularly useful for former users of the CDVine
Furthermore, bivariate and vine copula models from this packages can be used
with the copula package
(Hofert et al., 2015). For example,
vineCopula transforms an
object into an object of class
vineCopula which provides methods for
rCopula. For more details, we refer to the package
In this package several bivariate copula families are included for bivariate and multivariate analysis using vine copulas. It provides functionality of elliptical (Gaussian and Student-t) as well as Archimedean (Clayton, Gumbel, Frank, Joe, BB1, BB6, BB7 and BB8) copulas to cover a large range of dependence patterns. For Archimedean copula families, rotated versions are included to cover negative dependence as well.
The Tawn copula is an asymmetric extension of the Gumbel copula with three parameters. For simplicity, we implemented two versions of the Tawn copula with two parameters each. Each type has one of the asymmetry parameters fixed to 1, so that the corresponding copula density is either left- or right-skewed (in relation to the main diagonal). In the manual we will call these two new copulas "Tawn type 1" and "Tawn type 2".
The following table shows the parameter ranges of bivariate copula families with
par2 and internal coding
|Rotated Clayton (90 and 270 degrees)||
|Rotated Gumbel (90 and 270 degrees)||
|Rotated Joe (90 and 270 degrees)||
|(Survival) Clayton-Gumbel (BB1)||
|Rotated Clayton-Gumbel (90 and 270 degrees)||
|(Survival) Joe-Gumbel (BB6)||
|Rotated Joe-Gumbel (90 and 270 degrees)||
|(Survival) Joe-Clayton (BB7)||
|Rotated Joe-Clayton (90 and 270 degrees)||
|(Survival) Joe-Frank (BB8)||
|Rotated Joe-Frank (90 and 270 degrees)||
|(Survival) Tawn type 1||
|Rotated Tawn type 1(90 and 270 degrees)||
|(Survival) Tawn type 2||
|Rotated Tawn type 2 (90 and 270 degrees)||
This small shiny app enables the user to draw nice tree plots of an R-Vine
copula model using the package
d3Network. Models have to be
set up locally in an
RVineMatrix object and uploaded as .RData file. The page
is still under construction.
Author: Ulf Schepsmeier
Aas, K., C. Czado, A. Frigessi, and H. Bakken (2009). Pair-copula constructions of multiple dependence. Insurance: Mathematics and Economics 44 (2), 182-198.
Bedford, T. and R. M. Cooke (2001). Probability density decomposition for conditionally dependent random variables modeled by vines. Annals of Mathematics and Artificial intelligence 32, 245-268.
Bedford, T. and R. M. Cooke (2002). Vines - a new graphical model for dependent random variables. Annals of Statistics 30, 1031-1068.
Brechmann, E. C., C. Czado, and K. Aas (2012). Truncated regular vines in high dimensions with applications to financial data. Canadian Journal of Statistics 40 (1), 68-85.
Brechmann, E. C. and C. Czado (2011). Risk management with high-dimensional vine copulas: An analysis of the Euro Stoxx 50. Statistics & Risk Modeling, 30 (4), 307-342.
Brechmann, E. C. and U. Schepsmeier (2013). Modeling Dependence with C- and D-Vine Copulas: The R Package CDVine. Journal of Statistical Software, 52 (3), 1-27. http://www.jstatsoft.org/v52/i03/.
Czado, C., U. Schepsmeier, and A. Min (2012). Maximum likelihood estimation of mixed C-vines with application to exchange rates. Statistical Modelling, 12(3), 229-255.
Dissmann, J. F., E. C. Brechmann, C. Czado, and D. Kurowicka (2013). Selecting and estimating regular vine copulae and application to financial returns. Computational Statistics & Data Analysis, 59 (1), 52-69.
Eschenburg, P. (2013). Properties of extreme-value copulas Diploma thesis, Technische Universitaet Muenchen http://mediatum.ub.tum.de/node?id=1145695.
Hofert, M., I. Kojadinovic, M. Maechler, and J. Yan (2015). copula: Multivariate Dependence with Copulas. R package version 0.999-13 https://cran.r-project.org/package=VineCopula
Joe, H. (1996). Families of m-variate distributions with given margins and m(m-1)/2 bivariate dependence parameters. In L. Rueschendorf, B. Schweizer, and M. D. Taylor (Eds.), Distributions with fixed marginals and related topics, pp. 120-141. Hayward: Institute of Mathematical Statistics.
Joe, H. (1997). Multivariate Models and Dependence Concepts. London: Chapman and Hall.
Knight, W. R. (1966). A computer method for calculating Kendall's tau with ungrouped data. Journal of the American Statistical Association 61 (314), 436-439.
Kurowicka, D. and R. M. Cooke (2006). Uncertainty Analysis with High Dimensional Dependence Modelling. Chichester: John Wiley.
Kurowicka, D. and H. Joe (Eds.) (2011). Dependence Modeling: Vine Copula Handbook. Singapore: World Scientific Publishing Co.
Nelsen, R. (2006). An introduction to copulas. Springer
Nagler, T. (2015). kdecopula: Kernel Smoothing for Bivariate Copula Densities. R package version 0.6.0. https://cran.r-project.org/package=kdecopula
Schepsmeier, U. and J. Stoeber (2012). Derivatives and Fisher information of bivariate copulas. Statistical Papers, 55 (2), 525-542. http://link.springer.com/article/10.1007/s00362-013-0498-x.
Schepsmeier, U. (2013) A goodness-of-fit test for regular vine copula models. Preprint. http://arxiv.org/abs/1306.0818.
Schepsmeier, U. (2015) Efficient information based goodness-of-fit tests for vine copula models with fixed margins. Journal of Multivariate Analysis 138, 34-52.
Stoeber, J. and U. Schepsmeier (2013). Estimating standard errors in regular vine copula models. Computational Statistics, 28 (6), 2679-2707 http://link.springer.com/article/10.1007/s00180-013-0423-8.
White, H. (1982) Maximum likelihood estimation of misspecified models, Econometrica, 50, 1-26.
get rid of warning messages when checking whether structure is a D-vine.
fix standard errors for one-parameter families.
avoid infinite loop for Joe's inverse h-function with extreme parameter values.
fix parameters bounds for BB copulas in
fix rotation handling in derivative calculations.
fix check for whether a structure is a D-vine.
fixed typos in API documentation.
fix calculation of Kendall's tau when joint ties are present.
improved starting parameter for Joe copula MLE.
All C-headers are now located in
Most C routines are registered as C-callable (#47).
RVineMLE can now safely called with only independence copulas (#49).
Fixed fix (non-critical) memory-access bug.
summary.RVineMatrix() invisibly returns a
data.frame containg most of
what is printed as output.
Less restrictive conditions on what is considered an appropriate
RVineStructureSelect() (thanks to Thibault Vatter, #40).
RVinePDF() (thanks to @cag51, #36).
Fix parameter bounds in
RVineMLE() corresponding to updated requirements
Adapt to re-naming of
lambda in the copula package (thanks
to Benedikt Graeler, #41, #42).
Fix bug in detecting C-vine copulas for
Online API documentation on https://tnagler.github.io/VineCopula/.
Fixed bug in preprocessing of
More informative error message when family is unknown.
presel = TRUE and insufficient data.
RVineMatrix() (output dimension was
naturalOrder = TRUE
wasn't working, thanks @tvatter).
method = "itau".
copula (>= 0.999-16). The new version of copula requires VineCopula to be re-installed, because the old
fitCopula()method doesn't work any longer, but was re-exported by VineCopula.
R (>= 3.1.0). So far, this dependence was implicit trhough our dependence on the copula package.
All estimation functions now have a
method argument. The default is
method = "mle" and corresponds to the old behavior. The other option,
method = "itau", estimates the parameters by inversion of Kendall's. It is
much faster than
method = "mle", but is only available for one-parameter
families and the t-copula. Big thanks to Thibault Vatter who did most of the
work (PR #25).
RVineMatrixSample that randomly generates valid R-vine
matrices using the algorithm of Joe et al. (2011). Contributed by
Thibault Vatter (PR #27).
Faster versions of
RVineStructureSelect by avoiding unnecessary computations (thanks to
Thibault Vatter, PRs #29 and #31).
-Select functions now have a
presel argument. If
the familyset is reduced to families that have asymmetry charactistics that
conform with the observed data.
RVinePDF have been implemented in a way
that demands less memory. For
RVineLogLik, the option
to be set to
Fixed bug in upper tail dependence coefficient for survival BB1 (reported by Viviana Fernandez, thanks!).
RVineStructureSelect now works in dimension two as well.
RVineMatrixCheck returns the new error code
-4 when the matrix is
neither lower nor upper triangular (threw an actual error before).
contour.RVineMatrix now arranges the contour matrix conforming with the
family and parameter matrices.
se = FALSE as default throughout the package for faster estimation.
Fixed errors in
BiCopGofTest for the Student t copula and
par2 close to
2 and for most other families for
tau close to 0 (reported by Thong Huy
Fix sign in starting parameters for Tawn MLE.
Fixed storage positions of
par2 in output matrix of
by Robin Evans, thanks!).
Return scalar instead of 1-dim array in tau <-> par conversion.
Fix vectorized call of
Negative selection of families is now working properly.
Correct logLik calculation in output of
Dependence measures are updated in output of
Fix bug in annotation of edges with Kendall's when using
igraph has been removed from
network has been added to
All functions in the package can now handle NAs in the data. A warning message indicates presence of NAs and explains how they are treated.
RVineMatrix objects (now include: associated dependence
measures; fit statistics and p-values, if available).
summary for objects of class
New plotting generics:
plot.RVineMatrix for plotting vine trees,
contour.RVineMatrix for a matrix of contour plots,
contour.BiCop as short hand for
plot.BiCop(..., type = "contour").
Etimation of vine copulas
RVineSeqEst) can now be done in
parallel using the
cores argument (based on
foreach) and is more memory
efficient (pseudo-observations are discarded as soon they are useless).
RVineStructureSelect now takes an argument
treecrit allowing for
several preimplemented (and custom) choices of the edge weight used in
familyset in the -Select functions:
independence copula is handled as a regular family,
negative integers can be used to select from all but a subset of families.
BiCopCompare: A shiny app where the user can visually assess
how well several families fit the data.
BiCopKDE for kernel density plots (based on kdecopula
BiCopCondSim for conditional simulation from a bivariate
BiCopHinv for computation of inverse h-functions.
that only compute one of the two h-functions (or inverse h-functions).
BiCopCheck for checking of family/parameter
check.taus argument to the above functions for the option
to omit family/parameter consistency checks (for internal usage). When
FALSE, the Clayton and Frank copulas can be used with
par = 0.
Faster implementations of
BiCopTau2Par for Frank copula and
BiCopTau2Par conversion for Joe copula.
Correct call for non-t families in
BiCopHfuncDeriv2(..., deriv = "par1u2").
The S4-class objets of the Tawn copulas pointed to Archimedean CDFs, now corrected to true CDFs based on C-code.
TauMatrix: restriction for input data to be in [0,1] removed.
RVineCopSelect: no printing of family matrix.
Added methods for Pickand's dependence function "A" for
Use C-code instead of R-code and remove redundant C-code of Tawn copulas.
Small bug fix in log-likelihood for families 3, 4, 7, 17.
Increased upper limit for uniroot in
Fixed rotations of Tawns (they were actually reflection w.r.t. the axes u = 0.5 and u2 = 0.5)
Correct calculation of the goodness-of-fit test based on Whites Information
matrix test for bivariate copulas
BiCopGofTest(..., method = "white").
The variance matrix needed for the test statistic had a poor approximation.
Thereby the asymptotic p-values are corrected.
Bound parameter ranges for Archimedean copulas to avoid numerical instabilities in -PDF and -Sim functions.
RVineTreePlot: option for a legend (and numbered nodes and edges).
Definition of "C" in BiCopCDF for tawn copulas used constants
instead of arguments
RVineStructureSelect: Adjust to new version of igraph. Tree structure was
not selected correctly. igraph function names changed to the names used in
the new version. Some small modifications to avoid some for loops and make
the code easier to read.
Extend Imports to avoid undefined globals (CRAN E-mail 02.07.2015).
New version requires
igraph (>= 1.0.0).
as.copuladata: coerce to class
pairs plots for objects of class
RVinePDF: PDF of an R-Vine Copula Model.
RVineStructureSelect: add option
rotations = TRUE which augments the familyset with all rotations to a
RVineStructureSelect: allow upper triangular matrices as
input (output remains lower triangular).
BiCop objects for bivariate copulas:
BiCop and plotting generic
define results of
add compatibility with other
BiCopXyz functions (
BiCopEst: extend search interval for Tawn MLE to avoid
BiCopEst: fix for optim error ('non-finite value supplied').
U so that it corresponds to the order of
RVineCor2pcor: include normalization step for a more intuitive behavior,
bug fix for $d = 2, 3$ and $d > 9$.
RVinePcor2cor: bug fixes for $d = 2$ and $d > 9$.
RVM object now uses variable names as provided by data.
BiCopPar2Tau: fully vectorized (parameter/tau input), and sanity checks extended. Before vector input was not prohibited. However, both functions were not intended to be used for vectorized input.
RVineStructureSelect: Bug concerning the dimensions of input data/security
queries fixed (Reported by Sarka Cerna, Radek Solnicky and Ludovic Theate.
Thanks a lot!)
RVineStructureSelect: Correct handling of rotated BBs and Tawns.
BiCopEst: Improved starting values for Tawn MLE.
Hfunc1 for Tawns.
Bound all results to lie in 0,1
Hinv2 in analogy to
incompleteBeta.c: Misuse of the C function abs (as reported by CRAN)
gof_PIT.R: Use of
require() replaced by
requireNamespace according to
'Writing R Extensions'.
ADGofTest removed from
Suggests (see 'Writing R Extensions'
for usage of Suggests).
Import of function
Bootstrap procedure for the White test (
(Reported by Piotr Zuraniewski and Daniel Worm. Thanks!)
Bootstrap procedure for the PIT based and the ECP based test were incorrect. First, C starts to count at 0 not 1. This could result in zero entries in the bootstrapped data matrix. Second, forget to permute vdirect and vindirect according to the permutation of data.
BiCopSelect: For the rotated BB7 and BB8 (
family = 37, 38) the limiting
cases were incorrect for very small parameters (copy&paste error).
(Reported by Radek Solnicky. Thanks!)
Dependsto the more appropriate
RVineSim allows to commit a
(N x d)-matrix of $U[0,1]$ random variates
to be transformed to the copula sample. For example if you want to use quasi
random variables instead of the pseudo random variables implemented in R.
(Thanks to Marius Hofert)
The package now contains class wrappers that are compatible with the
class from the
copula R-package. These include all bivariate families
currently implemented: The class representation for different rotated
families of e.g the BB6 family are represented as
r270BB6Copula. These bivariate classes are fully
compatible with the standard copula methods such as
contour. A vine copula can
as well be coerced into a class representation of
the support of the standard methods is limited. See the corresponding help
pages for details. Earlier introduced R-wrapper of C-functions have been
removed, as they are no longer needed by the
RVineLogLik to allow to suppress some debug
parscale was not correctly defined for
RVineBIC: Instead of the function arguments
the calculation was based on
RVM$par2. This is corrected now.
(reported by Marcel Duellmann; thanks)
RVineStructureSelect: The new igraph version returned a different
variable type causing an error in the second and higher order tree selection.
RVinePIT: calculation of the probability integral transform (PIT) for
RVineGofTest: 15 different goodness-of-fit tests for R-vine copulas
print.RVM: A more detailed summary is printed if
print(RVM, detail = TRUE)
BetaMatrix: Matrix of empirical Blomqvist's beta values.
BiCopPar2Beta: Blomqvist's beta value of a bivariate copula.
RVinePar2Beta: Blomqvist's beta values of an R-vine copula model.
RVineCor2pcor: correlations to partial correlations for R-vines.
RVinePcor2cor: partial correlations to correlations for R-vines.
New copula families for most of the BiCop as well as for the
As an asymmetric extension of the Gumbel copula, the Tawn copula with three parameters is now also included in the package. Both the Gumbel and the Tawn copula are extreme-value copulas, which can be defined in terms of their corresponding Pickands dependence functions.
For simplicity, we implemented two versions of the Tawn copula with two parameters each. Each type has one of the asymmetry parameters fixed to 1, so that the corresponding Pickands dependence is either left- or right-skewed. In the manual we will call these two new copulas "Tawn type 1" and "Tawn type 2".
134 denote the Tawn copula and their
rotated versions in the case of left skewness (Tawn type 1).
234 denote the Tawn copula and their
rotated versions in the case of right skewness (Tawn type 2).
BiCopPar2Tau: corrected calculation of Kendall's tau of rotated BB7.
(Reported by Giampiero Marra. Thanks!)
RVineStructureSelect: Corrected code for the igraph package.
RVineTreePlot: Now a 3-dimensional R-vine can be plotted too.
Corrected upper tail dependence coefficient for the survival BB1 copula
Minor improvement in
BiCopSelect regarding the starting values for
Changed dependency from igraph0 to igraph since the support for igraph0 will be quit soon.
Additional validity check of the R-vine matrix in
provided by Harry Joe). Also available as separate function
New bivariate copula: Reflection asymmetric Archimedean copula. In our
functions it is
family = 41, 51, 61, 71 ( with rotated versions).
So far only implemented in some bivariate functions (not documented so
New (correct) examples for the Clarke and Vuong test.
Fixed memory problem in the C-function
BiCopGofTest: Goodness-of-fit test for bivariate copulas based on White's
information matrix equality as introduced by Wanling and Prokhorov (2011).
The formally included function
BiCopGofKendall is now part of
method = "kendall").
Additional edge label
RVineTreePlot to display the indices of
the (conditioned) pairs of variables identified by the edges.
RVineCopSelect a truncation level can be set.
Improved inverse h-functions for the Gumbel and Joe copulas (thanks to Harry Joe).
C to R wrapping functions for the h-functions (
bivariate log-likelihood function (
LL_mod_seperate), the bivariate
Archimedean copula CDF (
archCDF) and the simulation function for C- and
pcc) (request of Benedikt Graeler for the R-package
The functions R2CVine and R2Dine were removed, since they were only correct in special cases.
Work around for a problem with
optim and the analytical gradient in
Improvement of the bivariate maximum likelihood estimation (
In the functions
BiCopGoFTest(..., method = "Kendall") the
t-copula is not implemented any more. The calculation of the CDF was
incorrect for non-integer values of the degrees-of-freedom parameter. The
implemented algorithm in the
mvtnorm package only works for integer values
of the degrees-of-freedom parameter.
Improvement in the calculation of the cdf of the Frank copula (