class_docstr: Inherits time series methods from TSM class.
  
  **** BETA-t-EGARCH MODELS ****
  
  Parameters
  ----------
  data : pd.DataFrame or np.array
      Field to specify the time series data that will be used.
  
  p : int
      Field to specify how many GARCH terms the model will have.
  
  q : int
      Field to specify how many SCORE terms the model will have.
  
  target : str (pd.DataFrame) or int (np.array)
      Specifies which column name or array index to use. By default, first
      column/array will be selected as the dependent variable.
class_docstr_tok: ["Inherits","time","series","methods","from","TSM","class",".","*","*","*","*","BETA-t-EGARCH","MODELS","*","*","*","*","Parameters","--","--","--","--","--","data",":","pd.DataFrame","or","np.array","Field","to","specify","the","time","series","data","that","will","be","used",".","p",":","int","Field","to","specify","how","many","GARCH","terms","the","model","will","have",".","q",":","int","Field","to","specify","how","many","SCORE","terms","the","model","will","have",".","target",":","str","(","pd.DataFrame",")","or","int","(","np.array",")","Specifies","which","column","name","or","array","index","to","use",".","By","default",",","first","column\/array","will","be","selected","as","the","dependent","variable","."]
docstr: Creates the structure of the model (model matrices etc) for mini batch model.
  
  Here the structure is the same as for _normal_model() but we are going to
  sample a random choice of data points (of length mini_batch).
  
  Parameters
  ----------
  beta : np.ndarray
      Contains untransformed starting values for the latent variables
  
  mini_batch : int
      Mini batch size for the data sampling
  
  Returns
  ----------
  mu : np.ndarray
      Contains the predicted values (location) for the time series
  
  Y : np.ndarray
      Contains the length-adjusted time series (accounting for lags)
docstr_tok: ["Creates","the","structure","of","the","model","(","model","matrices","etc",")","for","mini","batch","model",".","Here","the","structure","is","the","same","as","for","_normal_model","(",")","but","we","are","going","to","sample","a","random","choice","of","data","points","(","of","length","mini_batch",")",".","Parameters","--","--","--","--","--","beta",":","np.ndarray","Contains","untransformed","starting","values","for","the","latent","variables","mini_batch",":","int","Mini","batch","size","for","the","data","sampling","Returns","--","--","--","--","--","mu",":","np.ndarray","Contains","the","predicted","values","(","location",")","for","the","time","series","Y",":","np.ndarray","Contains","the","length-adjusted","time","series","(","accounting","for","lags",")"]
code: def _mb_model(self, beta, mini_batch):
      """Creates the structure of the model (model matrices etc) for mini batch model.
  
      Here the structure is the same as for _normal_model() but we are going to
      sample a random choice of data points (of length mini_batch).
  
      Parameters
      ----------
      beta : np.ndarray
          Contains untransformed starting values for the latent variables
  
      mini_batch : int
          Mini batch size for the data sampling
  
      Returns
      ----------
      mu : np.ndarray
          Contains the predicted values (location) for the time series
  
      Y : np.ndarray
          Contains the length-adjusted time series (accounting for lags)
      """
  
      # Transform latent variables
      parm = np.array(
          [
              self.latent_variables.z_list[k].prior.transform(beta[k])
              for k in range(beta.shape[0])
          ]
      )
  
      rand_int = np.random.randint(
          low=0, high=self.data_length - mini_batch + 1
      )
      sample = np.arange(start=rand_int, stop=rand_int + mini_batch)
      sampled_data = self.data[sample]
  
      Y = np.array(sampled_data[self.max_lag :])
      X = np.ones(Y.shape[0])
      scores = np.zeros(Y.shape[0])
      lmda = np.ones(Y.shape[0]) * parm[0]
  
      # Loop over time series
      for t in range(0, Y.shape[0]):
          if t < self.max_lag:
              lmda[t] = parm[0] / (1 - np.sum(parm[1 : (self.p + 1)]))
  
          else:
              # Loop over GARCH terms
              for p_term in range(0, self.p):
                  lmda[t] += parm[1 + p_term] * lmda[t - p_term - 1]
  
              # Loop over Score terms
              for q_term in range(0, self.q):
                  lmda[t] += (
                      parm[1 + self.p + q_term] * scores[t - q_term - 1]
                  )
  
              if self.leverage is True:
                  lmda[t] += (
                      parm[-3]
                      * np.sign(-(Y[t - 1] - parm[-1]))
                      * (scores[t - 1] + 1)
                  )
  
          scores[t] = (
              ((parm[-2] + 1.0) * np.power(Y[t] - parm[-1], 2))
              / float(
                  parm[-2] * np.exp(lmda[t])
                  + np.power(Y[t] - parm[-1], 2)
              )
          ) - 1.0
  
      return lmda, Y, scores
  
imports: import sys
  import numpy
  import pandas
  import scipy.stats
  from ..None import families
  from ..None import output
  from ..None import tests
  from ..None import tsm
  from ..None import gas
  from ..None import data_check
label_desc: Use image node_id 4 for calling the EGARCH obj's underlying member method code with example usage: obj._mb_model(beta, mini_batch) and returns: lmda,  Y,  scores