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_local_linear_trend_state_space_model(
num_timesteps,
level_scale,
slope_scale,
initial_state_prior,
observation_noise_scale = 0,
initial_step = 0,
validate_args = FALSE,
allow_nan_stats = TRUE,
name = NULL
)
an instance of LinearGaussianStateSpaceModel
.
Scalar integer
tensor
number of timesteps to model
with this distribution.
Scalar (any additional dimensions are treated as batch
dimensions) float
tensor
indicating the standard deviation of the
level transitions.
Scalar (any additional dimensions are treated as batch
dimensions) float
tensor
indicating the standard deviation of the
slope transitions.
instance of tfd_multivariate_normal
representing the prior distribution on latent states. Must have
event shape [1]
(as tfd_linear_gaussian_state_space_model
requires a
rank-1 event shape).
Scalar (any additional dimensions are
treated as batch dimensions) float
tensor
indicating the standard
deviation of the observation noise.
Optional scalar integer
tensor
specifying the starting
timestep. Default value: 0.
logical
. Whether to validate input
with asserts. If validate_args
is FALSE
, and the inputs are
invalid, correct behavior is not guaranteed. Default value: FALSE
.
logical
. If FALSE
, raise an
exception if a statistic (e.g. mean/mode/etc...) is undefined for any
batch member. If TRUE
, batch members with valid parameters leading to
undefined statistics will return NaN for this statistic. Default value: TRUE
.
string prefixed to ops created by this class. Default value: "LocalLinearTrendStateSpaceModel".
The local linear trend model is a special case of a linear Gaussian SSM, in
which the latent state posits a level
and slope
, each evolving via a
Gaussian random walk:
level[t] = level[t-1] + slope[t-1] + Normal(0., level_scale)
slope[t] = slope[t-1] + Normal(0., slope_scale)
The latent state is the two-dimensional tuple [level, slope]
. The
level
is observed at each timestep.
The parameters level_scale
, slope_scale
, and observation_noise_scale
are each (a batch of) scalars. The batch shape of this Distribution
is the
broadcast batch shape of these parameters and of the initial_state_prior
.
Mathematical Details
The linear trend model implements a tfd_linear_gaussian_state_space_model
with latent_size = 2
and observation_size = 1
, following the transition model:
transition_matrix = [[1., 1.]
[0., 1.]]
transition_noise ~ N(loc = 0, scale = diag([level_scale, slope_scale]))
which implements the evolution of [level, slope]
described above, and the observation model:
observation_matrix = [[1., 0.]]
observation_noise ~ N(loc= 0 , scale = observation_noise_scale)
which picks out the first latent component, i.e., the level
, as the
observation at each timestep.
Other sts:
sts_additive_state_space_model()
,
sts_autoregressive_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()
,
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()