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.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)
Release following the updates of vinecopulib to 0.6.1, see https://github.com/vinecopulib/vinecopulib/releases. The most relevant changes are summarized below.
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.
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)
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).
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.