class_docstr: Fit VAR and then estimate structural components of A and B, defined:
  
  .. math:: Ay_t = A_1 y_{t-1} + \ldots + A_p y_{t-p} + B\var(\epsilon_t)
  
  Parameters
  ----------
  endog : array_like
      1-d endogenous response variable. The independent variable.
  dates : array_like
      must match number of rows of endog
  svar_type : str
      "A" - estimate structural parameters of A matrix, B assumed = I
      "B" - estimate structural parameters of B matrix, A assumed = I
      "AB" - estimate structural parameters indicated in both A and B matrix
  A : array_like
      neqs x neqs with unknown parameters marked with 'E' for estimate
  B : array_like
      neqs x neqs with unknown parameters marked with 'E' for estimate
  
  References
  ----------
  Hamilton (1994) Time Series Analysis
class_docstr_tok: ["Fit","VAR","and","then","estimate","structural","components","of","A","and","B",",","defined",":","..","math",":",":","Ay_t","=","A_1","y_","{","t-1","}","+","\\ldots","+","A_p","y_","{","t-p","}","+","B\\var","(","\\epsilon_t",")","Parameters","--","--","--","--","--","endog",":","array_like","1-d","endogenous","response","variable",".","The","independent","variable",".","dates",":","array_like","must","match","number","of","rows","of","endog","svar_type",":","str","``","A","''","-","estimate","structural","parameters","of","A","matrix",",","B","assumed","=","I","``","B","''","-","estimate","structural","parameters","of","B","matrix",",","A","assumed","=","I","``","AB","''","-","estimate","structural","parameters","indicated","in","both","A","and","B","matrix","A",":","array_like","neqs","x","neqs","with","unknown","parameters","marked","with","'","E","'","for","estimate","B",":","array_like","neqs","x","neqs","with","unknown","parameters","marked","with","'","E","'","for","estimate","References","--","--","--","--","--","Hamilton","(","1994",")","Time","Series","Analysis"]
docstr: Solves for MLE estimate of structural parameters
  
  Parameters
  ----------
  
  override : bool, default False
      If True, returns estimates of A and B without checking
      order or rank condition
  solver : str or None, optional
      Solver to be used. The default is 'nm' (Nelder-Mead). Other
      choices are 'bfgs', 'newton' (Newton-Raphson), 'cg'
      conjugate, 'ncg' (non-conjugate gradient), and 'powell'.
  maxiter : int, optional
      The maximum number of iterations. Default is 500.
  
  Returns
  -------
  A_solve, B_solve: ML solutions for A, B matrices
docstr_tok: ["Solves","for","MLE","estimate","of","structural","parameters","Parameters","--","--","--","--","--","override",":","bool",",","default","False","If","True",",","returns","estimates","of","A","and","B","without","checking","order","or","rank","condition","solver",":","str","or","None",",","optional","Solver","to","be","used",".","The","default","is","'nm","'","(","Nelder-Mead",")",".","Other","choices","are","'bfgs","'",",","'newton","'","(","Newton-Raphson",")",",","'cg'","conjugate",",","'ncg","'","(","non-conjugate","gradient",")",",","and","'powell","'",".","maxiter",":","int",",","optional","The","maximum","number","of","iterations",".","Default","is","500",".","Returns","--","--","--","-","A_solve",",","B_solve",":","ML","solutions","for","A",",","B","matrices"]
code: def _solve_AB(
      self, start_params, maxiter, override=False, solver="bfgs"
  ):
      """
      Solves for MLE estimate of structural parameters
  
      Parameters
      ----------
  
      override : bool, default False
          If True, returns estimates of A and B without checking
          order or rank condition
      solver : str or None, optional
          Solver to be used. The default is 'nm' (Nelder-Mead). Other
          choices are 'bfgs', 'newton' (Newton-Raphson), 'cg'
          conjugate, 'ncg' (non-conjugate gradient), and 'powell'.
      maxiter : int, optional
          The maximum number of iterations. Default is 500.
  
      Returns
      -------
      A_solve, B_solve: ML solutions for A, B matrices
      """
      # TODO: this could stand a refactor
      A_mask = self.A_mask
      B_mask = self.B_mask
      A = self.A
      B = self.B
      A_len = len(A[A_mask])
  
      A[A_mask] = start_params[:A_len]
      B[B_mask] = start_params[A_len:]
  
      if not override:
          J = self._compute_J(A, B)
          self.check_order(J)
          self.check_rank(J)
      else:  # TODO: change to a warning?
          print("Order/rank conditions have not been checked")
  
      retvals = (
          super()
          .fit(
              start_params=start_params,
              method=solver,
              maxiter=maxiter,
              gtol=1e-20,
              disp=False,
          )
          .params
      )
  
      A[A_mask] = retvals[:A_len]
      B[B_mask] = retvals[A_len:]
  
      return A, B
  
imports: import numpy
  import numpy.linalg
  from numpy.linalg import slogdet
  from statsmodels.tools.decorators import deprecated_alias
  from statsmodels.tools.numdiff import approx_fprime, approx_hess
  import statsmodels.tsa.base.tsa_model
  from statsmodels.tsa.vector_ar.irf import IRAnalysis
  import statsmodels.tsa.vector_ar.util
  from statsmodels.tsa.vector_ar.var_model import VARProcess, VARResults
label_desc: Use image node_id 8 for calling the SVAR obj's underlying member method code with example usage: obj._solve_AB(start_params, maxiter, override, solver) and returns: A,  B