class_docstr: Formal representation of a semi-local linear trend model.
  
  Like the `LocalLinearTrend` model, a semi-local linear trend posits a
  latent `level` and `slope`, with the level component updated according to
  the current slope plus a random walk:
  
  ```
  level[t] = level[t-1] + slope[t-1] + Normal(0., level_scale)
  ```
  
  The slope component in a `SemiLocalLinearTrend` model evolves according to
  a first-order autoregressive (AR1) process with potentially nonzero mean:
  
  ```
  slope[t] = (slope_mean +
              autoregressive_coef * (slope[t-1] - slope_mean) +
              Normal(0., slope_scale))
  ```
  
  Unlike the random walk used in `LocalLinearTrend`, a stationary
  AR1 process (coefficient in `(-1, 1)`) maintains bounded variance over time,
  so a `SemiLocalLinearTrend` model will often produce more reasonable
  uncertainties when forecasting over long timescales.
class_docstr_tok: ["Formal","representation","of","a","semi-local","linear","trend","model",".","Like","the","`","LocalLinearTrend","`","model",",","a","semi-local","linear","trend","posits","a","latent","`","level","`","and","`","slope","`",",","with","the","level","component","updated","according","to","the","current","slope","plus","a","random","walk",":","``","`","level","[","t","]","=","level","[","t-1","]","+","slope","[","t-1","]","+","Normal","(","0.",",","level_scale",")","``","`","The","slope","component","in","a","`","SemiLocalLinearTrend","`","model","evolves","according","to","a","first-order","autoregressive","(","AR1",")","process","with","potentially","nonzero","mean",":","``","`","slope","[","t","]","=","(","slope_mean","+","autoregressive_coef","*","(","slope","[","t-1","]","-","slope_mean",")","+","Normal","(","0.",",","slope_scale",")",")","``","`","Unlike","the","random","walk","used","in","`","LocalLinearTrend","`",",","a","stationary","AR1","process","(","coefficient","in","`","(","-1",",","1",")","`",")","maintains","bounded","variance","over","time",",","so","a","`","SemiLocalLinearTrend","`","model","will","often","produce","more","reasonable","uncertainties","when","forecasting","over","long","timescales","."]
code: def _make_state_space_model(
      self,
      num_timesteps,
      param_map,
      initial_state_prior=None,
      **linear_gaussian_ssm_kwargs,
  ):
      if initial_state_prior is None:
          initial_state_prior = self.initial_state_prior
      linear_gaussian_ssm_kwargs.update(param_map)
      return SemiLocalLinearTrendStateSpaceModel(
          num_timesteps=num_timesteps,
          initial_state_prior=initial_state_prior,
          **linear_gaussian_ssm_kwargs,
      )
  
imports: import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import chain
  from tensorflow_probability.python.bijectors import identity
  from tensorflow_probability.python.bijectors import scale
  from tensorflow_probability.python.bijectors import sigmoid
  from tensorflow_probability.python.bijectors import softplus
  from tensorflow_probability.python.bijectors import tanh
  from tensorflow_probability.python.distributions import linear_gaussian_ssm
  from tensorflow_probability.python.distributions import lognormal
  from tensorflow_probability.python.distributions import mvn_diag
  from tensorflow_probability.python.distributions import normal
  from tensorflow_probability.python.internal import distribution_util
  from tensorflow_probability.python.internal import dtype_util
  from tensorflow_probability.python.sts.internal import util
  from tensorflow_probability.python.sts.structural_time_series import Parameter
  from tensorflow_probability.python.sts.structural_time_series import StructuralTimeSeries
label_desc: Use image node_id 3 for calling the SemiLocalLinearTrend obj's underlying member method code with example usage: obj._make_state_space_model(num_timesteps, param_map, initial_state_prior) and returns: SemiLocalLinearTrendStateSpaceModel