Rev 68948 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/stats/man/filter.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2007 R Core Team% Distributed under GPL 2 or later\name{filter}\alias{filter}\title{Linear Filtering on a Time Series}\usage{filter(x, filter, method = c("convolution", "recursive"),sides = 2, circular = FALSE, init)}\arguments{\item{x}{a univariate or multivariate time series.}\item{filter}{a vector of filter coefficients in reverse time order(as for AR or MA coefficients).}\item{method}{Either \code{"convolution"} or \code{"recursive"} (andcan be abbreviated). If \code{"convolution"} a moving average isused: if \code{"recursive"} an autoregression is used.}\item{sides}{for convolution filters only. If \code{sides = 1} thefilter coefficients are for past values only; if \code{sides = 2}they are centred around lag 0. In this case the length of thefilter should be odd, but if it is even, more of the filteris forward in time than backward.}\item{circular}{for convolution filters only. If \code{TRUE}, wrapthe filter around the ends of the series, otherwise assumeexternal values are missing (\code{NA}).}\item{init}{for recursive filters only. Specifies the initial valuesof the time series just prior to the start value, in reversetime order. The default is a set of zeros.}}\description{Applies linear filtering to a univariate time series or to each seriesseparately of a multivariate time series.}\value{A time series object.}\details{Missing values are allowed in \code{x} but not in \code{filter}(where they would lead to missing values everywhere in the output).Note that there is an implied coefficient 1 at lag 0 in therecursive filter, which gives\deqn{y_i = x_i + f_1y_{i-1} + \cdots + f_py_{i-p}}{y[i] = x[i] + f[1]*y[i-1] + \dots + f[p]*y[i-p]}No check is made to see if recursive filter is invertible:the output may diverge if it is not.The convolution filter is\deqn{y_i = f_1x_{i+o} + \cdots + f_px_{i+o-(p-1)}}{y[i] = f[1]*x[i+o] + \dots + f[p]*x[i+o-(p-1)]}where \code{o} is the offset: see \code{sides} for how it is determined.}\note{\code{\link{convolve}(, type = "filter")} uses the FFT for computationsand so \emph{may} be faster for long filters on univariate series,but it does not return a time series (and so the time alignment isunclear), nor does it handle missing values. \code{filter} isfaster for a filter of length 100 on a series of length 1000,for example.}\seealso{\code{\link{convolve}}, \code{\link{arima.sim}}}\examples{x <- 1:100filter(x, rep(1, 3))filter(x, rep(1, 3), sides = 1)filter(x, rep(1, 3), sides = 1, circular = TRUE)filter(presidents, rep(1, 3))}\keyword{ts}