bsts (version 0.8.0)

add.semilocal.linear.trend: Semilocal Linear Trend

Description

The semi-local linear trend model is similar to the local linear trend, but more useful for long-term forecasting. It assumes the level component moves according to a random walk, but the slope component moves according to an AR1 process centered on a potentially nonzero value \(D\). The equation for the level is

$$\mu_{t+1} = \mu_t + \delta_t + \epsilon_t \qquad \epsilon_t \sim \mathcal{N(0, \sigma_\mu)}.$$

The equation for the slope is $$\delta_{t+1} = D + \phi (\delta_t - D) + \eta_t \qquad \eta_t \sim \mathcal{N(0, \sigma_\delta)}.$$

This model differs from the local linear trend model in that the latter assumes the slope \(\delta_t\) follows a random walk. A stationary AR(1) process is less variable than a random walk when making projections far into the future, so this model often gives more reasonable uncertainty estimates when making long term forecasts.

The prior distribution for the semi-local linear trend has four independent components. These are:

  • an inverse gamma prior on the level standard deviation \(\sigma_\mu\),

  • an inverse gamma prior on the slope standard deviation \(\sigma_\delta\),

  • a Gaussian prior on the long run slope parameter \(D\),

  • and a potentially truncated Gaussian prior on the AR1 coefficient \(\phi\). If the prior on \(\phi\) is truncated to (-1, 1), then the slope will exhibit short term stationary variation around the long run slope \(D\).

Usage

AddSemilocalLinearTrend(
     state.specification = list(),
     y = NULL,
     level.sigma.prior = NULL,
     slope.mean.prior = NULL,
     slope.ar1.prior = NULL,
     slope.sigma.prior = NULL,
     initial.level.prior = NULL,
     initial.slope.prior = NULL,
     sdy = NULL,
     initial.y = NULL)

Arguments

state.specification

A list of state components that you wish to add to. If omitted, an empty list will be assumed.

y

The time series to be modeled, as a numeric vector. This can be omitted if sdy and initial.y are supplied, or if all prior distributions are supplied directly.

level.sigma.prior

An object created by SdPrior describing the prior distribution for the standard deviation of the level component.

slope.mean.prior

An object created by NormalPrior giving the prior distribution for the mean parameter in the generalized local linear trend model (see below).

slope.ar1.prior

An object created by Ar1CoefficientPrior giving the prior distribution for the ar1 coefficient parameter in the generalized local linear trend model (see below).

slope.sigma.prior

An object created by SdPrior describing the prior distribution of the standard deviation of the slope component.

initial.level.prior

An object created by NormalPrior describing the initial distribution of the level portion of the initial state vector.

initial.slope.prior

An object created by NormalPrior describing the prior distribution for the slope portion of the initial state vector.

sdy

The standard deviation of the series to be modeled. This will be ignored if y is provided, or if all the required prior distributions are supplied directly.

initial.y

The initial value of the series being modeled. This will be ignored if y is provided, or if the priors for the initial state are all provided directly.

Value

Returns a list with the elements necessary to specify a generalized local linear trend state model.

References

Harvey (1990), "Forecasting, structural time series, and the Kalman filter", Cambridge University Press.

Durbin and Koopman (2001), "Time series analysis by state space methods", Oxford University Press.

See Also

bsts. SdPrior NormalPrior