class_docstr: Stan Estimator for MCMC Sampling
  
  Parameters
  ----------
  stan_mcmc_args : dict
      Supplemental stan mcmc args to pass to CmdStandPy.sampling()
code: def fit(
      self,
      model_name,
      model_param_names,
      sampling_temperature,
      data_input,
      fitter=None,
      init_values=None,
  ):
      # T_STAR is used as sampling temperature which is used for WBIC calculation
      data_input.update({"T_STAR": sampling_temperature})
      if self.verbose:
          msg_template = (
              "Sampling (PyStan) with chains: {:d}, cores: {:d}, temperature: {:.3f}, "
              "warmups (per chain): {:d} and samples(per chain): {:d}."
          )
          msg = msg_template.format(
              self.chains,
              self.cores,
              sampling_temperature,
              self._num_warmup_per_chain,
              self._num_sample_per_chain,
          )
          logger.info(msg)
  
      compiled_mod = get_compiled_stan_model(model_name)
      # check https://mc-stan.org/cmdstanpy/api.html#cmdstanpy.CmdStanModel.sample
      # for additional args
      stan_mcmc_fit = compiled_mod.sample(
          data=data_input,
          iter_sampling=self._num_sample_per_chain,
          iter_warmup=self._num_warmup_per_chain,
          chains=self.chains,
          parallel_chains=self.cores,
          inits=init_values,
          seed=self.seed,
          **self._stan_mcmc_args,
      )
  
      stan_extract = stan_mcmc_fit.stan_variables()
      posteriors = {
          param: stan_extract[param]
          for param in model_param_names + ["loglk"]
      }
  
      training_metrics = {
          "loglk": posteriors["loglk"],
          "sampling_temperature": sampling_temperature,
      }
  
      return posteriors, training_metrics
  
imports: from abc import abstractmethod
  from copy import copy
  import logging
  import multiprocessing
  from sys import platform, version_info
  from .base_estimator import BaseEstimator
  from ..exceptions import EstimatorException
  from ..utils.stan import get_compiled_stan_model, suppress_stdout_stderr
  from ..utils.general import update_dict
  from ..utils.logger import get_logger
label_desc: Use image node_id 3 for calling the StanEstimatorMCMC obj's underlying member method code with example usage: obj.fit(model_name, model_param_names, sampling_temperature, data_input, fitter, init_values) and returns: posteriors,  training_metrics