The smooth seasonal model uses a set of trigonometric terms in order to
capture a recurring pattern whereby adjacent (in time) effects are
similar. The model uses frequencies calculated via:
sts_smooth_seasonal(
period,
frequency_multipliers,
allow_drift = TRUE,
drift_scale_prior = NULL,
initial_state_prior = NULL,
observed_time_series = NULL,
name = NULL
)an instance of StructuralTimeSeries.
positive scalar float Tensor giving the number of timesteps
required for the longest cyclic effect to repeat.
One-dimensional float Tensor listing the
frequencies (cyclic components) included in the model, as multipliers of
the base/fundamental frequency 2. * pi / period. Each component is
specified by the number of times it repeats per period, and adds two
latent dimensions to the model. A smooth seasonal model that can
represent any periodic function is given by
frequency_multipliers = [1,2, ..., floor(period / 2)].
However, it is often desirable to enforce a
smoothness assumption (and reduce the computational burden) by dropping
some of the higher frequencies.
optional logical specifying whether the seasonal
effects can drift over time. Setting this to FALSE
removes the drift_scale parameter from the model. This is
mathematically equivalent to
drift_scale_prior = tfd.Deterministic(0.), but removing drift
directly is preferred because it avoids the use of a degenerate prior.
Default value: TRUE.
optional tfd$Distribution instance specifying a prior
on the drift_scale parameter. If NULL, a heuristic default prior is
constructed based on the provided observed_time_series.
Default value: NULL.
instance of tfd$MultivariateNormal representing
the prior distribution on the latent states. Must have event shape
[2 * len(frequency_multipliers)]. If NULL, a heuristic default prior
is constructed based on the provided observed_time_series.
optional float Tensor of shape
batch_shape + [T, 1] (omitting the trailing unit dimension is also
supported when T > 1), specifying an observed time series.
Any priors not explicitly set will be given default values according to
the scale of the observed time series (or batch of time series). May
optionally be an instance of tfp$sts$MaskedTimeSeries, which includes
a mask Tensor to specify timesteps with missing observations.
Default value: NULL.
the name of this model component. Default value: 'LocalLinearTrend'.
frequencies[j] = 2. * pi * frequency_multipliers[j] / period
and then posits two latent states for each frequency. The two latent states
associated with frequency j drift over time via:
effect[t] = (effect[t-1] * cos(frequencies[j]) +
auxiliary[t-] * sin(frequencies[j]) +
Normal(0., drift_scale))
auxiliary[t] = (-effect[t-1] * sin(frequencies[j]) +
auxiliary[t-] * cos(frequencies[j]) +
Normal(0., drift_scale))
where effect is the smooth seasonal effect and auxiliary only appears as a
matter of construction. The interpretation of auxiliary is thus not
particularly important.
For usage examples see sts_fit_with_hmc(), sts_forecast(), sts_decompose_by_component().
Other sts:
sts_additive_state_space_model(),
sts_autoregressive(),
sts_autoregressive_state_space_model(),
sts_constrained_seasonal_state_space_model(),
sts_dynamic_linear_regression(),
sts_dynamic_linear_regression_state_space_model(),
sts_linear_regression(),
sts_local_level(),
sts_local_level_state_space_model(),
sts_local_linear_trend(),
sts_local_linear_trend_state_space_model(),
sts_seasonal(),
sts_seasonal_state_space_model(),
sts_semi_local_linear_trend(),
sts_semi_local_linear_trend_state_space_model(),
sts_smooth_seasonal_state_space_model(),
sts_sparse_linear_regression(),
sts_sum()