Learn R Programming

dse (version 2004.10-1)

smoother: Evaluate a smoother with a TSmodel

Description

Evaluate a state space model.

Usage

smoother(model, data, compiled=.DSECOMPILED)
    ## S3 method for class 'default':
smoother(model, data, compiled=.DSECOMPILED)
    ## S3 method for class 'TSestModel':
smoother(model, data=TSdata(model),
      compiled=.DSECOMPILED)

Arguments

model
An object of class `TSestModel' or 'TSmodel' with a model of class `nonInnov' 'SS' 'TSmodel'. If filter informatin is not provided (i.e. in a TSestModel) then smoother runs the Kalman filter (l.SS) first.
data
A TSdata object.
compiled
If TRUE the compiled version of the code is used. Otherwise the S version is used.

Value

  • An object of class TSestModel with an additional element smooth. smooth is a list of state, the smoothed state, and track, the smoothed tracking error. The result will also contain the element filter with state and track (which may or may not have been in the original arguement).

concept

DSE

Details

Smoother takes the filtered state estimates$state and produces a smoothed estimate of the state (sometimes called a two sided filter).

Fixed interval smoother for a model as returned by l.SS. ref. appendix of Shumway and Stoffer,1982, J.of Time Series, 253-264, Jazwinski 1970, or Anderson and Moore. Note: this does not allow the same option as l.SS for calculating over a sub-sample. Smoothing is done over the length of the available filter data (which will be calculated to the length of the data if not supplied). For models with an input smoothing will only be done to the length of input data if that is smaller than the available filter data. See SS for details of the model:

z(t) = Fz(t-1) + Gu(t) + Qe(t) y(t) = Hz(t) + Rw(t)

See Also

state, l, SS l.SS TSmodel TSestModel.object

Examples

Run this code
if(is.R()) data("eg1.DSE.data.diff", package="dse1")
#smoother requires an non-innovations form model
model <- TSmodel(toSSChol(estVARXls(eg1.DSE.data.diff))) 
smoothed.model <- smoother(model, eg1.DSE.data.diff, compiled=FALSE)
tfplot(state(smoothed.model))
tfplot(state(smoothed.model, filter=TRUE))
#compare
tfplot(state(smoothed.model, smoother=TRUE), state(smoothed.model, filter=TRUE))

Run the code above in your browser using DataLab