Decomposition of one or several regular time series using various methods
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).
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) ## S3 method for class 'tsd' print(x, ...) ## S3 method for class 'tsd' summary(object, ...) ## S3 method for class 'summary.tsd' print(x, ...) ## S3 method for class 'tsd' plot(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), ...) ## S3 method for class 'tsd' extract(e, n, series=NULL, components=NULL, ...) ## S3 method for class 'tsd' specs(x, ...) ## S3 method for class 'specs.tsd' print(x, ...)
x |
an univariate or multivariate regular time series ('ts' object) to
be decomposed for |
specs |
specifications are collected from a 'tsd' object, using the
|
method |
the method to use to decompose the time series. Currently,
possible values are: |
type |
the type of model to use: either |
lag |
The lag between the two observations used to calculate differences.
By default, |
axes |
the number of axes to show in the plot |
order |
(1) for the method 'difference': the order of the difference
corresponds to the number of times it is applied, by default |
times |
The number of times to apply the method (by default, once) |
sides |
If 2 (by default), the window is centered around the current observation. If 1, the window is at left of the current observation (including it) |
ends |
either "NAs" (fill first and last values that are not calculable with NAs), or "fill" (fill them with the average of observations before applying the filter, by default), or "circular" (use last values for estimating first ones and vice versa), or "periodic" (use entire periods of contiguous cycles, deseasoning) |
weights |
a vector indicating weight to give to all observations in the
window. This argument has the priority over |
s.window |
the width of the window used to extract the seasonal
component. Use an odd value equal or just larger than the number of annual
values (frequency of the time series). Use another value to extract other
cycles (circadian, lunar,...). Using |
s.degree |
the order of the polynome to use to extract the seasonal
component (0 or 1). By default |
t.window |
the width of the window to use to extract the general trend
when |
t.degree |
the order of the polynome to use to extract the general trend
(0, 1 or 2). By default |
robust |
if |
trend |
If |
xreg |
a second regular time series or a vector of the same length as
|
object |
a 'tsd' object as returned by the function |
e |
a 'tsd' object as returned by the function |
series |
(1) for |
stack |
graphs of each component are either stacked ( |
resid |
do we have to plot also the "residuals" components
( |
col |
color of the plot |
lty |
line type for the plot |
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 |
lpos |
position of the upper-left corner of the legend box in the graph
coordinates (x,y). By default, |
xlab |
the label of the x-axis |
ylab |
the label of the y-axis |
main |
the main title of the graph |
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
|
components |
the names or indices of the components to extract. If
|
... |
(1) for |
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" if the seasonal
component is additive, or "census" if it is multiplicative. 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" or "census". 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.
An object of type 'tsd' is returned. It has methods print()
,
summary()
, plot()
, extract()
and specs()
.
If you have to decompose a single time series, you could also use the
corresponding decXXXX()
function directly. In the case of a multivariate
regular time series, tsd()
is more convenient because it decompose all
times series of a set at once!
Frédéric Ibanez (ibanez@obs-vlfr.fr), Philippe Grosjean (phgrosjean@sciviews.org)
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.
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")
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.