class_docstr: Latent Variables Class
  
  Holds latent variable objects and contains method for latent variable manipulation. Latent variables are 
  referred to as z as shorthand. This is convention in much of the literature.
docstr: Creates multiple latent variables
  
  Parameters
  ----------
  name : str
      Name of the latent variable
  
  dim : list
      Dimension of the latent variable arrays
  
  prior : Prior object
      Which prior distribution? E.g. Normal(0,1)
  
  q : Distribution object
      Which distribution to use for variational approximation
  
  Returns
  ----------
  None (changes priors in LatentVariables object)
docstr_tok: ["Creates","multiple","latent","variables","Parameters","--","--","--","--","--","name",":","str","Name","of","the","latent","variable","dim",":","list","Dimension","of","the","latent","variable","arrays","prior",":","Prior","object","Which","prior","distribution","?","E.g",".","Normal","(","0,1",")","q",":","Distribution","object","Which","distribution","to","use","for","variational","approximation","Returns","--","--","--","--","--","None","(","changes","priors","in","LatentVariables","object",")"]
code: def create(self, name, dim, prior, q):
      """Creates multiple latent variables
  
      Parameters
      ----------
      name : str
          Name of the latent variable
  
      dim : list
          Dimension of the latent variable arrays
  
      prior : Prior object
          Which prior distribution? E.g. Normal(0,1)
  
      q : Distribution object
          Which distribution to use for variational approximation
  
      Returns
      ----------
      None (changes priors in LatentVariables object)
      """
  
      def rec(dim, prev=[]):
          if len(dim) > 0:
              return [rec(dim[1:], prev + [i]) for i in range(dim[0])]
          else:
              return "(" + ",".join([str(j) for j in prev]) + ")"
  
      indices = rec(dim)
  
      for f_dim in range(1, len(dim)):
          indices = sum(indices, [])
  
      if self.z_list is None:
          starting_index = 0
      else:
          starting_index = len(self.z_list)
  
      self.z_indices[name] = {
          "start": starting_index,
          "end": starting_index + len(indices) - 1,
          "dim": len(dim),
      }
  
      for index in indices:
          self.add_z(name + " " + index, prior, q, index=False)
  
imports: import numpy
  import pandas
  from .covariances import acf
  from .output import TablePrinter
  from .inference import *
  from .families import Normal, t, TruncatedNormal, Cauchy, Skewt, InverseGamma, Flat, InverseWishart, Laplace
label_desc: Use image node_id 4 for calling the LatentVariables obj's underlying member method code with example usage: obj.create(name, dim, prior, q) and returns: unknown, unknown