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: Makes forecast with the estimated model
  
  Parameters
  ----------
  h : int (default : 5)
      How many steps ahead would you like to forecast?
  
  oos_data : pd.DataFrame
      Data for the variables to be used out of sample (ys can be NaNs)
  
  Returns
  ----------
  - pd.DataFrame with predictions
docstr_tok: ["Makes","forecast","with","the","estimated","model","Parameters","--","--","--","--","--","h",":","int","(","default",":","5",")","How","many","steps","ahead","would","you","like","to","forecast","?","oos_data",":","pd.DataFrame","Data","for","the","variables","to","be","used","out","of","sample","(","ys","can","be","NaNs",")","Returns","--","--","--","--","--","-","pd.DataFrame","with","predictions"]
code: def predict(self, h=5, oos_data=None):
      """Makes forecast with the estimated model
  
      Parameters
      ----------
      h : int (default : 5)
          How many steps ahead would you like to forecast?
  
      oos_data : pd.DataFrame
          Data for the variables to be used out of sample (ys can be NaNs)
  
      Returns
      ----------
      - pd.DataFrame with predictions
      """
  
      if self.latent_variables.estimated is False:
          raise Exception("No latent variables estimated!")
      else:
          # Sort/manipulate the out-of-sample data
          _, X_oos = dmatrices(self.formula, oos_data)
          X_oos = np.array([X_oos])[0]
          full_X = self.X.copy()
          full_X = np.append(full_X, X_oos, axis=0)
          Z = full_X
          a = self.states
  
          # Retrieve data, dates and (transformed) latent variables
          smoothed_series = np.zeros(h)
          for t in range(h):
              smoothed_series[t] = self.link(
                  np.dot(Z[self.y.shape[0] + t], a[:, -1])
              )
  
          date_index = self.shift_dates(h)
  
          result = pd.DataFrame(smoothed_series)
          result.rename(columns={0: self.y_name}, inplace=True)
          result.index = date_index[-h:]
  
          return result
  
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 21 for calling the NDynReg obj's underlying member method code with example usage: obj.predict(h, oos_data) and returns: result