|  View source on GitHub | 
Formal representation of a local level model.
Inherits From: StructuralTimeSeries
tfp.sts.LocalLevel(
    level_scale_prior=None,
    initial_level_prior=None,
    observed_time_series=None,
    name=None
)
The local level model posits a level evolving via a Gaussian random walk:
level[t] = level[t-1] + Normal(0., level_scale)
The latent state is [level]. We observe a noisy realization of the current
level: f[t] = level[t] + Normal(0., observation_noise_scale) at each
timestep.
| Args | |
|---|---|
| level_scale_prior | optional tfd.Distributioninstance specifying a prior
on thelevel_scaleparameter. IfNone, a heuristic default prior is
constructed based on the providedobserved_time_series.
Default value:None. | 
| initial_level_prior | optional tfd.Distributioninstance specifying a
prior on the initial level. IfNone, a heuristic default prior is
constructed based on the providedobserved_time_series.
Default value:None. | 
| observed_time_series | optional floatTensorof shapebatch_shape + [T, 1](omitting the trailing unit dimension is also
supported whenT > 1), specifying an observed time series. AnyNaNs
are interpreted as missing observations; missingness may be also be
explicitly specified by passing atfp.sts.MaskedTimeSeriesinstance.
Any priors not explicitly set will be given default values according to
the scale of the observed time series (or batch of time series).
Default value:None. | 
| name | the name of this model component. Default value: 'LocalLevel'. | 
Methods
batch_shape_tensor
batch_shape_tensor()
Runtime batch shape of models represented by this component.
| Returns | |
|---|---|
| batch_shape | intTensorgiving the broadcast batch shape of
all model parameters. This should match the batch shape of
derived state space models, i.e.,self.make_state_space_model(...).batch_shape_tensor(). | 
copy
copy(
    **override_parameters_kwargs
)
Creates a deep copy.
| Args | |
|---|---|
| **override_parameters_kwargs | String/value dictionary of initialization arguments to override with new values. | 
| Returns | |
|---|---|
| copy | A new instance of type(self)initialized from the union
of self.init_parameters and override_parameters_kwargs, i.e.,dict(self.init_parameters, **override_parameters_kwargs). | 
get_parameter
get_parameter(
    parameter_name
)
Returns the parameter with the given name, or a KeyError.
joint_distribution
joint_distribution(
    observed_time_series=None,
    num_timesteps=None,
    trajectories_shape=(),
    initial_step=0,
    mask=None,
    experimental_parallelize=False
)
Constructs the joint distribution over parameters and observed values.
| Args | |
|---|---|
| observed_time_series | Optional observed time series to model, as a Tensorortfp.sts.MaskedTimeSeriesinstance having shapeconcat([batch_shape, trajectories_shape, num_timesteps, 1]). If
an observed time series is provided, thenum_timesteps,trajectories_shape, andmaskarguments are ignored, and
an unnormalized (pinned) distribution over parameter values is returned.
Default value:None. | 
| num_timesteps | scalar intTensornumber of timesteps to model. This
must be specified either directly or by passing anobserved_time_series.
Default value:0. | 
| trajectories_shape | intTensorshape of sampled trajectories
for each set of parameter values. Ignored if anobserved_time_seriesis passed.
Default value:(). | 
| initial_step | Optional scalar intTensorspecifying the starting
timestep.
Default value:0. | 
| mask | Optional boolTensorhaving shapeconcat([batch_shape, trajectories_shape, num_timesteps]), in whichTrueentries indicate that the series value at the corresponding step
is missing and should be ignored. This argument should be passed only
ifobserved_time_seriesis not specified or does not already contain
a missingness mask; it is an error to pass both this
argument and anobserved_time_seriesvalue containing a missingness
mask.
Default value:None. | 
| experimental_parallelize | If True, use parallel message passing
algorithms fromtfp.experimental.parallel_filterto perform time
series operations inO(log num_timesteps)sequential steps. The
overall FLOP and memory cost may be larger than for the sequential
implementations by a constant factor.
Default value:False. | 
| Returns | |
|---|---|
| joint_distribution | joint distribution of model parameters and
observed trajectories. If no observed_time_serieswas specified, this
is an instance oftfd.JointDistributionNamedAutoBatchedwith a
random variable for each model parameter (with names and order matchingself.parameters), plus a final random variableobserved_time_seriesrepresenting a trajectory(ies) conditioned on the parameters. Ifobserved_time_serieswas specified, the return value is given byjoint_distribution.experimental_pin(
observed_time_series=observed_time_series)wherejoint_distributionis as just described, so it defines an unnormalized posterior
distribution over the parameters. | 
Example:
The joint distribution can generate prior samples of parameters and trajectories:
from matplotlib import pylab as plt
import tensorflow_probability as tfp
# Sample and plot 100 trajectories from the prior.
model = tfp.sts.LocalLinearTrend()
prior_samples = model.joint_distribution(num_timesteps=200).sample([100])
plt.plot(
  tf.linalg.matrix_transpose(prior_samples['observed_time_series'][..., 0]))
