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)
code: def __init__(self, formula, data, family):
      # Initialize TSM object
      super(NDynReg, self).__init__("NDynReg")
  
      # Latent Variables
      self.max_lag = 0
      self._z_hide = (
          0  # Whether to cutoff variance latent variables from results
      )
      self.supported_methods = ["MLE", "PML", "Laplace", "M-H", "BBVI"]
      self.default_method = "MLE"
      self.multivariate_model = False
  
      # Format the data
      self.is_pandas = True  # This is compulsory for this model type
      self.data_original = data
      self.formula = formula
      self.y, self.X = dmatrices(formula, data)
      self.z_no = self.X.shape[1]
      self.y_name = self.y.design_info.describe()
      self.data_name = self.y_name
      self.X_names = self.X.design_info.describe().split(" + ")
      self.y = np.array([self.y]).ravel()
      self.data = self.y
      self.data_length = self.data.shape[0]
      self.X = np.array([self.X])[0]
      self.index = data.index
      self.state_no = self.X.shape[1]
  
      self._create_latent_variables()
      self.family = family
      (
          self.model_name2,
          self.link,
          self.scale,
          self.shape,
          self.skewness,
          self.mean_transform,
          self.cythonized,
      ) = self.family.setup()
  
      self.model_name = self.model_name2 + " Dynamic Regression Model"
  
      # Build any remaining latent variables that are specific to the family chosen
      for no, i in enumerate(self.family.build_latent_variables()):
          self.latent_variables.add_z(i[0], i[1], i[2])
          self.latent_variables.z_list[no + 1].start = i[3]
  
      self.family_z_no = len(self.family.build_latent_variables())
      self.z_no = len(self.latent_variables.z_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 1 to create a new NDynReg object from inherited base classes: tsm with example: obj = NDynReg(formula, data, family)