docs: def expected_log_joint_probability(self):
          """
          Compute E_{q(z) q(x)} [log p(z) + log p(x | z) + log p(y | x, z)]
          """
          # E_{q(z)}[log p(z)]
          from pyslds.util import expected_hmm_logprob
          elp = expected_hmm_logprob(
              self.pi_0, self.trans_matrix,
              (self.expected_states, self.expected_transcounts, self._normalizer))
  
          # E_{q(x)}[log p(y, x | z)]  is given by aBl
          # To get E_{q(x)}[ aBl ] we multiply and sum
          elp += np.sum(self.expected_states * self.vbem_aBl)
          return elp