| xarmaFilter {sarima} | R Documentation | 
Applies an extended ARMA filter to a time series
Description
Filter time series with an extended arma filter.
If whiten is FALSE (default) the function applies
the given ARMA filter to eps (eps is often
white noise).  If whiten is TRUE the function applies
the “inverse filter” to x, effectively computing
residuals.
Usage
xarmaFilter(model, x = NULL, eps = NULL, from = NULL, whiten = FALSE,
            xcenter = NULL, xintercept = NULL)
Arguments
| x | the time series to be filtered, a vector. | 
| eps | residuals, a vector or NULL. | 
| model | the model parameters, a list with components  | 
| from | the index from which to start filtering. | 
| whiten | if TRUE use  | 
| xcenter | a vector of means of the same length as the time series, see Details. | 
| xintercept | a vector of intercepts having the length of the series, see Details. | 
Details
The model is specified by argument model, which is a list with
the following components:
- ar
- the autoregression parameters, 
- ma
- the moving average parameters, 
- center
- center by this value, 
- intercept
- intercept. 
model$center and model$intercept are scalars and usually
at most one of them is nonzero. They can be considered part of the
model specification. In contrast, arguments xcenter and
xintercept are vectors of the same length as x. They can
represent contributions from covariate variables. Usually at most one
of xcenter and xintercept is used.
The description below uses \mu_t and c_t for
the contributions by model$center plus xcenter and
model$intercept plus xintercept, respectively.
The time series \{x_t\} and \{\varepsilon_t\} are
represented by x and eps in the R code.
Let
y_t = x_t - \mu_t
be the centered series.  where the centering term \mu_t
is essentially the sum of center and xcenter and is not
necessarilly the mean.  The equation relating the centered series,
y_t=x_t - \mu_t, and eps is the
following:
 y_t
    =   c_t
      + \sum_{i=1}^{p} \phi(i)y            _{t-i}
      + \sum_{i=1}^{q} \theta(i)\varepsilon_{t-i}
      + \varepsilon_t
    
where c_t is the intercept (basically the sum of
intercept with xintercept).
If whiten = FALSE, y_t is computed for
t=from,...,n using the above formula, i.e. the filter is
applied to get y from eps (and some initial values). If
eps is white noise, it can be said that y is obtained by
“colouring” the white noise eps. This can be used, for
example, to simulate ARIMA time series.  Finally, the centering term
is added back, x_t=y_t+\mu_t for t=from,...,n, and the
modified x is returned.  The first from - 1 elements of
x are left unchanged.
The inverse filter is obtained by rewriting the above equation as an equation
expressing \varepsilon_t in terms of the remaining quantities:
 \varepsilon_t
    = - c_t
      - \sum_{i=1}^{q} \theta(i)\varepsilon_{t-i}
      - \sum_{i=1}^{p} \phi  (i)y          _{t-i}
      + y_t
    
If whiten = TRUE, xarmaFilter uses this formula for
t=from,...,n to compute eps from y (and some
initial values). If eps is white noise, then it can be said
that the time series y has been whitened.
In both cases the first few values in x and/or
eps are used as initial values.
The centering is formed from model$center and argument
xcenter.  If model$center is supplied it is recycled
to the length of the series, x, and subtracted from
x. If argument xcenter is supplied, it is subtracted
from x. If both model$center and xcenter are
supplied their sum is subtracted from x.
xarmaFilter can be used to simulate ARMA series with the
default value of whiten = FALSE. In this case eps is the
input series and y the output:
Then model$center and/or xcenter are added to y
to form the output vector x.
Residuals corresponding to a series x can be obtained by
setting whiten = TRUE. In this case x is the input series.
The elements of the output vector eps are calculated by the
formula for \varepsilon_{t} given above.
There is no need in this case to restore x since eps is
returned.
In both cases any necessary initial values are assumed to be already
in the vectors and provide the first from - 1 values in the
returned vectors.  Argument from should not be smaller than the
default value max(p,q)+1.
xarmaFilter calls the lower level function coreXarmaFilter
to do the computation.
Value
the result of applying the filter or its inverse, as descibed in Details:
if whiten = FALSE, the modified x;
if whiten = TRUE, the modified eps.
Author(s)
Georgi N. Boshnakov
Examples
## define a seasonal ARIMA model
m1 <- new("SarimaModel", iorder = 1, siorder = 1, ma = -0.3, sma = -0.1, nseasons = 12)
model0 <- modelCoef(m1, "ArmaModel")
model1 <- as(model0, "list")
ap.1 <- xarmaFilter(model1, x = AirPassengers, whiten = TRUE)
ap.2 <- xarmaFilter(model1, x = AirPassengers, eps = ap.1, whiten = FALSE)
ap <- AirPassengers
ap[-(1:13)] <- 0 # check that the filter doesn't use x, except for initial values.
ap.2a <- xarmaFilter(model1, x = ap, eps = ap.1, whiten = FALSE)
ap.2a - ap.2 ## indeed = 0
##ap.3 <- xarmaFilter(model1, x = list(init = AirPassengers[1:13]), eps = ap.1, whiten = TRUE)
## now set some non-zero initial values for eps
eps1 <- numeric(length(AirPassengers))
eps1[1:13] <- rnorm(13)
ap.A <- xarmaFilter(model1, x = AirPassengers, eps = eps1, whiten = TRUE)
ap.Ainv <- xarmaFilter(model1, x = ap, eps = ap.A, whiten = FALSE)
AirPassengers - ap.Ainv # = 0
## compare with sarima.f (an old function)
## compute predictions starting at from = 14
pred1 <- sarima.f(past = AirPassengers[1:13], n = 131, ar = model1$ar, ma = model1$ma)
pred2 <- xarmaFilter(model1, x = ap, whiten = FALSE)
pred2 <- pred2[-(1:13)]
all(pred1 == pred2) ##TRUE