pspectrum from psd package as a replacement for sapa::SDF. Not recommended for
use in production yet since psd::psectrum does not preserve spectrum estimates from
multivariate spectrum to univariate, i.e., spectrum of linear combination does not equal
linear combination (quadratic form) of spectrum. psd::pspectrum an be used to compute
univariate forecastability estimates based on a better (smoothed) estimates of periodogram
compared to raw spec.pgram.remove all dependencies and calls to sapa R package. In particular this
means no "wosa", "multitaper", or "direct" spectral method argument
anymore. Instead rely on "mvspec" in the astsa package.
This is (unfortunately) necessary since ifultools and all its dependencies were removed from CRAN by 2020-06-09. sapa was the workhorse package for ForeCA.
ForeCA compatible with R 4.0.0expect_true wherever possible)quadratic_form now computes the vector product with the transpose and
conjugate of the vector, i.e., the Hermitian of the vector. Also added small
speed up using crossprod function.sqrt_matrix did not work correctly for singular matrices (zero eigenvalue).
Fixed issue with numerical precision errors testing for equality to zero. Now
throws an error if matrix is not of full rank and the inverse is required.fill_hermitian() is now a public function (and added tests)foreca.EM.E_and_M_step as a wrapper for foreca.EM.E_step followed
by foreca.EM.M_step.TRUE/FALSE "normalized" attribute to objects of class
mvspectrum. This speeds up computation and checks significantly
since check_mvspectrum_normalized
only needs to check the attribute, rather than computing the sum and
comparing it to identity matrix."lag window" option for mvspectrum since it does not work
well with normalize_mvspectrum.plot.mvspectrum S3 methodnormalize_mvspectrum() normalizes by left and right multiplication of
inverse square root of frequency total aggregate estimate. This fixes
the issue with different results of normalization based on multivariate vs.
univariate spectra estimation.print() statement when running foreca() (displayed
Omega scores of the final ForeCs)sqrt_matrix threw an error if input matrix had complex-valued
eigen-values (since it checked for negative values). Fixed now.nrow in diag() if n.comp=1 in foreca.multiple_weightvectors
(otherwise it generated non-comformable arrays error).test_mvspectrum()1e-6 (see
complete_algorithm_control())A bug-fix release and more modular, less repetitive coding under the hood; results in improved performance of the main algorithms.
Main notable change for users: to specify spectrum and entropy estimation use
spectrum.control and entropy.control. Otherwise no relevant visible
user-interface changes.
Also review the manual; it has been very thoroughly reviewed.
sqrt_matrixcomplete_entropy_controlcomplete_spectrum_controlcomplete_algorithm_controlcheck_whitenedcheck_mvspectrum_normalizedweightvector2entropy_wcovmvpgramprint.foreca S3 methodOmega and several foreca.* functions changed arguments:
spectrum.conrol = list(...) is the new way to specify spectrum.method,
smoothing.entropy.control = list(...) is the new way to specify entropy.method,
threshold, prior.weight."mvfft" default for spectrum estimation, using mvfft in R. This
avoids the requirement to have sapa or astsa installed.foreca.one_weightvector and foreca.multiple_weightvectors wrappers
for more modular and less repititve coding.prior.weight = 1e-03 in order to avoid log(0) throughout
the computations. If you don't want this, you have to explicitly specify
prior.weight = 0 in the entropy.control argument.spectrum.methods for estimation of the
spectrum/spectral density in the complete_spectrum_control help page.foreca.*() functions only accept whitened time series U, not series.
Only foreca() directly accepts the original (unwhitened) series. Use U <- whiten(series)$U to obtain the whitened series.foreca.EM: use foreca(..., algorithm.type = "EM") directly.R.utils::wrap got replaced by base::aperm.method argument in several functions.)spectral_entropy now only works with a spectral density input f.U; not
with series or spectrum.estimate.whiten() (thanks to Bjoern Weghenkel for pointing this out):
initialize_weightvector used the minimum Omega vector, not maximum, for
method = "max".mvspectrum: the smooth univariate spectrum estimate (smoothing = TRUE)
uses an exponential distribution with a logarithmic link function in the
mgcv::gam function.discrete_entropy:
prior.weight is now between 0 and 1, not just greater than 0.
can be done just with the prior.weight argument.''MLE'' is a valid method now. If you want to use ''smoothed'', then thiscontinuous_entropy changed from a and
b to lower and upper.eigen() calls got symmetric = TRUE. About 3x faster.initialize_weightvector have the r prefix, i.e.,
"rnorm" instead of "norm". Same for "cauchy" and "unif".foreca.EM.opt_weightvector changed to foreca.EM.one_weightvector._) in argument names to dot (.). E.g., max_iter to
max.iter= to <- assignment operator (big thanks to tidy.source())checkUsage())NEWS file and edited to conform to proper markdown formatmethod argument in foreca() to algorithm.typeEM class, to its own
function (initialize_weightvector())"burg" in spec.ar()tol, nstart, and max.iter in foreCA.EM() into a control list
(where nstart became num.starts)plot.foreca.EM.opt_weightvectormvspectrum2wcov()mvspectrum() (set detrend = FALSE and fast = FALSE in
astsa::mvspec)T/2 +/- 1 depending on even/odd sample size)fill_symmetric() (double counting diagonal; only affected SDF
type estimation)EM or MLE). E.g., ForeCA.EM to foreca.EM;foreca.one_weightvector() to foreca.EM.opt_weightvector()ForeCA.EMFirst version 0.0.1 written by Georg M. Goerg on May 14, 2012.
data.table package?