R/sts.R
sts_autoregressive_state_space_model.Rd
A state space model (SSM) posits a set of latent (unobserved) variables that
evolve over time with dynamics specified by a probabilistic transition model
p(z[t+1]  z[t])
. At each timestep, we observe a value sampled from an
observation model conditioned on the current state, p(x[t]  z[t])
. The
special case where both the transition and observation models are Gaussians
with mean specified as a linear function of the inputs, is known as a linear
Gaussian state space model and supports tractable exact probabilistic
calculations; see tfd_linear_gaussian_state_space_model
for
details.
sts_autoregressive_state_space_model( num_timesteps, coefficients, level_scale, initial_state_prior, observation_noise_scale = 0, initial_step = 0, validate_args = FALSE, name = NULL )
num_timesteps  Scalar 

coefficients 

level_scale  Scalar (any additional dimensions are treated as batch
dimensions) 
initial_state_prior  instance of 
observation_noise_scale  Scalar (any additional dimensions are
treated as batch dimensions) 
initial_step  Optional scalar 
validate_args 

name  name prefixed to ops created by this class. Default value: "AutoregressiveStateSpaceModel". 
an instance of LinearGaussianStateSpaceModel
.
In an autoregressive process, the expected level at each timestep is a linear function of previous levels, with added Gaussian noise:
level[t+1] = (sum(coefficients * levels[t:torder:1]) + Normal(0., level_scale))
The process is characterized by a vector coefficients
whose size determines
the order of the process (how many previous values it looks at), and by
level_scale
, the standard deviation of the noise added at each step.
This is formulated as a state space model by letting the latent state encode
the most recent values; see 'Mathematical Details' below.
The parameters level_scale
and observation_noise_scale
are each (a batch
of) scalars, and coefficients
is a (batch) vector of size list(order)
. The
batch shape of this Distribution
is the broadcast batch
shape of these parameters and of the initial_state_prior
.
Mathematical Details
The autoregressive model implements a
tfd_linear_gaussian_state_space_model
with latent_size = order
and observation_size = 1
. The latent state vector encodes the recent history
of the process, with the current value in the topmost dimension. At each
timestep, the transition sums the previous values to produce the new expected
value, shifts all other values down by a dimension, and adds noise to the
current value. This is formally encoded by the transition model:
transition_matrix = [ coefs[0], coefs[1], ..., coefs[order] 1., 0 , ..., 0. 0., 1., ..., 0. ... 0., 0., ..., 1., 0. ]
transition_noise ~ N(loc=0., scale=diag([level_scale, 0., 0., ..., 0.]))
The observation model simply extracts the current (topmost) value, and optionally adds independent noise at each step:
observation_matrix = [[1., 0., ..., 0.]] observation_noise ~ N(loc=0, scale=observation_noise_scale)
Models with observation_noise_scale = 0
are AR processes in the formal
sense. Setting observation_noise_scale
to a nonzero value corresponds to a
latent AR process observed under an iid noise model.
Other sts:
sts_additive_state_space_model()
,
sts_autoregressive()
,
sts_constrained_seasonal_state_space_model()
,
sts_dynamic_linear_regression_state_space_model()
,
sts_dynamic_linear_regression()
,
sts_linear_regression()
,
sts_local_level_state_space_model()
,
sts_local_level()
,
sts_local_linear_trend_state_space_model()
,
sts_local_linear_trend()
,
sts_seasonal_state_space_model()
,
sts_seasonal()
,
sts_semi_local_linear_trend_state_space_model()
,
sts_semi_local_linear_trend()
,
sts_smooth_seasonal_state_space_model()
,
sts_smooth_seasonal()
,
sts_sparse_linear_regression()
,
sts_sum()