code: def predict(self,h=5):
               
  
          if self.latent_variables.estimated is False:
              raise Exception("No latent variables estimated!")
          else:
  
              # Retrieve data, dates and (transformed) latent variables
              mu, Y = self._model(self.latent_variables.get_z_values()) 
              date_index = self.shift_dates(h)
              t_params = self.transform_z()
  
              # Expectation
              exps = self._forecast_mean(h,t_params,Y,None,None)
  
              for variable in range(0,exps.shape[0]):
                  forecasted_values = exps[variable][-h:]
                  if variable == 0:
                      result = pd.DataFrame(forecasted_values)
                      result.rename(columns={0:self.data_name[variable]}, inplace=True)
                      result.index = date_index[-h:]          
                  else:
                      result[self.data_name[variable]] = forecasted_values    
  
              return result
docs: Makes forecast with the estimated model
  
          Parameters
          ----------
          h : int (default : 5)
              How many steps ahead would you like to forecast?
  
          Returns
          ----------
          - pd.DataFrame with predicted values