signal: Extracting the Partial Signal Of a State Space Model

View source: R/signals.R

signalR Documentation

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)

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.

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.

Examples

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))


KFAS documentation built on Sept. 8, 2023, 5:56 p.m.