class_docstr: Impulse response analysis class. Computes impulse responses, asymptotic
  standard errors, and produces relevant plots
  
  Parameters
  ----------
  model : VAR instance
  
  Notes
  -----
  Using Lütkepohl (2005) notation
class_docstr_tok: ["Impulse","response","analysis","class",".","Computes","impulse","responses",",","asymptotic","standard","errors",",","and","produces","relevant","plots","Parameters","--","--","--","--","--","model",":","VAR","instance","Notes","--","--","-","Using","L\u00fctkepohl","(","2005",")","notation"]
docstr: IRF Sims-Zha error band method 3. Does not assume symmetric error bands around mean.
  
  Parameters
  ----------
  orth : bool, default False
      Compute orthogonalized impulse responses
  repl : int, default 1000
      Number of MC replications
  signif : float (0 < signif < 1)
      Significance level for error bars, defaults to 95% CI
  seed : int, default None
      np.random seed
  burn : int, default 100
      Number of initial simulated obs to discard
  component : vector length neqs, default to largest for each
      Index of column of eigenvector/value to use for each error band
      Note: period of impulse (t=0) is not included when computing
      principle component
  
  References
  ----------
  Sims, Christopher A., and Tao Zha. 1999. "Error Bands for Impulse
  Response". Econometrica 67: 1113-1155.
docstr_tok: ["IRF","Sims-Zha","error","band","method","3",".","Does","not","assume","symmetric","error","bands","around","mean",".","Parameters","--","--","--","--","--","orth",":","bool",",","default","False","Compute","orthogonalized","impulse","responses","repl",":","int",",","default","1000","Number","of","MC","replications","signif",":","float","(","0","<","signif","<","1",")","Significance","level","for","error","bars",",","defaults","to","95","%","CI","seed",":","int",",","default","None","np.random","seed","burn",":","int",",","default","100","Number","of","initial","simulated","obs","to","discard","component",":","vector","length","neqs",",","default","to","largest","for","each","Index","of","column","of","eigenvector\/value","to","use","for","each","error","band","Note",":","period","of","impulse","(","t=0",")","is","not","included","when","computing","principle","component","References","--","--","--","--","--","Sims",",","Christopher","A.",",","and","Tao","Zha",".","1999",".","``","Error","Bands","for","Impulse","Response","''",".","Econometrica","67",":","1113-1155","."]
code: def err_band_sz3(
      self,
      orth=False,
      svar=False,
      repl=1000,
      signif=0.05,
      seed=None,
      burn=100,
      component=None,
  ):
      """
      IRF Sims-Zha error band method 3. Does not assume symmetric error bands around mean.
  
      Parameters
      ----------
      orth : bool, default False
          Compute orthogonalized impulse responses
      repl : int, default 1000
          Number of MC replications
      signif : float (0 < signif < 1)
          Significance level for error bars, defaults to 95% CI
      seed : int, default None
          np.random seed
      burn : int, default 100
          Number of initial simulated obs to discard
      component : vector length neqs, default to largest for each
          Index of column of eigenvector/value to use for each error band
          Note: period of impulse (t=0) is not included when computing
          principle component
  
      References
      ----------
      Sims, Christopher A., and Tao Zha. 1999. "Error Bands for Impulse
      Response". Econometrica 67: 1113-1155.
      """
  
      model = self.model
      periods = self.periods
      irfs = self._choose_irfs(orth, svar)
      neqs = self.neqs
      irf_resim = model.irf_resim(
          orth=orth, repl=repl, steps=periods, seed=seed, burn=100
      )
      stack = np.zeros((neqs, repl, periods * neqs))
  
      # stack left to right, up and down
  
      for p in range(repl):
          for i in range(neqs):
              stack[i, p, :] = np.ravel(irf_resim[p, 1:, :, i].T)
  
      stack_cov = np.zeros((neqs, periods * neqs, periods * neqs))
      W = np.zeros((neqs, periods * neqs, periods * neqs))
      eigva = np.zeros((neqs, periods * neqs))
      k = np.zeros(neqs, dtype=int)
  
      if component is not None:
          if np.size(component) != (neqs):
              raise ValueError(
                  "Component array must be of length " + str(neqs)
              )
          if np.argmax(component) >= neqs * periods:
              raise ValueError(
                  "Atleast one of the components does not exist"
              )
          else:
              k = component
  
      # compute for eigen decomp for each stack
      for i in range(neqs):
          stack_cov[i] = np.cov(stack[i], rowvar=0)
          W[i], eigva[i], k[i] = util.eigval_decomp(stack_cov[i])
  
      gamma = np.zeros((repl, periods + 1, neqs, neqs))
      for p in range(repl):
          c = 0
          for j in range(neqs):
              for i in range(neqs):
                  gamma[p, 1:, i, j] = (
                      W[j, k[j], i * periods : (i + 1) * periods]
                      * irf_resim[p, 1:, i, j]
                  )
                  if i == neqs - 1:
                      gamma[p, 1:, i, j] = (
                          W[j, k[j], i * periods :]
                          * irf_resim[p, 1:, i, j]
                      )
  
      gamma_sort = np.sort(gamma, axis=0)  # sort to get quantiles
      indx = (
          round(signif / 2 * repl) - 1,
          round((1 - signif / 2) * repl) - 1,
      )
  
      lower = np.copy(irfs)
      upper = np.copy(irfs)
      for i in range(neqs):
          for j in range(neqs):
              lower[:, i, j] = (
                  irfs[:, i, j] + gamma_sort[indx[0], :, i, j]
              )
              upper[:, i, j] = (
                  irfs[:, i, j] + gamma_sort[indx[1], :, i, j]
              )
  
      return lower, upper
  
imports: import numpy
  import numpy.linalg
  import scipy.linalg
  from statsmodels.tools.decorators import cache_readonly
  import statsmodels.tsa.tsatools
  import statsmodels.tsa.vector_ar.plotting
  import statsmodels.tsa.vector_ar.util
label_desc: Use image node_id 6 for calling the IRAnalysis obj's underlying member method code with example usage: obj.err_band_sz3(orth, svar, repl, signif, seed, burn, component) and returns: lower,  upper