add.semilocal.linear.trend {bsts} | R Documentation

## 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] + rnorm(1, 0, sigma.level)

The equation for the slope is

delta[t+1] = D + phi * (delta[t] - D) + rnorm(1, 0, sigma.slope).

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.level,

- an inverse gamma prior on the slope standard deviation sigma.slope,

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

### Author(s)

Steven L. Scott steve.the.bayesian@gmail.com

### 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`

[Package bsts version 0.9.1 Index]