'(array) Starting parameters for maximum likelihood estimation.
Notes
These are not very sophisticated and / or good. We set equal transition
probabilities and interpolate regression coefficients between zero and
the OLS estimates, where the interpolation is based on the regime
number. We rely heavily on the EM algorithm to quickly find much better
starting parameters, which are then used by the typical scoring
approach.'

@property
def start_params(self):

    params = markov_switching.MarkovSwitching.start_params.fget(self)
    if (self._k_exog > 0):
        beta = np.dot(np.linalg.pinv(self.exog), self.endog)
        variance = np.var((self.endog - np.dot(self.exog, beta)))
        if np.any(self.switching_coeffs):
            for i in range(self.k_regimes):
                params[self.parameters[(i, 'exog')]] = (beta * (i / self.k_regimes))
        else:
            params[self.parameters['exog']] = beta
    else:
        variance = np.var(self.endog)
    if self.switching_variance:
        params[self.parameters['variance']] = np.linspace((variance / 10.0), variance, num=self.k_regimes)
    else:
        params[self.parameters['variance']] = variance
    return params
