Follow-up to a newer R-devel check flagged after the
0.2.8 submission.
?common-arguments (an internal, non-callable Rd
topic used only via @inheritParams to share argument docs
across functions) with @keywords internal, fixing the
R CMD check NOTE “Rd files without : common-arguments.Rd
should not be documented without ” seen on a newer R-devel
build.Maintenance release to address R CMD check issues
reported by CRAN.
Rd NOTEs in ?foreca and
?initialize_weightvector by using \describe{}
instead of \itemize{} for
\item{label}{description} lists.inst/CITATION: replace the deprecated
citEntry() / personList() with
bibentry() / c(person(...)).jmlr.org/proceedings URL returned 404), plus
http -> https and other link fixes in
?whiten, ?discrete_entropy and the
vignette..Rbuildignore so development-only files are no
longer shipped in the tarball.BugReports field pointing at the GitHub issue
tracker, and run R CMD check on every push/PR via GitHub
Actions."_PACKAGE" instead of the
deprecated @docType package.Suggests: fBasics and
nlme.Imports: reshape2 (no
reshape2 function was called anywhere; plotting uses
graphics::matplot directly). One fewer dependency, and
reshape2 is superseded upstream.tol in
?complete-controls. Whenever tol is not
supplied – i.e. in essentially every call –
complete_algorithm_control() fills in
tol = 1e-06, not the 1e-03 that was previously
documented. No behavior change: the tight tolerance is
deliberate and quality-improving, since a looser one stops the EM
algorithm early and yields measurably less forecastable components. On
EuStockMarkets (n.comp = 4, fixed seed),
relaxing tol to 1e-03 costs about 0.2
percentage points of Omega on the leading ForeC (6.34 ->
6.13). Only a bare complete_algorithm_control() call with
no arguments uses the formal-argument default of
1e-03.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?