Changed the dynamic diagnostics CRPS calculation to use a finite
integrated quantile-score approximation over posterior predictive
empirical quantiles. The default grid is
seq(0.01, 0.99, by = 0.01), with optional user-supplied
quantile levels and weights through
exdqlmDiagnostics().
Added exdqlmForecastDiagnostics() for held-out
exdqlmForecast() objects, reporting target-quantile check
loss and CRPS from posterior predictive forecast draws without
redefining article-side scoring helpers.
Added optional plotting controls to exdqlmPlot() and
compPlot(), including plot = FALSE summary
extraction and user-supplied axis limits/labels, while preserving the
existing plotting defaults.
Added coefficient-interval summaries to
exalStaticDiagnostics() objects and a
plot(..., type = "coefficients") display for static
LDVB/MCMC coefficient comparisons, with optional shared axis limits,
legend labels, and a beta.ref overlay for simulation
benchmarks.
Fixed exdqlmForecast() handling of future evolution
matrices so constant fGG matrices expand across the
forecast horizon and time-varying fGG arrays are validated
against horizon k.
Replaced the stochastic FNN::KL.divergence() dynamic
diagnostic with a deterministic one-dimensional semiclosed KL normality
diagnostic for MAP standardized forecast errors. The scalar
KL is the primary user-facing calibration diagnostic,
KL (flipped) is a secondary sensitivity diagnostic, and
by-k sensitivity/Gaussian plug-in checks are stored under
kl.details rather than as competing top-level KL
fields.
Corrected the dynamic diagnostic KL direction so KL now
corresponds to the documented forecast-error-to-standard-normal
diagnostic KL(P_error || N(0,1)); KL (flipped)
reports the reverse direction.
exdqlm 0.4.0
New
Consolidated CRAN release (updating CRAN 0.3.0) that bundles several
internal development branches in one submission.
exdqlmLDVB: Laplace-Delta variational Bayes routine for
dynamic quantile state-space fitting under the extended asymmetric
Laplace error distribution.
Reduced-model controls for dynamic routines
(exdqlmISVB(), exdqlmLDVB(),
exdqlmMCMC()) through dqlm.ind = TRUE, fixing
gamma = 0 for AL/DQLM inference when desired.
Added synthesis helper quantileSynthesis() for
combining posterior quantile-draw objects.
Added dynamic regression-block construction with
regMod() and static exAL inference routines for VB/LDVB and
MCMC workflows.
Added static reduced AL support (dqlm.ind = TRUE) in
exalStaticLDVB() and exalStaticMCMC().
Added static coefficient prior options for ridge and regularized
horseshoe (beta_prior = "ridge" / "rhs") in
both static LDVB and static MCMC.
Added additive static rhs_ns prior support for both
static LDVB and static MCMC (beta_prior = "rhs_ns"),
including slab-control aliases (a_zeta,
b_zeta, zeta2_fixed) while preserving existing
rhs and ridge behavior.
Added exdqlmTransferLDVB() for post-fit transformed
summaries analogous to the ISVB path.
Added exdqlmTransferMCMC() for fixed-lam
transfer-function exDQLM fitting under the dynamic MCMC workflow.
Documentation updates for new APIs: explicit argument contracts
(types/dims), return-value structure, and CRAN-safe examples aligned
with existing package style.
Standardized VB diagnostics traces across VB fits via
fit$diagnostics$vb_trace, exposing iteration-wise ELBO,
sigma, gamma, and convergence deltas in a
plot-ready table while preserving the existing engine-specific
diagnostics.
Standardized the main user-facing naming scheme around
exalStatic..., exdqlmTransfer..., and
quantileSynthesis(), while retaining documented legacy ISVB
entry points where needed for backward-compatible workflows.
Added climateIndices, a documented monthly NOI/AMO
climate-index data frame used for reproducible external-regressor
examples.
Fixes and clarifications
Normalized the shared dynamic exDQLM VB policy around LDVB:
exdqlmLDVB() and exdqlmTransferLDVB() are now
the main VB entry points, while exdqlmISVB() and
exdqlmTransferISVB() are documented as legacy compatibility
paths.
Added al.ind as a static-model convenience alias for
dqlm.ind in exalStaticLDVB() and
exalStaticMCMC(), with conflict checks when both flags are
provided.
Changed fix.sigma defaults from TRUE to
FALSE for the shared dynamic exDQLM VB entry points and the
reduced dynamic DQLM CAVI helper, while preserving explicit fixed-sigma
workflows when users request them.
Fixed R-path FFBS backward transition indexing to use
G_{t+1} for parity with the C++ bridge and theory
derivations.
Fixed static MCMC psi = 0 boundary behavior in exAL
sigma updates to avoid unstable scale draws in reduced/near-reduced
settings.
Aligned static LDVB (sigma, gamma) transformed
objective/entropy handling with the Jacobian contract used in the static
theory reference.
Corrected the positive-truncated-normal entropy sign used in exAL
LDVB monitored ELBO diagnostics and centralized the shared entropy
calculation.
Clarified that C++ elbo.part in kalman.cpp
is an internal diagnostic; package-level ELBO reporting remains R-level
contract output.
Added dedicated static-fit object generics for
exalStaticMCMC and exalStaticLDVB and aligned
post-fit compatibility for exdqlm classes.
Replaced deprecated arma::is_finite(...) usage in FFBS
C++ with std::isfinite(...) to eliminate compiler
deprecation warnings.
Optional C++ builder acceleration remains opt-in
(exdqlm.use_cpp_builders default FALSE); no
backend default flip in this release.
Optional C++ post-predictive sampler remains opt-in
(exdqlm.use_cpp_postpred default FALSE).
Transfer-function wrappers now share the same augmentation helper
and accept either one or two discount factors through
tf.df.
Shared entry points now apply a conservative automatic warmup
baseline for the most failure-prone common blocks: RHS-family
tau scheduling remains on by default, while exAL VB/MCMC
entry points apply a light (sigma, gamma) warmup unless
users explicitly override it through vb_control or
mcmc_control.
Streamlined default LDVB/MCMC console progress lines to prioritize
run phase, iteration, keep counters, acceptance summaries, and runtime
while leaving full sigma/gamma histories in
diagnostics objects and callbacks.
Clarified the BTflow dataset provenance as observed
monthly USGS streamflow and removed the unused BTprec
dataset from the package data API.
Slimmed the shipped climate-index data API to the two manuscript
predictors used in the Big Trees example.
exdqlm 0.3.0
C++ bridge and optional samplers
Optional C++ Kalman filter/smoother bridge and sampling kernels
(theta, s_t, u_t).
Runtime toggles via options(exdqlm.use_cpp_kf = TRUE)
and options(exdqlm.use_cpp_samplers = TRUE).
Defaults preserve the R implementation for backward
compatibility.
ELBO diagnostics and stopping
New diagnostics$elbo recorded per ISVB iteration.
Optional ELBO-based stopping via
options(exdqlm.compute_elbo = TRUE) and
options(exdqlm.tol_elbo = 1e-4).
Numerical robustness
Stabilized log-determinant computations and truncated-normal entropy
updates.
Guard rails for edge cases in intermediate calculations.
Build & hygiene
OpenMP usage is optional and gated by compiler support.
Makevars link against R BLAS/LAPACK; internal headers
centralized.
Docs & tests
Runtime options documented; parity checks added for R vs C++
paths.
exdqlm 0.2.0
New AL/exAL helper functions with C++ backends:
dexal(), pexal(), qexal(),
rexal() for density, cdf, quantile and random
generation.
get_gamma_bounds() to compute valid (L, U)
bounds for gamma given p0.
Implementation details:
Core numerics in C++ via Rcpp/RcppArmadillo and BH (Boost) for
root-finding and Φ.
Parameter validation to keep gamma within bounds;
clearer errors.
Updated exdqlmISVB() and exdqlmMCMC() to use rexal()
exdqlmChecks() renamed exdqlmDiagnostics()
Improved the performance of plotting functions exdqlmPlot() and
compPlot()
Return changes
functions polytrendMod(), and seasMod() now return objects of class
‘exdqlm’
function exdqlmISVB() and (inherently) exdqlmTransferISVB() now
return objects of class ‘exdqlmISVB’
function exdqlmMCMC() now returns objects of class ‘exdqlmMCMC’
function exdqlmDiagnostics() now returns objects of class
‘exdqlmDiagnostic’
function exdqlmForecast() now returns objects of class
‘exdqlmForecast’
returns from exdqlmMCMC(), exdqlmISVB(), and exdqlmTransferISVB()
now include data (y)
Input changes
y removed from the inputs of exdqlmDiagnostics(), exdqlmForecast(),
compPlot(), and exdqlmPlot()
Added generics_etc.R which includes generics & other functions
for the objects of class ‘exdqlm’, ‘exdqlmISVB’,‘exdqlmMCMC’,
‘exdqlmDiagnostic’, & ‘exdqlmForecast’
Removed dlmMod.R and replaced with the more robust function
as.exdqlm (in generics_etc.R), which creates ‘exdqlm’ objects
Removed combineMods.R and replaced with addition for ‘exdqlm’
objects (in generics_etc.R)
Testing & docs:
Unit tests for pdf/cdf/quantile inverses and sampling sanity
checks.
Package-level docs updated; vignettes intentionally
deferred for a later release.
exdqlm 0.1.4
CRAN hygiene & maintenance
Removed legacy MD5 file; added ignore so it won’t be
re-created in builds.
Dropped stray placeholder files (e.g., .gitkeep) from
package sources.