code: def _preoptimize_model(self, initials, method):
          
  
          random_starts = np.random.normal(0.1, 0.1, [2, 1000])
  
          best_start = self.latent_variables.get_z_starting_values()
          best_lik = self.neg_loglik(self.latent_variables.get_z_starting_values())
          proposal_start = best_start.copy()
  
          for start in range(random_starts.shape[1]):
              proposal_start[0:2] = random_starts[:,start]
              proposal_likelihood = self.neg_loglik(proposal_start)
              if proposal_likelihood < best_lik:
                  best_lik = proposal_likelihood
                  best_start = proposal_start.copy()
          return best_start
docs: Preoptimizes the model by estimating a static model, then a quick search of good AR/SC parameters
  
          Parameters
          ----------
          initials : np.array
              A vector of inital values
  
          method : str
              One of 'MLE' or 'PML' (the optimization options)
  
          Returns
          ----------
          Y_exp : np.array
              Vector of past values and predictions