panel.tskernel {latticeExtra} | R Documentation |
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.
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))
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 |
The author is not an expert on time series theory.
Felix Andrews felix@nfrac.org
kernel
,
filter
,
xyplot.ts
## 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")))