Fix MCMC algorithm for include_mean = TRUE
case.
Fix predictive distribution update codes (predict()
, forecast_roll()
, and forecast_expand()
for ldltmod
and svmod
classes).
Fix out-of-forecasting (forecast_roll()
and forecast_expand()
) result process codes.
When using GIG generation in MCMC, it has maximum iteration numbers of while statement.
Defined USE_RCPP
macro in the C++ header so that Rcpp source usage works fine.
Use Signal Adaptive Variable Selector (SAVS) to generate sparse coefficient from shrinkage priors.
var_bayes()
and vhar_bayes()
now handle both shrinkage priors and stochastic volatility.
bvar_ssvs()
, bvar_horseshoe()
, bvar_sv()
, bvhar_ssvs()
, bvhar_horseshoe()
, and bvhar_sv()
are deprecated, and will be removed in v2.1.0 with their source functions.
set_horseshoe()
has additional setting for group_shrinkage
. Horseshoe sampling now has additional group shrinkage level parameters.
set_ssvs()
now additionally should specify different Beta hyperparameters for each own-lag and cross-lag.
set_ssvs()
sets scaling factor and inverse-gamma hyperparameters for coefficients and cholesky factor slab sd.
Use full bayesian approach to SSVS spike and slab sd's instead of semi-automatic approach, in var_bayes()
and vhar_bayes()
.
MCMC functions return give $param
and $param_names
, not individual $*_record
members.
sim_gig()
generates Generalized Inverse Gaussian (GIG) random numbers using the algorithm of R package GIGrvg
.
set_dl()
specifies Dirichlet-Laplace (DL) prior in var_bayes()
and vhar_bayes()
.
set_ng()
specifies Normal-Gamma (NG) prior in var_bayes()
and vhar_bayes()
.
bvar_sv()
and bvhar_sv()
supports hierarchical Minnesota prior.
Added regularization step in internal Normal posterior generation function against non-existing LLT case.
Added BOOST_DISABLE_ASSERTS
flag against boost
asserts.
spillover()
computes static spillover given model.
dynamic_spillover()
computes dynamic spillover given model.
predict()
, forecast_roll()
, and forecast_expand()
with LDLT models can use CI level when adding sparsity.
predict()
, forecast_roll()
, and forecast_expand()
of ldltmod
have sparse
option to use sparsity.
predict()
, forecast_roll()
, and forecast_expand()
with SV models can use CI level when adding sparsity.
predict()
, forecast_roll()
, and forecast_expand()
of svmod
have sparse
option to use sparsity.
Out-of-sample forecasting functions are now S3 generics (forecast_roll()
and forecast_expand()
).
Add Rolling-window forecasting for LDLT models (forecast_roll.ldltmod()
).
Add Expanding-window forecasting for LDLT models (forecast_expand.ldltmod()
).
Add Rolling-window forecasting for SV models (forecast_roll.svmod()
).
Add Expanding-window forecasting for SV models (forecast_expand.svmod()
).
When forecasting SV models, it is available to choose whether to use time-varying covariance (use_sv
option, which is TRUE
by default).
forecast_roll()
and forecast_expand()
can implement OpenMP multithreading, except in bvarflat
class.
If the model uses multiple chain MCMC, static schedule is used in forecast_roll()
and dynamic schedule in forecast_expand()
.
sim_mniw()
output format has been changed into list of lists.
Now can use MNIW generation by including header (std::vector<Eigen::MatrixXd> sim_mn_iw(...)
).
Compute LPL inside forecast_roll.svmod()
and forecast_expand.svmod()
using lpl
option.
Instead, lpl
method is removed.
Fix internal vectorization and unvectorization behavior.
Used Eigen 3.4 feature (reshaped()
) to solve these (RcppEigen >= 0.3.4.0.0
).
Start to implement OOP in C++ source for each model, ready for major update.
Add SV specification (sv_spec
argument) in bvhar_sv()
and bvar_sv()
(set_sv()
).
Prevent SSVS overflow issues by using log-sum-exp trick when computing Bernoulli posterior probability.
Add separate constant term prior specification (intercept
) in bvhar_sv()
and bvar_sv()
(set_intercept()
).
Convert every header file inst/include to header-only format. This enables external inclusion of our classes, structs, and Rcpp functions by using LinkingTo
(in R package development) or // [[Rcpp::depends(RcppEigen, BH, bvhar)]]
.
Use OpenMP parallel for loop
Progress bar will show the status only for master thread when OpenMP enabled.
Interruption detect will just save values and break the loop, not return immediately.
Do burn-in and thinning in each returnRecords()
method to make pre-process parallel chains easier.
Use boost library (BH
package) RNG instead of Rf_* RNG of Rcpp
for thread-safety.
Introduce function overloading to internal Rcpp random generation functions temporarily.
It's for maintaining set.seed()
usage of some functions.
Replace progress bar of RcppProgress
package with custom header (bvharprogress.h
).
Replace checking user interruption in the same package with custom header (bvharinterrupt.h
).
Fix triangular algorithm. Found missing update of some variables (bvar_sv()
and bvhar_sv()
).
For new research, add new features for shrinkage priors.
Add Shrinkage priors SSVS and Horseshoe (bvar_ssvs()
, bvhar_ssvs()
, bvar_horseshoe()
, and bvhar_horseshoe()
).
bvar_sv()
, bvhar_sv()
works with SSVS (set_ssvs()
) and Horseshoe (set_horseshoe()
).
Update the shrinkage structure in the spirit of Minnesota. (minnesota = TRUE
, minnesota = c("no", "short", "longrun")
).
Stochastic volatility models implement corrected triangular algorithm of Carriero et al. (2021).
License has been changed to GPLv3.
Remove unnecessary Rcpp plugins in source files.
"Bayesian Vector Heterogeneous Autoregressive Modeling" has been accepted in JSCS 🎉
Update to major version before publication.
Add Stochastic Search Variable Selection (SSVS) models for VAR and VHAR (bvar_ssvs()
and bvhar_ssvs()
)
Can do corresponding variable selection (summary.ssvsmod()
)
bvar_sv()
and bvhar_sv()
).Fix not working Hierarchical natural conjugate MNIW function (bvar_niwhm()
).
Use posterior
package for summary.normaliw()
to improve processing and printing.
Now can use heavy-tailed distribution (Multivariate t-distribution) when generating VAR and VHAR process (sim_var()
and sim_vhar()
).
Also provide independent MVT generation function (sim_mvt()
).
Added method = c("nor", "chol", "qr")
option in VAR and VHAR fitting function to use cholesky and Householder QR method (var_lm()
and vhar_lm()
).
Now include_mean
works internally with Rcpp
.
Add partial t-test for each VAR and VHAR coefficient (summary.varlse()
and summary.vharlse()
).
Appropriate print method for the updated summary method (print.summary.varlse()
and print.summary.vharlse()
).
Can compute impulse response function for VAR (varlse
) and VHAR (vharlse
) models (analyze_ir()
).
Can draw impulse -> response plot in grid panels (autoplot.bvharirf()
).
Changed the way of specifying the lower and upper bounds of empirical bayes (bound_bvhar()
).
Added Empirical Bayes vignette.
sim_mgaussian()
).choose_bayes()
and bound_bvhar()
).oxfordman
more elaborately (it becomes same with etf_vix
).Added weekly and monthly order feature in VHAR family (vhar_lm()
and bvhar_minnesota()
).
Other functions are compatible with har order option (predict.vharlse()
, predict.bvharmn()
, and choose_bvhar()
)
choose_bvar()
and choose_bvhar()
).gg_loss()
).Added rolling window and expanding window features (forecast_roll()
and forecast_expand()
).
Can compute loss for each rolling and expanding window method (mse.bvharcv()
, mae.bvharcv()
, mape.bvharcv()
, and mape.bvharcv()
).
Fix Marginal likelihood form (compute_logml()
).
Optimize empirical bayes method using stabilized marginal likelihood function (logml_stable()
).
Change the way to compute the CI of BVAR and BVHAR (predict.bvarmn()
, predict.bvharmn()
, and predict.bvarflat()
)
Used custom random generation function - MN, IW, and MNIW based on RcppEigen
Added Bayesian model specification functions and class (bvharspec
).
Replaced hyperparameters with model specification in Bayesian models (bvar_minnesota()
, bvar_flat()
, and bvhar_minnesota()
).
var_lm()
, vhar_lm()
, bvar_minnesota()
, bvar_flat()
, and bvhar_minnesota()
).NEWS.md
file to track changes to the package.