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_semi_local_linear_trend_state_space_model(
num_timesteps,
level_scale,
slope_mean,
slope_scale,
autoregressive_coef,
initial_state_prior,
observation_noise_scale = 0,
initial_step = 0,
validate_args = FALSE,
allow_nan_stats = TRUE,
name = NULL
)

## Arguments

num_timesteps 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 expected long-term mean of the latent slope. Scalar (any additional dimensions are treated as batch dimensions) float tensor indicating the standard deviation of the slope transitions. Scalar (any additional dimensions are treated as batch dimensions) float tensor defining the AR1 process on the latent slope. 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: "SemiLocalLinearTrendStateSpaceModel".

## Value

an instance of LinearGaussianStateSpaceModel.

## Details

The semi-local linear trend model is a special case of a linear Gaussian SSM, in which the latent state posits a level and slope. The level evolves via a Gaussian random walk centered at the current slope, while the slope follows a first-order autoregressive (AR1) process with mean slope_mean:

level[t] = level[t-1] + slope[t-1] + Normal(0, level_scale)
slope[t] = (slope_mean + autoregressive_coef * (slope[t-1] - slope_mean) +
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_mean, slope_scale, autoregressive_coef, 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 semi-local linear trend model implements a tfp.distributions.LinearGaussianStateSpaceModel with latent_size = 2 and observation_size = 1, following the transition model:

transition_matrix = [[1., 1.]
[0., autoregressive_coef]]
transition_noise ~ N(loc=slope_mean - autoregressive_coef * slope_mean,
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_state_space_model(), sts_local_linear_trend(), sts_seasonal_state_space_model(), sts_seasonal(), sts_semi_local_linear_trend(), sts_smooth_seasonal_state_space_model(), sts_smooth_seasonal(), sts_sparse_linear_regression(), sts_sum()`