Multiresolution Analysis of Time Series
Description
This function performs a level J additive decomposition of the input vector or time series using the pyramid algorithm (Mallat 1989).
Usage
1  mra(x, wf = "la8", J = 4, method = "modwt", boundary = "periodic")

Arguments
x 
A vector or time series containing the data be to
decomposed. This must be a dyadic length vector (power of 2) for

wf 
Name of the wavelet filter to use in the decomposition. By
default this is set to 
J 
Specifies the depth of the decomposition. This must be a number less than or equal to log(length(x),2). 
method 
Either 
boundary 
Character string specifying the boundary condition.
If 
Details
This code implements a onedimensional multiresolution analysis introduced by Mallat (1989). Either the DWT or MODWT may be used to compute the multiresolution analysis, which is an additive decomposition of the original time series.
Value
Basically, a list with the following components
D? 
Wavelet detail vectors. 
S? 
Wavelet smooth vector. 
wavelet 
Name of the wavelet filter used. 
boundary 
How the boundaries were handled. 
Author(s)
B. Whitcher
References
Gencay, R., F. Selcuk and B. Whitcher (2001) An Introduction to Wavelets and Other Filtering Methods in Finance and Economics, Academic Press.
Mallat, S. G. (1989) A theory for multiresolution signal decomposition: the wavelet representation, IEEE Transactions on Pattern Analysis and Machine Intelligence, 11, No. 7, 674693.
Percival, D. B. and A. T. Walden (2000) Wavelet Methods for Time Series Analysis, Cambridge University Press.
See Also
dwt
, modwt
.
Examples
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28  ## Easy check to see if it works...
x < rnorm(32)
x.mra < mra(x)
sum(x  apply(matrix(unlist(x.mra), nrow=32), 1, sum))^2
## Figure 4.19 in Gencay, Selcuk and Whitcher (2001)
data(ibm)
ibm.returns < diff(log(ibm))
ibm.volatility < abs(ibm.returns)
## Haar
ibmv.haar < mra(ibm.volatility, "haar", 4, "dwt")
names(ibmv.haar) < c("d1", "d2", "d3", "d4", "s4")
## LA(8)
ibmv.la8 < mra(ibm.volatility, "la8", 4, "dwt")
names(ibmv.la8) < c("d1", "d2", "d3", "d4", "s4")
## plot multiresolution analysis of IBM data
par(mfcol=c(6,1), pty="m", mar=c(52,4,42,2))
plot.ts(ibm.volatility, axes=FALSE, ylab="", main="(a)")
for(i in 1:5)
plot.ts(ibmv.haar[[i]], axes=FALSE, ylab=names(ibmv.haar)[i])
axis(side=1, at=seq(0,368,by=23),
labels=c(0,"",46,"",92,"",138,"",184,"",230,"",276,"",322,"",368))
par(mfcol=c(6,1), pty="m", mar=c(52,4,42,2))
plot.ts(ibm.volatility, axes=FALSE, ylab="", main="(b)")
for(i in 1:5)
plot.ts(ibmv.la8[[i]], axes=FALSE, ylab=names(ibmv.la8)[i])
axis(side=1, at=seq(0,368,by=23),
labels=c(0,"",46,"",92,"",138,"",184,"",230,"",276,"",322,"",368))

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker. Vote for new features on Trello.