'Initialize the SARIMAX model.
Notes
These initialization steps must occur following the parent class
__init__ function calls.'

def initialize(self):

    super(SARIMAX, self).initialize()
    self._manual_initialization = False
    self._polynomial_ar_idx = np.nonzero(self.polynomial_ar)[0][1:]
    self._polynomial_ma_idx = np.nonzero(self.polynomial_ma)[0][1:]
    self._polynomial_seasonal_ar_idx = np.nonzero(self.polynomial_seasonal_ar)[0][1:]
    self._polynomial_seasonal_ma_idx = np.nonzero(self.polynomial_seasonal_ma)[0][1:]
    start_row = self._k_states_diff
    end_row = ((start_row + self.k_ar) + self.k_seasonal_ar)
    col = self._k_states_diff
    if (not self.hamilton_representation):
        self.transition_ar_params_idx = np.s_['transition', start_row:end_row, col]
    else:
        self.transition_ar_params_idx = np.s_['transition', col, start_row:end_row]
    start_row += 1
    end_row = ((start_row + self.k_ma) + self.k_seasonal_ma)
    col = 0
    if (not self.hamilton_representation):
        self.selection_ma_params_idx = np.s_['selection', start_row:end_row, col]
    else:
        self.design_ma_params_idx = np.s_['design', col, start_row:end_row]
    if (self.state_regression and self.time_varying_regression):
        idx = np.diag_indices(self.k_posdef)
        self._exog_variance_idx = ('state_cov', idx[0][(- self.k_exog):], idx[1][(- self.k_exog):])
