filter {stats} | R Documentation |
Applies linear filtering to a univariate time series or to each series separately of a multivariate time series.
filter(x, filter, method = c("convolution", "recursive"),
sides = 2, circular = FALSE, init)
x |
a univariate or multivariate time series. |
filter |
a vector of filter coefficients in reverse time order (as for AR or MA coefficients). |
method |
Either |
sides |
for convolution filters only. If |
circular |
for convolution filters only. If |
init |
for recursive filters only. Specifies the initial values of the time series just prior to the start value, in reverse time order. The default is a set of zeros. |
Missing values are allowed in x
but not in filter
(where they would lead to missing values everywhere in the output).
Note that there is an implied coefficient 1 at lag 0 in the recursive filter, which gives
y_i = x_i + f_1y_{i-1} + \cdots + f_py_{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
y_i = f_1x_{i+o} + \cdots + f_px_{i+o-(p-1)}
where o
is the offset: see sides
for how it is determined.
A time series object.
convolve(, type="filter")
uses the FFT for computations
and so may be faster for long filters on univariate series,
but it does not return a time series (and so the time alignment is
unclear), nor does it handle missing values. filter
is
faster for a filter of length 100 on a series of length 1000,
for example.
convolve
, arima.sim
x <- 1:100
filter(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))