The first stable release, based on vinecopulib 1.0.0. Highlights include a new marginal-modeling interface, conditional simulation and transforms, analytic derivatives, observation-specific parameters, and faster evaluation and fitting. See the vinecopulib 1.0.0 NEWS for the backend changes.
Require R >= 4.3.0, C++17, Boost headers from BH >= 1.75.0-0, and wdm >= 0.3.0. Optional parametric margin fitting requires univariateML >= 1.5.0.
R-vine structures now follow the backend convention with the conditioned variable on the diagonal. Consequently, the matrix, order, structure array, and edge orientation representing a model can differ from earlier releases; densities and log-likelihoods are unchanged.
Marginal fitting now uses explicit margin-family and
fitted-margin S3 protocols. Configure KDE options with
kde1d_family() and variable types with the top-level
var_types argument. Custom margin_family()
fitters now receive x, weights, and
type on every call.
TLL fits, particularly for discrete data, can change after fixes to CDF integration, inversion, and boundary handling.
Kendall’s tau for the BB6, BB7, BB8, and Tawn families incorporates numerical fixes. Maximum-likelihood estimates can also shift slightly because of optimizer improvements.
Compact d + k and expanded 2d layouts
for discrete variables are handled consistently across evaluation,
Rosenblatt transforms, and conditional simulation.
Add extensible protocols for fitted margins and margin families,
including margin_dist() and margin_family(),
distribution and quantile generics, and model metadata through
margin_info().
dvinecop() and dvine() gain a
log argument returning the log-density, and
dvinecop(keep_all = TRUE) reports logpdf
alongside pdf. A vine density is a product of one factor
per edge, so it underflows to 0 in high dimensions or under
strong dependence while its logarithm is still an ordinary
double.
dvine() accumulates the margins and the copula
density in log space and exponentiates once at the end, so it returns a
representable density where it previously returned 0: the
copula factor used to be exponentiated before being multiplied by the
marginal densities, discarding a joint density that concentrated margins
bring back into range.
Add kde1d_family(),
univariateML_family(), and stats_margin()
adapters. vine() can select among these and user-defined
candidates through margins_controls$family_set while
reporting and skipping failed candidates.
Add zero_inflated() and var_types to
distinguish continuous, discrete, and zero-inflated variables in
vine().
Fit margins in parallel on non-Windows systems, controlled
separately through margins_controls$cores.
Add conditioning-aware structure selection, conditional
simulation, and Rosenblatt transforms through
conditioning_set. Conditioning values can be common or
observation-specific, and fixed, automatically selected, and zero
truncation levels are supported.
Add scores() and hessian() for
bivariate and vine copulas, and first- and second-order derivatives to
dbicop() and hbicop() through
deriv.
Add sandwich covariance estimates and Wald confidence intervals
for fitted bivariate and vine copulas through vcov() and
confint().
Support observation-specific parameters in bivariate copula
functions and dvinecop(). The latter can also return
per-edge densities and h-functions through
keep_all.
Allow custom R functions and symmetrized Chatterjee’s xi
("cxi") as tree-selection criteria in
vinecop() and vine().
Add tail_dep() and blomqvist_beta() for
bivariate copula models and include these dependence summaries in
printed model output.
Ensure weighted Wilson random spanning trees terminate when all candidate edge strengths are zero.
mBICV(object, newdata = ) no longer returns
Inf when the density underflows. It computed the
log-likelihood as sum(log(dvinecop(newdata))), which
collapses as soon as one observation underflows to 0; it
now uses the backend’s log-space log-likelihood, as the stored
object$loglik always did.
Correctly evaluate and refit zero-truncated models and models whose omitted pair copulas represent implicit independence.
Correct the mBICV sparsity prior and require its prior
probability psi0 to lie strictly between zero and
one.
Preserve rows with missing unordered-factor values and variable names for discrete copula data.
Do not retain transformed copula data unless
keep_data = TRUE is explicitly requested.
Return standard logLik objects from fitted bivariate
copula, vine copula, and vine distribution models.
tree_algorithm in
vine and vinecop. Options are
"mst_prim", "mst_kruskal",
"random_weighted" or "random_unweighted"
(#307).BUG FIX
BUG FIX
BUG FIX
vine() models and
related functions.Update following a upgrade of the C++ backend vinecopulib to 0.7.1, see https://github.com/vinecopulib/vinecopulib/blob/main/NEWS.md.
The main changes on the R end are:
improved documentation,
support for zero-inflated variables,
added new Tawn copula family,
new argument allow_rotations to disable rotations of
copula families,
added variable names to vinecop summary (#276)
fixed handling of logistic distribution (#275)
fix NA handling in vine() control checks (#266)
allow bicop_dist() with tll (#268)
-D_HAS_AUTO_PTR_ETC=0 flag to disable deprecated
features used in boost.fix NA handling in to_pseudo_obs()
(#260)
add emp_cdf() for the tail corrected empirical cdf
(#261)
Release following the updates of vinecopulib to 0.6.2, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
improved documentation (discrete and missing dat, Rosenblatt transforms)
better parallelization when there is a small number of edges (#555)
remove illegal pragmas from json header (#245)
allow tree restriction in summary functions (#244)
Release following the updates of vinecopulib to 0.6.1, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
improved documentation (#241, #239)
use num_threads in recursive calls to the inverse
Rosenblatt
force TLL to be nonnegative (#238)
fix number of parameters for TLL
Maintenance release following the changes to all.equal()
in R 4.1.x.
Release following the updates of vinecopulib to 0.5.5, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
fix little bug in copula selection based on mBIC
stabilize BB7 copula pdf
fix threshold selection for (near-)independent data
fix vine copula selection for 1-dimensional models with discrete variables
fix user-visible variable types
Release following the updates of vinecopulib to 0.5.4, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
fix uninitialized number of parameters for TLL family
fix Kendall’s tau of Frank copula for par <= 3
fix dvinecop() when discrete variables are present
(#222)
Release following the updates of vinecopulib to 0.5.3, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
allow 1-dimensional models (#216)
make AIC default selection criterion (#213)
catch na in ktau_to_par (#214)
make Bicop/Vinecop objects indepent of copied-from-objects
enforce parameters bounds in tau_to_parameters for Archimedean families
Release following the updates of vinecopulib to 0.5.2, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
NEW FEATURES
single-integer constructors for
dvine_structure()/cvine_structure().
(#203)
add var_names = "hide" option in
plot.vinecop_dist(). (#203)
add function plot.rvine_matrix(). (#203)
BUG FIXES
fix bug for (negative) tau to parameter conversion for Frank family. (#207)
fix rare error
rvine_structure_sim()/rvine_matrix_sim()
safeguard "tll" family against comonotonic
data.
stabilize archimedean h-functions near independence.
Release following the updates of vinecopulib to 0.5.1, see https://github.com/vinecopulib/vinecopulib/releases.
BUG FIX
Release following the updates of vinecopulib to 0.5.0, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
NEW FEATURES
modelling discrete variables with bivariate or vine copulas. (#195)
selection of partially specified R-vine structures. (#195)
convenience classes
dvine_structure()/cvine_structure() for D- and
C-vine structures. (#195)
new criterion for tree selection: "joe" corresponds
to -log(1-r^2), where r is the pairwise partial correlation.
(#195)
random sampling of R-vine structures. (#197)
add weights argument to vine().
(#188)
parallelized fitting of margins in vine().
(#198)
API BREAK
var_types argument for discrete models has been
placed early in bicop()/vinecop() due to its importance.
This might break old code calling these functions with unnamed
arguments.BUG FIXES AND OTHER IMPROVEMENTS
better support for 0-truncated structures. (#195)
ensure consistency of TLL likelihood during and after fit. (#195)
fixed order of ranks in
pseudo_obs(.., ties.method = "first"). (#195)
safer computation of multivariate normal cdf. (#195)
improved memory efficiency. (#195)
Release following the updates of vinecopulib to 0.3.2, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
NEW FEATURES
improved extensibility for packages including on the C++-headers of vinecopulib (#178)
new EDA function pairs_copula_data()
(#181).
BUG FIXES
ensure that input and output type of pseudo_obs()
match (#182).
fix printing of "tll" family in `summary.vinecop()
(#183).
Release following the updates of vinecopulib to 0.3.1, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
NEW FEATURES
import vinecopulib 0.3.1 (#171)
improve documentation (#168, #170)
warning message for wrong family in itau method (#169)
refactoring for enhanced extensibility of the class
Vinecop (vinecopulib #407)
simplify algorithms by reversing definition of natural order (vinecopulib #387)
improve selection of truncation level (vinecopulib #373)
add truncate methods for TriangularArray,
RVineStructure and Vinecop (vinecopulib
#372)
BUG FIXES
BUG FIXES
fix non-portable use of log() in C++ code
(#147).
remove parallelized unit test to avoid segfault on Solaris (#147).
Release following the updates of vinecopulib to 0.3.0, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
NEW FEATURES
new generic truncate_model() to truncated vine
structures and models (#144).
new functions rosenblatt() and
inverse_rosenblatt() for computing the (inverse) Rosenblatt
transformation (#142).
faster algorithms for nonparametric copulas based on bilinear interpolation.
refactor vine structures and related algorithms with triangular arrays to improve efficiency of truncated models (#136).
new classes rvine_structure and
rvine_matrix for storing the vine structure including
as_- and is.-generics (#136).
allow for generating quasi-random numbers (#126).
improved parallelization: faster of fitting vine copula models and parallelized versions of many algorithms including pdf, cdf and simulation (#339, #363).
allow weights for observations (#118).
faster compilation using only a single wrapper file (#124).
improved print and summary generics (#131).
BUG FIXES
fix cdf of StudentBicop
improved numerical stability.
fix gcc-8 warning.
fix missing variable names for class vine.
Release following the updates of vinecopulib to 0.2.8, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
NEW FEATURES
new vine_dist and vine classes for data
with non-uniform margins (#97).
new function truncate_model() for
vinecop_dist and vine_dist objects (#95,
#97).
new convenience functions get_pair_copula(),
get_parameters(), get_ktau(),
get_family() for bicop_dist,
vinecop_dist and vine_dist objects (#95, #107,
#109).
new convenience functions get_matrix(),
get_all_pair_copulas(), get_all_parameters(),
get_all_ktaus(), get_all_families() for
vinecop_dist and vine_dist objects (#95, #107,
#109).
new (dim) and improved (print,
summary and logLik) generic methods for
vinecop_dist and vine_dist objects (#104,
#109, #110).
new function pseudo_obs to compute
pseudo-observations (#108).
improved documentation (#98, #100).
improved sanity checks and error messages (#99, #102).
BUG FIXES
make mcor correction less aggressive (#103).
fix truncation of pdf values (#103).
use increased search interval for parameter estimation when initial fit is unreasonable (#103).
ensure that boundaries are respected for Joe’s hinv
methods (#103).
improve numerical stability by more restrictive parameter bounds for Joe and BB7 copulas (#103).
Release following the updates of vinecopulib to 0.2.7, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
NEW FEATURES
"mcor".BUG FIXES
"tll".Patch of rvinecopulib 0.2.6.1.0.
BUG FIXES
Release following the updates of vinecopulib to 0.2.6, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
NEW FEATURES
add checks for data in (0, 1).
improved bandwidth selection for method "tll" by
scaling with maximum-correlation coefficient.
add mBICV criterion to select the truncation level and threshold
along with new function mBICV().
BUG FIXES
Release following the updates of vinecopulib to 0.2.4 and 0.2.5, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
NEW FEATURES
faster simulation and pdf functions for truncated vines.
speed up vine copula algorithms by pre-computing information related to the vine structure.
the selected threshold parameter can be returned from an
vinecop object.
BUG FIXES
make bb8 lower bound ensure feasible computations in
par_to_tau().
default initialize Rcout (#277).
fix storage order of pair copulas when structure is fixed.
fixed selection algorithm for threshold and truncation level.
Release following the update of vinecopulib to 0.2.3, see https://github.com/vinecopulib/vinecopulib/releases/tag/v0.2.3. The most relevant changes are summarized below.
NEW FEATURES
BUG FIXES
add safeguards for bicop()/vinecop()
called with insufficient data.
fix segfault issue in completing a truncated vine fit.
make par_method = "itau" respect the parameter
bounds.
Release following the updates of vinecopulib to 0.2.1 and 0.2.2, see https://github.com/vinecopulib/vinecopulib/releases/tag/v0.2.1 and https://github.com/vinecopulib/vinecopulib/releases/tag/v0.2.2. The most relevant changes are summarized below.
NEW FEATURES
faster vine copula estimation and selection by parallelizing further sub-routines.
enhanced cross-platform compatibility.
increased precision of maximum-likelihood estimators.
allow "loglik" as selection criterion.
BUG FIXES
fixed itau estimation method for Frank copulas (only
allowed for positive parameters).
make interpolation grid symmetric around (0.5, 0.5) again (for
"tll" estimator).
Release following the update of vinecopulib to 0.2.0, see https://github.com/vinecopulib/vinecopulib/releases/tag/v0.2.0. The most relevant changes are summarized below.
PACKAGING/DEPENDECY
the C++ core of the library (besides wrappers) is now header only, so other R packages can access its functionality easily via LinkingTo.
removed dependency on NLopt.
NEW FEATURES
NA handling.
parallelized selection/estimation of (pair-) copulas, see the
cores argument in bicop() and
vinecop().
efficient storage and fitting of truncated vines.
Brent line search for (profile-) maximum-likelihood estimation of one-parameter families.
more restrictive parameter bounds for Archimedean families, ensuring their numerical stability.
BUG FIXES
error thrown whenever vinecop() or
bicop() are called with data sets containing a single
row.
made order of rvinecop(..., U) consistent for d = 2
and d > 2.
fixed bug in interpolation of kernel estimators near upper right corner.
interpolation grid is now symmetric around (0.5, 0.5).
stabilized quadratic tll estimator near zero.
stabilized Archimedean pdfs.
BUG FIXES
Initial release.