class_docstr: Inherits time series methods from TSM class.
  
  **** NON-GAUSSIAN DYNAMIC REGRESSION MODELS ****
  
  Parameters
  ----------
  
  formula : string
      patsy string describing the regression
  
  data : pd.DataFrame
      Field to specify the data that will be used
  
  family : 
      e.g. pf.Normal(0,1)
docstr: Initializes the appoximate distibution for the model
  
  Parameters
  ----------
  phi : np.ndarray
      Latent variables
  
  start_diffuse: boolean
      Whether to start from diffuse values or not
  
  gaussian_latents: LatentVariables object
      Latent variables for the Gaussian approximation
  
  Returns
  ----------
  BBVI fit object
docstr_tok: ["Initializes","the","appoximate","distibution","for","the","model","Parameters","--","--","--","--","--","phi",":","np.ndarray","Latent","variables","start_diffuse",":","boolean","Whether","to","start","from","diffuse","values","or","not","gaussian_latents",":","LatentVariables","object","Latent","variables","for","the","Gaussian","approximation","Returns","--","--","--","--","--","BBVI","fit","object"]
code: def initialize_approx_dist(
      self, phi, start_diffuse, gaussian_latents
  ):
      """Initializes the appoximate distibution for the model
  
      Parameters
      ----------
      phi : np.ndarray
          Latent variables
  
      start_diffuse: boolean
          Whether to start from diffuse values or not
  
      gaussian_latents: LatentVariables object
          Latent variables for the Gaussian approximation
  
      Returns
      ----------
      BBVI fit object
      """
  
      # Starting values for approximate distribution
      for i in range(len(self.latent_variables.z_list)):
          approx_dist = self.latent_variables.z_list[i].q
          if isinstance(approx_dist, fam.Normal):
              self.latent_variables.z_list[i].q.loc = phi[i]
              self.latent_variables.z_list[i].q.scale = -3.0
  
      q_list = [k.q for k in self.latent_variables.z_list]
  
      # Get starting values for states
      T, Z, R, Q = self._ss_matrices(phi)
  
      H, mu = self.family.approximating_model_reg(
          phi,
          T,
          Z,
          R,
          Q,
          gaussian_latents.get_z_values(transformed=True)[0],
          self.data,
          self.X,
          self.state_no,
      )
  
      a, V = self.smoothed_state(self.data, phi, H, mu)
  
      V[0][0][0] = V[0][0][-1]
  
      for state in range(self.state_no):
          for item in range(self.data_length):
              if start_diffuse is False:
                  q_list.append(
                      fam.Normal(
                          a[state][item],
                          np.sqrt(np.abs(V[0][state][item])),
                      )
                  )
              else:
                  q_list.append(
                      fam.Normal(
                          self.family.itransform(np.mean(self.data)),
                          np.exp(-3),
                      )
                  )
  
      return q_list
  
imports: import sys
  import numpy
  import pandas
  import scipy.stats
  from scipy import optimize
  from ..None import inference
  from ..None import families
  from ..None import output
  from ..None import tsm
  from ..None import data_check
  from ..None import covariances
  from ..None import results
  from ..None import gas
  from .kalman import *
  from .dynlin import *
label_desc: Use image node_id 17 for calling the NDynReg obj's underlying member method code with example usage: obj.initialize_approx_dist(phi, start_diffuse, gaussian_latents) and returns: q_list