panel.tskernel {latticeExtra} | R Documentation |
Calculate and plot smoothed time series.
Description
Plot time series smoothed by discrete symmetric smoothing kernels. These kernels can be used to smooth time series objects. Options include moving averages, triangular filters, or approximately Gaussian filters.
Usage
panel.tskernel(x, y, ...,
width = NROW(x) %/% 10 + 1, n = 300,
c = 1, sides = 2, circular = FALSE,
kern = kernel("daniell",
rep(floor((width/sides) / sqrt(c)), c)))
simpleSmoothTs(x, ...)
## Default S3 method:
simpleSmoothTs(x, ...,
width = NROW(x) %/% 10 + 1, n = NROW(x),
c = 1, sides = 2, circular = FALSE,
kern = kernel("daniell",
rep(floor((width/sides)/sqrt(c)), c)))
## S3 method for class 'zoo'
simpleSmoothTs(x, ..., n = NROW(x))
Arguments
x , y |
data points. Should define a regular, ordered series.
A time series object can be passed as the first argument, in which
case |
... |
further arguments passed on to |
width |
nominal width of the smoothing kernel in time steps. In the default
case, which is a simple moving average, this is the actual width.
When |
n |
approximate number of time steps desired for the result. If this is
less than the length of |
c |
smoothness of the kernel: |
sides |
if |
circular |
to treat the data as circular (periodic). |
kern |
a |
Note
The author is not an expert on time series theory.
Author(s)
Felix Andrews felix@nfrac.org
See Also
Examples
## a Gaussian-like filter (contrast with c = 1 or c = 2)
xyplot(sunspot.year) +
layer(panel.tskernel(x, y, width = 20, c = 3, col = 1, lwd = 2))
## example from ?kernel:
## long and short moving averages, backwards in time
xyplot(EuStockMarkets[,1]) +
layer(panel.tskernel(x, y, width = 100, col = 1, sides = 1)) +
layer(panel.tskernel(x, y, width = 20, col = 2, sides = 1))
## per group, with a triangular filter
xyplot(EuStockMarkets, superpose = TRUE) +
glayer(panel.tskernel(..., width = 100, c = 2),
theme = simpleTheme(lwd = 2))
## plot the actual kernels used; note adjustment of width
width = 100
kdat <- lapply(1:4, function(c) {
k <- kernel("daniell", rep(floor(0.5*width / sqrt(c)), c))
## demonstrate that the effective bandwidth stays the same:
message("c = ", c, ": effective bandwidth = ", bandwidth.kernel(k))
## represent the kernel as a time series, for plotting
ts(k[-k$m:k$m], start = -k$m)
})
names(kdat) <- paste("c =", 1:4)
xyplot(do.call(ts.union, kdat), type = "h",
scales = list(y = list(relation = "same")))