Learn R Programming

pastecs (version 1.0-2)

tsd: Decomposition of one or several regular time series using various methods

Description

Use a decomposition method to split the series into two or more components. Decomposition methods are either series filtering/smoothing (difference, average, median, evf), deseasoning (loess) or model-based decomposition (reg, i.e., regression).

Usage

tsd(x, specs=NULL, method="loess", type="additive", ...)
## S3 method for class 'tsd':
summary(tsdobj)
## S3 method for class 'tsd':
plot(tsdobj, series=1, stack=TRUE, resid=TRUE,
        labels, leg=TRUE, lpos=c(0, 0), ...)
## S3 method for class 'tsd':
extract(tsdobj, n, series=NULL, components=NULL)
## S3 method for class 'tsd':
specs(tsdobj)

Arguments

x
an univariate or multivariate regular time series ('rts' in Splus or 'ts' in R) to be decomposed
specs
specifications are collected from a 'tsd' object, using the specs method. This allows for reusing parameters issued from a previous similar analysis
method
the method to use to decompose the time series. Currently, possible values are: "diff", "average", "median", "evf", "reg" or "loess" (by default). The corresponding function
type
the type of model to use: either "additive" (by default) or "multiplicative". In the additive model, all components must be added to reconstruct the initial series. In the multiplicative model, they must be multiplied (one compon
...
(1) for tsd(): further arguments to pass to the corresponding decXXXX() function. (2) for plot(): further graphical arguments
tsdobj
a 'tsd' object as returned by the function tsd(), or any of the decXXXX() functions
series
(1) for plot(): the series to plot. By default, series=1, the first (or possibly unique) series in the 'tsd' object is plotted. (2) for extract: the name or the index of the series to extract. If series
stack
graphs of each component are either stacked (stack=TRUE, by default), or superposed on the same graph stack=FALSE
resid
do we have to plot also the "residuals" components (resid=TRUE, by default) or not? Usually, in a stacked graph, you would like to plot the residuals, while in a superposed graph, you would not
labels
the labels to use for all y-axes in a stacked graph, or in the legend for a superposed graph. By default, the names of the components ("trend", "seasonal", "deseasoned", "filtered", "residuals", ...) are used
leg
only used when stack=FALSE. Do we plot a legend (leg=TRUE or not?
lpos
position of the upper-left corner of the legend box in the graph coordinates (x,y). By default, leg=c(0,0)
n
the number of series to extract (from series 1 to series n). By default, n equals the number of series in the 'tsd' object. If both series and components arguments are NULL, all series and components are extracted and this method
components
the names or indices of the components to extract. If components=NULL (by default), then all components of the selected series are extracted. It is also possible to specify negative indices. In this case, all components are extracted, except

Value

  • An object of type 'tsd' is returned. It has methods print(), summary(), plot(), extract() and specs().

synopsis

tsd(x, specs=NULL, method="loess", type=if (method == "census") "multiplicative" else "additive", lag=1, axes=1:5, order=1, times=1, sides=2, ends="fill", weights=NULL, s.window=NULL, s.degree=0, t.window=NULL, t.degree=2, robust=FALSE, trend=FALSE, xreg=NULL) extract.tsd(e, n, series=NULL, components=NULL, ...) plot.tsd(x, series=1, stack=TRUE, resid=TRUE, col=par("col"), lty=par("lty"), labels=dimnames(X)[[2]], leg=TRUE, lpos=c(0, 0), xlab="time", ylab="series", main=paste("Series decomposition by", x$specs$method, "-", x$specs$type), ...) print.specs.tsd(x, ...) print.summary.tsd(x, ...) print.tsd(x, ...) specs.tsd(x, ...) summary.tsd(object, ...)

Details

To eliminate trend from a series, use "diff" or use "loess" with trend=TRUE. If you know the shape of the trend (linear, exponential, periodic, etc.), you can also use it with the "reg" (regression) method. To eliminate or extract seasonal components, you can use "loess". You can also use "average" with argument order="periodic" and with either an additive or a multiplicative model, although the later method is often less powerful than "loess". If you want to extract a seasonal cycle with a given shape (for instance, a sinusoid), use the "reg" method with a fitted sinusoidal equation. If you want to identify levels in the series, use the "median" method. To smooth the series, you can use preferably the "evf" (eigenvector filtering), or the "average" methods, but you can also use "median". To extract most important components from the series (no matter if they are cycles -seasonal or not-, or long-term trends), you should use the "evf" method. For more information on each of these methods, see online help of the corresponding decXXXX() functions.

References

Kendall, M., 1976. Time-series. Charles Griffin & Co Ltd. 197 pp. Laloire, J.C., 1972. M�thodes du traitement des chroniques. Dunod, Paris, 194 pp. Legendre, L. & P. Legendre, 1984. Ecologie num�rique. Tome 2: La structure des donn�es �cologiques. Masson, Paris. 335 pp. Malinvaud, E., 1978. M�thodes statistiques de l'�conom�trie. Dunod, Paris. 846 pp. Philips, L. & R. Blomme, 1973. Analyse chronologique. Universit� Catholique de Louvain. Vander ed. 339 pp.

See Also

tseries, decdiff, decaverage, decmedian, decevf, decreg, decloess

Examples

Run this code
data(releve)
# Regulate the series and extract them as a time series object
rel.regy <- regul(releve$Day, releve[3:8], xmin=6, n=87, units="daystoyears",
        frequency=24, tol=2.2, methods="linear", datemin="21/03/1989",
        dateformat="d/m/Y")
rel.ts <- tseries(rel.regy)

# Decompose all series in the set with the "loess" method
rel.dec <- tsd(rel.ts, method="loess", s.window=13, trend=FALSE)
rel.dec
plot(rel.dec, series=5, col=1:3)    # An plot series 5

# Extract "deseasoned" components
rel.des <- extract(rel.dec, series=3:6, components="deseasoned")
rel.des[1:10,]

# Further decompose these components with a moving average
rel.des.dec <- tsd(rel.des, method="average", order=2, times=10)
plot(rel.des.dec, series=3, col=c(2, 4, 6))
# In this case, a superposed graph is more appropriate:
plot(rel.des.dec, series=3, col=c(2,4), stack=FALSE, resid=FALSE,
        labels=c("without season cycle", "trend"), lpos=c(0, 55000))
# Extract residuals from the latter decomposition
rel.res2 <- extract(rel.des.dec, components="residuals")

Run the code above in your browser using DataLab