Learn R Programming

KFAS (version 1.5.1)

signal: Extracting the Partial Signal Of a State Space Model

Description

Function signal returns the signal of a state space model using only subset of states.

Usage

signal(object, states = "all", filtered = FALSE)

Value

signal

Time series object of filtered signal \(Z_ta_t\) or smoothed signal \(Z_t\hat\alpha_t\) using only the defined states.

variance

Cov(\(Z_ta_t\)) or Cov(\(Z_t\hat\alpha_t\)) using only the defined states. For the covariance matrices of the filtered signal, only the non-diffuse part of P is used.

Arguments

object

Object of class KFS.

states

Which states are combined? Either a numeric vector containing the indices of the corresponding states, or a character vector defining the types of the corresponding states. Possible choices are "all", "level", "slope", "trend", "regression", "arima", "custom", "cycle" or "seasonal", where "trend" extracts states relating to trend. These can be combined. Default is "all".

filtered

If TRUE, filtered signal is used. Otherwise smoothed signal is used.

Examples

Run this code
model <- SSModel(log(drivers) ~ SSMtrend(1, NA) +
    SSMseasonal(12, sea.type = 'trigonometric', Q = NA) +
    log(PetrolPrice) + law,data = Seatbelts, H = NA)

ownupdatefn <- function(pars,model,...){
  model$H[] <- exp(pars[1])
  diag(model$Q[,,1]) <- exp(c(pars[2], rep(pars[3], 11)))
  model
}

fit <- fitSSM(inits = log(c(var(log(Seatbelts[,'drivers'])), 0.001, 0.0001)),
  model = model, updatefn = ownupdatefn, method = 'BFGS')

out <- KFS(fit$model, smoothing = c('state', 'mean'))
ts.plot(cbind(out$model$y, fitted(out)),lty = 1:2, col = 1:2,
  main = 'Observations and smoothed signal with and without seasonal component')
lines(signal(out, states = c('regression', 'trend'))$signal, col = 4, lty = 1)
legend('bottomleft',
  legend = c('Observations', 'Smoothed signal','Smoothed level'),
  col = c(1, 2, 4), lty = c(1, 2, 1))

Run the code above in your browser using DataLab