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

def predict(self, h=5):
        """ 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
        """     

        if self.latent_variables.estimated is False:
            raise Exception("No latent variables estimated!")
        else:
            predictions, _, _, _ = self._construct_predict(self.latent_variables.get_z_values(),h)    
            predictions = predictions*self._norm_std + self._norm_mean  
            date_index = self.shift_dates(h)
            result = pd.DataFrame(predictions)
            result.rename(columns={0:self.data_name}, inplace=True)
            result.index = date_index[-h:]

            return result