initialize_weightvector
returns a unit norm (in \(\ell^2\))
vector \(\mathbf{w}_0 \in R^K\) that can be used as the starting
point for any iterative ForeCA algorithm, e.g.,
foreca.EM.one_weightvector
. Several
quickly computable heuristics are available via the method
argument.
initialize_weightvector(U = NULL, f.U = NULL, num.series = ncol(U),
method = c("rnorm", "max", "SFA", "PCA", "rcauchy", "runif", "SFA.slow",
"SFA.fast", "PCA.large", "PCA.small"), seed = sample(1e+06, 1), ...)
a \(T \times K\) array with T
observations from the
\(K\)-dimensional whitened (whiten
)
time series \(\mathbf{U}_t\). Can be a matrix
, data.frame
, or a
multivariate ts
object.
multivariate spectrum of class 'mvspectrum'
with
normalize = TRUE
.
positive integer; number of time series \(K\) (determines the length
of the weightvector). If num.series = 1
it simply returns
a 1 \(\times\) 1 array equal to 1
.
string; which heuristics should be used to generate a good starting \(\mathbf{w}_0\)?
Default: "rnorm"
; see Details.
non-negative integer; seed for random initialization which will be returned for reproducibility. By default it sets a random seed.
additional arguments
numeric; a vector of length \(K\) with unit norm in \(\ell^2\).
The method
argument specifies the heuristics that is used to get a good
starting vector \(\mathbf{w}_0\):
"max"
vector with all \(0\)s, but a \(1\) at the position
of the maximum forecastable series in U
.
"rcauchy"
random start using rcauchy(k)
.
"rnorm"
random start using rnorm(k, 0, 1)
.
"runif"
random start using runif(k, -1, 1)
.
"PCA.large"
first eigenvector of PCA (largest variance signal).
"PCA.small"
last eigenvector of PCA (smallest variance signal).
"PCA"
checks both small and large, and chooses the one with higher
forecastability as computed by Omega
..
"SFA.fast"
last eigenvector of SFA (fastest signal).
"SFA.slow"
first eigenvector of SFA (slowest signal).
"SFA"
checks both slow and fast, and chooses the one with higher
forecastability as computed by Omega
.
Each vector has length K and is automatically normalized to have unit norm in \(\ell^2\).
For the 'SFA*'
methods see sfa
.
Note that maximizing (or minimizing) the lag \(1\) auto-correlation does
not necessarily yield the most forecastable signal, but it's a good start.
# NOT RUN {
XX <- diff(log(EuStockMarkets))
# }
# NOT RUN {
initialize_weightvector(U = XX, method = "SFA")
# }
# NOT RUN {
initialize_weightvector(num.series = ncol(XX), method = "rnorm")
# }
Run the code above in your browser using DataLab