class_docstr: A Gaussian mixture posterior.
  
  The MCMC batch dimension that corresponds to the models in the mixture is located
  at `MCMC_DIM` (defined at the top of this file). Note that while each MCMC sample
  corresponds to a Gaussian posterior, the posterior is rather a mixture of Gaussian
  distributions.
class_docstr_tok: ["A","Gaussian","mixture","posterior",".","The","MCMC","batch","dimension","that","corresponds","to","the","models","in","the","mixture","is","located","at","`","MCMC_DIM","`","(","defined","at","the","top","of","this","file",")",".","Note","that","while","each","MCMC","sample","corresponds","to","a","Gaussian","posterior",",","the","posterior","is","rather","a","mixture","of","Gaussian","distributions","."]
docstr: The posterior variance for the mixture of models.
docstr_tok: ["The","posterior","variance","for","the","mixture","of","models","."]
code: def mixture_variance(self) -> Tensor:
      r"""The posterior variance for the mixture of models."""
      if self._mixture_variance is None:
          num_mcmc_samples = self.mean.shape[MCMC_DIM]
          t1 = self._variance.sum(dim=MCMC_DIM) / num_mcmc_samples
          t2 = self._mean.pow(2).sum(dim=MCMC_DIM) / num_mcmc_samples
          t3 = -(self._mean.sum(dim=MCMC_DIM) / num_mcmc_samples).pow(2)
          self._mixture_variance = t1 + t2 + t3
      return self._mixture_variance
  
file_path: botorch/botorch/posteriors/fully_bayesian.py
imports: from __future__ import annotations
  from typing import Callable, Optional, Tuple
  from warnings import warn
  import torch
  from botorch.posteriors.gpytorch import GPyTorchPosterior
  from gpytorch.distributions import MultivariateNormal
  from torch import Tensor
label_desc: Use image node_id 3 for calling the GaussianMixturePosterior obj's underlying member method code with example usage: obj.mixture_variance() and returns: self