code: def test_no_covariates_is_similar_to_zero_design_matrix(self):
      if not tf.executing_eagerly():
          return
      seed = test_util.test_seed(sampler_type="stateless")
      build_model_seed, sample_seed = samplers.split_seed(seed)
      dtype = tf.float32
      num_timesteps = 5
      num_features = 2
      seed = test_util.test_seed(sampler_type="stateless")
      model, observed_time_series, is_missing = self._build_test_model(
          num_timesteps=num_timesteps,
          num_features=num_features,
          batch_shape=[3],
          prior_class=gibbs_sampler.XLACompilableInverseGamma,
          time_series_shift=10.0,
          dtype=dtype,
          design_matrix=None,
          weights_prior_scale=None,
          seed=build_model_seed,
      )
  
      @tf.function(jit_compile=True)
      def do_sampling(observed_time_series, is_missing):
          return gibbs_sampler.fit_with_gibbs_sampling(
              model,
              missing_values_util.MaskedTimeSeries(
                  observed_time_series, is_missing
              ),
              num_results=30,
              num_warmup_steps=10,
              seed=sample_seed,
          )
  
      samples = do_sampling(
          observed_time_series[..., tf.newaxis], is_missing
      )
  
      (
          dummy_model,
          observed_time_series,
          is_missing,
      ) = self._build_test_model(
          num_timesteps=num_timesteps,
          num_features=num_features,
          batch_shape=[3],
          prior_class=gibbs_sampler.XLACompilableInverseGamma,
          dtype=dtype,
          time_series_shift=10.0,
          design_matrix=tf.zeros([num_timesteps, num_features]),
          weights_prior_scale=None,
          sparse_weights_nonzero_prob=0.5,
          seed=build_model_seed,
      )  # reuse seed!
  
      @tf.function(jit_compile=True)
      def do_sampling_again(observed_time_series, is_missing):
          return gibbs_sampler.fit_with_gibbs_sampling(
              dummy_model,
              missing_values_util.MaskedTimeSeries(
                  observed_time_series, is_missing
              ),
              num_results=30,
              num_warmup_steps=10,
              seed=sample_seed,
          )
  
      new_samples = do_sampling_again(
          observed_time_series[..., tf.newaxis], is_missing
      )
      for key in (
          "observation_noise_scale",
          "level_scale",
          "level",
          "slope_scale",
          "slope",
      ):
          first_mean = tf.reduce_mean(getattr(samples, key), axis=0)
          second_mean = tf.reduce_mean(
              getattr(new_samples, key), axis=0
          )
          self.assertAllClose(
              first_mean,
              second_mean,
              atol=0.15,
              msg=f"{key} mean differ",
          )
  
          first_std = tf.math.reduce_std(getattr(samples, key), axis=0)
          second_std = tf.math.reduce_std(
              getattr(new_samples, key), axis=0
          )
          self.assertAllClose(
              first_std,
              second_std,
              atol=0.2,
              msg=f"{key} stddev differ",
          )
  
imports: from absl.testing import parameterized
  import numpy
  import tensorflow.compat.v2
  from tensorflow_probability.python.bijectors import identity
  from tensorflow_probability.python.bijectors import invert
  from tensorflow_probability.python.bijectors import square
  from tensorflow_probability.python.distributions import inverse_gamma
  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.distributions import student_t
  from tensorflow_probability.python.distributions import transformed_distribution
  from tensorflow_probability.python.distributions.linear_gaussian_ssm import linear_gaussian_update
  from tensorflow_probability.python.experimental.distributions import mvn_precision_factor_linop
  from tensorflow_probability.python.experimental.sts_gibbs import gibbs_sampler
  from tensorflow_probability.python.internal import samplers
  from tensorflow_probability.python.internal import test_util
  from tensorflow_probability.python.stats import sample_stats
  from tensorflow_probability.python.sts.components import local_level
  from tensorflow_probability.python.sts.components import local_linear_trend
  from tensorflow_probability.python.sts.components import regression
  from tensorflow_probability.python.sts.components import seasonal
  from tensorflow_probability.python.sts.components import semilocal_linear_trend
  from tensorflow_probability.python.sts.components import sum
  from tensorflow_probability.python.sts.forecast import forecast
  from tensorflow_probability.python.sts.internal import missing_values_util
  from tensorflow_probability.python.sts.internal import util
label_desc: Use image node_id 4 for calling the GibbsSamplerTests obj's underlying member method code with example usage: obj.test_no_covariates_is_similar_to_zero_design_matrix() and returns: gibbs_sampler, gibbs_sampler