class_docstr: Metropolis-Hastings SMC_kernel
code: def sample_stats(self) -> SMCStats:
      stats = super().sample_stats()
      stats.update(
          {
              "mean_accept_rate": self.chain_acc_rate.mean(),
              "mean_proposal_scale": self.proposal_scales.mean(),
          }
      )
      return stats
  
imports: import abc
  import sys
  import warnings
  from abc import ABC
  from typing import Dict, Union, cast
  import numpy
  import pytensor.tensor
  from pytensor.graph.replace import clone_replace
  from scipy.special import logsumexp
  from scipy.stats import multivariate_normal
  from typing_extensions import TypeAlias
  from pymc.backends.ndarray import NDArray
  from pymc.blocking import DictToArrayBijection
  from pymc.initial_point import make_initial_point_expression
  from pymc.model import Point, modelcontext
  from pymc.pytensorf import compile_pymc, floatX, join_nonshared_inputs, make_shared_replacements
  from pymc.sampling.forward import draw
  from pymc.step_methods.metropolis import MultivariateNormalProposal
  from pymc.vartypes import discrete_types
label_desc: Use image node_id 6 for calling the MH obj's underlying member method code with example usage: obj.sample_stats() and returns: stats