class_docstr: This is the Sparse Variational GP using MCMC (SGPMC).
  
  The key reference is :cite:t:`hensman2015mcmc`.
  
  The latent function values are represented by centered
  (whitened) variables, so
  
  .. math::
     :nowrap:
  
     \begin{align}
     \mathbf v & \sim N(0, \mathbf I) \\
     \mathbf u &= \mathbf L\mathbf v
     \end{align}
  
  with
  
  .. math::
      \mathbf L \mathbf L^\top = \mathbf K
code: def log_posterior_density(self) -> tf.Tensor:  # type: ignore[override]
      return (
          self.log_likelihood_lower_bound() + self.log_prior_density()
      )
  
imports: from typing import Optional
  import numpy
  import tensorflow
  import tensorflow_probability
  from check_shapes import check_shapes, inherit_check_shapes
  from ..base import InputData, MeanAndVariance, Parameter, RegressionData
  from ..conditionals import conditional
  from ..kernels import Kernel
  from ..likelihoods import Likelihood
  from ..mean_functions import MeanFunction
  from ..utilities import to_default_float
  from .model import GPModel
  from .training_mixins import InternalDataTrainingLossMixin
  from .util import InducingPointsLike, data_input_to_tensor, inducingpoint_wrapper
label_desc: Use image node_id 2 for calling the SGPMC obj's underlying member method code with example usage: obj.log_posterior_density() and returns: unknown