draw() has now a second parameter format with no default. This may break
codes that used the fact that the control parameter was previously the
second one.digits parameter of draw.covlmc() has been removed and replaced by a
similar parameter in draw_control()draw.covlmc() have changed (issue #66):
p_value is now FALSE by defaultp_value is TRUE the p-values are represented between separators
given by the open_p_value and close_p_value members of the control
list. Defaults are < and >intercept_sep member of the control list. Defaults
to " & "" ~ "time_sep member
of the control list. The default value is set to " | " and the
time_sep parameter has been removed from draw.covlmc()constant_as_prob is set to TRUE which modifies also
the default displaydraw_control() has been significantly changed (issue #66)
which should break most customisation code at the level of characters used
by draw() to display a modeldts)In order to ease the introduction of multiple time series support, a single
discrete time series can now be represented by the dts class, via the dts()
function (see issue #76). All functions that use discrete time series now accept
objects of this class in addition to simple vectors of a supported type
(integer, factor, character and logical). This applies to model
estimation functions such as vlmc() or covlmc(), to model selection functions
(e.g. tune_vlmc) but also to functions that use new data such
loglikelihood() and predict.vlmc().
draw())A major change of draw() is the support of multiple output formats. This is
done via a format parameter. It supports currently:
mixvlmc with format="text". This is
the default text based representation.format="latex" based on the LaTeX package forest
(https://ctan.org/pkg/forest) as per issue #66. This can be used to include
(CO)VLMC models in LaTeX document, for instance when using rmarkdown or quarto.In addition, text based model representation has been improved (as per issue #66) as follows:
mixvlmc.charset can be used to select the characters
used by draw() when format="text" between pure ASCII and UTF-8draw_control() to
charset_ascii() and charset_utf8()draw.covlmc() function uses arguably better default parameters
(described above)draw.covlmc() as a VLMC node, that is with the probability distribution
on the state space that it representsThis release has no visible changes and fixes internal issues:
mode parameter of cutoff.vlmc() has been renamed to scaletype parameter has been removed from contexts() variants and the
default result format has been modified significantlycounts parameter from contexts.vlmc() and contexts.covlmc() has
been replaced by a logical parameter named localcontexts() sequences are now reported by default in temporal orderThe main major new feature of this version is the inclusion of a C++
implementation of context tree and VLMC construction. A new option
mixvlmc.backend can be used to switch globally from the original "R"
implementation to the new "C++" back end. A new backend parameter has
been added to ctx_tree(), vlmc() and tune_vlmc() to enable local back end
selection.
The C++ implementation is significantly faster than the R implementation, at
least by a factor 10. While it has been thoroughly tested, it is still
considered experimental notably because it does not apply to COVLMC (setting the
global option to "C++" has not effect on COVLMC model construction). For
context trees and VLMC, results should not depend on the back end, at least
within numerical precision. The only notable difference is the ordering of the
contexts which differs between back ends: in a call to contexts(), the first
context for the R back end will generally not be the first context for the C++
back end.
contexts() can now report the positions of each context in the original time
seriesctx_node objects
using the find_sequence() function. A collection of new functions can be
used to manipulate the nodes and gain fine grain information on the
corresponding sequences (issue #50).contexts() reports now contexts as a list of ctx_node objectspredict.vlmc() and predict.covlmc() can be used to make one
step ahead predictions of a time series based on a (CO)VLMC model (issue #46).
Those function are documented in a new vignette (vignette("prediction"))logLik.vlmc(), logLik.covlmc()
loglikelihood() and loglikelihood.covlmc() have been revised, expanded to
include three possible definitions of the likelihood function, and documented
in a new vignette (vignette("likelihood"))tune_vlmc() and tune_covlmc() can be used with the different likelihood
function definitionstune_vlmc() and tune_covlmc() can be plotted using base R
graphics or ggplot2 (issue #36)tune_covlmc() can trim the best model (and the initial one) if asked totrim.covlmc() implements simple trimming for VGAM based objects (issue #48)cutoff() uses a new tolerance parameter to avoid reporting cut off values
that are almost identical due to numerical imprecisionsimulate.vlmc() implements a user specified burn in period (issue #40)simulate.vlmc() and simulate.covlmc() now handle the random generator
state as does stats::simulate() (issue #56)simulate.covlmc()
unreliable for state spaces with three or more statessimulate.covlmc() that occurred in contexts with a longer
self memory compared to their covariate memorymetrics.vlmc() and align the results with the ones
obtained by using direct calculation on the results of predict.vlmc()contexts()
resultsctx_tree() documentation and its default valuecontexts() documentation and its default valuetrim.covlmc()simulate.vlmc() and
simulate.covlmc()NEWS.md file to track changes to the package.