| fdp.mle {waveslim} | R Documentation |
Wavelet-based Maximum Likelihood Estimation for a Fractional Difference Process
Description
Parameter estimation for a fractional difference (long-memory, self-similar) process is performed via maximum likelihood on the wavelet coefficients.
Usage
fdp.mle(y, wf, J = log(length(y), 2))
Arguments
y |
Dyadic length time series. |
wf |
Name of the wavelet filter to use in the decomposition. See
|
J |
Depth of the discrete wavelet transform. |
Details
The variance-covariance matrix of the original time series is approximated
by its wavelet-based equivalent. A Whittle-type likelihood is then
constructed where the sums of squared wavelet coefficients are compared to
bandpass filtered version of the true spectrum. Minimization occurs only
for the fractional difference parameter d, while variance is estimated
afterwards.
Value
List containing the maximum likelihood estimates (MLEs) of d
and \sigma^2, along with the value of the likelihood for those
estimates.
Author(s)
B. Whitcher
References
M. J. Jensen (2000) An alternative maximum likelihood estimator of long-memory processes using compactly supported wavelets, Journal of Economic Dynamics and Control, 24, No. 3, 361-387.
McCoy, E. J., and A. T. Walden (1996) Wavelet analysis and synthesis of stationary long-memory processes, Journal for Computational and Graphical Statistics, 5, No. 1, 26-56.
Percival, D. B. and A. T. Walden (2000) Wavelet Methods for Time Series Analysis, Cambridge University Press.
Examples
## Figure 5.5 in Gencay, Selcuk and Whitcher (2001)
fdp.sdf <- function(freq, d, sigma2=1)
sigma2 / ((2*sin(pi * freq))^2)^d
dB <- function(x) 10 * log10(x)
per <- function(z) {
n <- length(z)
(Mod(fft(z))**2/(2*pi*n))[1:(n %/% 2 + 1)]
}
data(ibm)
ibm.returns <- diff(log(ibm))
ibm.volatility <- abs(ibm.returns)
ibm.vol.mle <- fdp.mle(ibm.volatility, "d4", 4)
freq <- 0:184/368
ibm.vol.per <- 2 * pi * per(ibm.volatility)
ibm.vol.resid <- ibm.vol.per/ fdp.sdf(freq, ibm.vol.mle$parameters[1])
par(mfrow=c(1,1), las=0, pty="m")
plot(freq, dB(ibm.vol.per), type="l", xlab="Frequency", ylab="Spectrum")
lines(freq, dB(fdp.sdf(freq, ibm.vol.mle$parameters[1],
ibm.vol.mle$parameters[2]/2)), col=2)