It also integrates with TFP inference APIs, providing a more flexible alternative to the STS-specific fitting utilities.
jd = model.joint_distribution(observed_time_series)
# Variational inference.
surrogate_posterior = (
  tfp.experimental.vi.build_factored_surrogate_posterior(
    event_shape=jd.event_shape,
    bijector=jd.experimental_default_event_space_bijector()))
losses = tfp.vi.fit_surrogate_posterior(
  target_log_prob_fn=jd.unnormalized_log_prob,
  surrogate_posterior=surrogate_posterior,
  optimizer=tf.optimizers.Adam(0.1),
  num_steps=200)
parameter_samples = surrogate_posterior.sample(50)
# No U-Turn Sampler.
samples, kernel_results = tfp.experimental.mcmc.windowed_adaptive_nuts(
  n_draws=500, joint_dist=dist)
joint_log_prob
joint_log_prob(
    observed_time_series
)
Build the joint density log p(params) + log p(y|params) as a callable. (deprecated)
| Args | |
|---|---|
| observed_time_series | Observed Tensortrajectories of shapesample_shape + batch_shape + [num_timesteps, 1](the trailing1dimension is optional ifnum_timesteps > 1), wherebatch_shapeshould matchself.batch_shape(the broadcast batch
shape of all priors on parameters for this structural time series
model). AnyNaNs are interpreted as missing observations; missingness
may be also be explicitly specified by passing atfp.sts.MaskedTimeSeriesinstance. | 
| Returns | |
|---|---|
| log_joint_fn | A function taking a Tensorargument for each model
parameter, in canonical order, and returning aTensorlog probability
of shapebatch_shape. Note that, unliketfp.Distributionslog_probmethods, thelog_jointsums over thesample_shapefrom y,
so thatsample_shapedoes not appear in the output log_prob. This
corresponds to viewing multiple samples inyas iid observations from a
single model, which is typically the desired behavior for parameter
inference. | 
make_state_space_model
make_state_space_model(
    num_timesteps,
    param_vals,
    initial_state_prior=None,
    initial_step=0,
    **linear_gaussian_ssm_kwargs
)
Instantiate this model as a Distribution over specified num_timesteps.
| Args | |
|---|---|
| num_timesteps | Python intnumber of timesteps to model. | 
| param_vals | a list of Tensorparameter values in order corresponding toself.parameters, or a dict mapping from parameter names to values. | 
| initial_state_prior | an optional Distributioninstance overriding the
default prior on the model's initial state. This is used in forecasting
("today's prior is yesterday's posterior"). | 
| initial_step | optional intspecifying the initial timestep to model.
This is relevant when the model contains time-varying components,
e.g., holidays or seasonality. | 
| **linear_gaussian_ssm_kwargs | Optional additional keyword arguments to
to the base tfd.LinearGaussianStateSpaceModelconstructor. | 
| Returns | |
|---|---|
| dist | a LinearGaussianStateSpaceModelDistribution object. | 
prior_sample
prior_sample(
    num_timesteps,
    initial_step=0,
    params_sample_shape=(),
    trajectories_sample_shape=(),
    seed=None
)
Sample from the joint prior over model parameters and trajectories. (deprecated)
| Args | |
|---|---|
| num_timesteps | Scalar intTensornumber of timesteps to model. | 
| initial_step | Optional scalar intTensorspecifying the starting
timestep.
  Default value: 0. | 
| params_sample_shape | Number of possible worlds to sample iid from the
parameter prior, or more generally, Tensorintshape to fill with
iid samples.
  Default value:[](i.e., draw a single sample and don't expand the
  shape). | 
| trajectories_sample_shape | For each sampled set of parameters, number
of trajectories to sample, or more generally, Tensorintshape to
fill with iid samples.
Default value:[](i.e., draw a single sample and don't expand the
  shape). | 
| seed | PRNG seed; see tfp.random.sanitize_seedfor details.
Default value:None. | 
| Returns | |
|---|---|
| trajectories | floatTensorof shapetrajectories_sample_shape + params_sample_shape + [num_timesteps, 1]containing all sampled trajectories. | 
| param_samples | list of sampled parameter value Tensors, in order
corresponding toself.parameters, each of shapeparams_sample_shape + prior.batch_shape + prior.event_shape. | 
__add__
__add__(
    other
)
Models the sum of the series from the two components.