Omega {ForeCA}R Documentation

Estimate forecastability of a time series

Description

An estimator for the forecastability Ω(xt)\Omega(x_t) of a univariate time series xtx_t. Currently it uses a discrete plug-in estimator given the empirical spectrum (periodogram).

Usage

Omega(
  series = NULL,
  spectrum.control = list(),
  entropy.control = list(),
  mvspectrum.output = NULL
)

Arguments

series

a univariate time series; if it is multivariate, then Omega works component-wise (i.e., same as apply(series, 2, Omega)).

spectrum.control

list; control settings for spectrum estimation. See complete_spectrum_control for details.

entropy.control

list; control settings for entropy estimation. See complete_entropy_control for details.

mvspectrum.output

an object of class "mvspectrum" representing the multivariate spectrum of Xt\mathbf{X}_t (not necessarily normalized).

Details

The forecastability of a stationary process xtx_t is defined as (see References)

Ω(xt)=1ππfx(λ)logfx(λ)dλlog2π[0,1] \Omega(x_t) = 1 - \frac{ - \int_{-\pi}^{\pi} f_x(\lambda) \log f_x(\lambda) d \lambda }{\log 2 \pi} \in [0, 1]

where fx(λ)f_x(\lambda) is the normalized spectral density of xtx_t. In particular ππfx(λ)dλ=1 \int_{-\pi}^{\pi} f_x(\lambda) d\lambda = 1.

For white noise εt\varepsilon_t forecastability Ω(εt)=0\Omega(\varepsilon_t) = 0; for a sum of sinusoids it equals 100100 %. However, empirically it reaches 100%100\% only if the estimated spectrum has exactly one peak at some ωj\omega_j and f^(ωk)=0\widehat{f}(\omega_k) = 0 for all kjk\neq j.

In practice, a time series of length T has TT Fourier frequencies which represent a discrete probability distribution. Hence entropy of fx(λ)f_x(\lambda) must be normalized by logT\log T, not by log2π\log 2 \pi.

Also we can use several smoothing techniques to obtain a less variance estimate of fx(λ)f_x(\lambda).

Value

A real-value between 00 and 100100 (%). 00 means not forecastable (white noise); 100100 means perfectly forecastable (a sinusoid).

References

Goerg, G. M. (2013). “Forecastable Component Analysis”. Journal of Machine Learning Research (JMLR) W&CP 28 (2): 64-72, 2013. Available at http://jmlr.org/proceedings/papers/v28/goerg13.html.

See Also

spectral_entropy, discrete_entropy, continuous_entropy

Examples


nn <- 100
eps <- rnorm(nn)  # white noise has Omega() = 0 in theory
Omega(eps, spectrum.control = list(method = "pgram"))
# smoothing makes it closer to 0
Omega(eps, spectrum.control = list(method = "mvspec"))

xx <- sin(seq_len(nn) * pi / 10)
Omega(xx, spectrum.control = list(method = "pgram"))
Omega(xx, entropy.control = list(threshold = 1/40))
Omega(xx, spectrum.control = list(method = "mvspec"),
      entropy.control = list(threshold = 1/20))

# an AR(1) with phi = 0.5
yy <- arima.sim(n = nn, model = list(ar = 0.5))
Omega(yy, spectrum.control = list(method = "mvspec"))

# an AR(1) with phi = 0.9 is more forecastable
yy <- arima.sim(n = nn, model = list(ar = 0.9))
Omega(yy, spectrum.control = list(method = "mvspec"))


[Package ForeCA version 0.2.7 Index]