diff --git a/pymc/step_methods/metropolis.py b/pymc/step_methods/metropolis.py index 70c650653d..c4787fa7a0 100644 --- a/pymc/step_methods/metropolis.py +++ b/pymc/step_methods/metropolis.py @@ -308,16 +308,18 @@ def astep(self, q0: RaveledVars) -> tuple[RaveledVars, StatsType]: else: accept_rate = self.delta_logp(q, q0d) q, accepted = metrop_select(accept_rate, q, q0d, rng=self.rng) - self.accept_rate_iter = accept_rate + self.accept_rate_iter[0] = accept_rate self.accepted_iter[0] = accepted self.accepted_sum += accepted self.steps_until_tune -= 1 + log_N = np.log(self.accept_rate_iter.shape[0]) + stats = { "tune": self.tune, "scaling": np.mean(self.scaling), - "accept": np.mean(np.exp(self.accept_rate_iter)), + "accept": np.exp(scipy.special.logsumexp(self.accept_rate_iter) - log_N), "accepted": np.mean(self.accepted_iter), }