'EM iteration
Notes
The EM iteration in this base class only performs the EM step for
non-TVTP transition probabilities.'

def _em_iteration(self, params0):

    params1 = np.zeros(params0.shape, dtype=np.promote_types(np.float64, params0.dtype))
    result = self.smooth(params0, transformed=True, return_raw=True)
    if self.tvtp:
        params1[self.parameters['regime_transition']] = params0[self.parameters['regime_transition']]
    else:
        regime_transition = self._em_regime_transition(result)
        for i in range(self.k_regimes):
            params1[self.parameters[(i, 'regime_transition')]] = regime_transition[i]
    return (result, params1)
