Plots forecast with the estimated model
        
        Parameters
        ----------
        h : int (default : 5)
            How many steps ahead would you like to forecast?
        
        past_values : int (default : 20)
            How many past observations to show on the forecast graph?
        
        intervals : Boolean
            Would you like to show 95% prediction intervals for the forecast?
        
        Returns
        ----------
        - Plot of the forecast
        - Error bars, forecasted_values, plot_values, plot_index

def plot_predict(self, h=5, past_values=20, intervals=True,**kwargs):
        """ Plots forecast with the estimated model
        
        Parameters
        ----------
        h : int (default : 5)
            How many steps ahead would you like to forecast?
        
        past_values : int (default : 20)
            How many past observations to show on the forecast graph?
        
        intervals : Boolean
            Would you like to show 95% prediction intervals for the forecast?
        
        Returns
        ----------
        - Plot of the forecast
        - Error bars, forecasted_values, plot_values, plot_index
        """
        import matplotlib.pyplot as plt
        import seaborn as sns

        figsize = kwargs.get('figsize',(10,7))

        if self.latent_variables.estimated is False:
            raise Exception("No latent variables estimated!")
        else:

            predictions, variance, lower, upper = self._construct_predict(self.latent_variables.get_z_values(),h) 
            full_predictions = np.append(self.data,predictions)
            full_lower = np.append(self.data,lower)
            full_upper = np.append(self.data,upper)
            date_index = self.shift_dates(h)

            # Plot values (how far to look back)
            plot_values = full_predictions[-h-past_values:]*self._norm_std + self._norm_mean
            plot_index = date_index[-h-past_values:]

            # Lower and upper intervals
            lower = np.append(full_predictions[-h-1],lower)
            upper = np.append(full_predictions[-h-1],upper)

            plt.figure(figsize=figsize)
            if intervals == True:
                plt.fill_between(date_index[-h-1:], 
                    lower*self._norm_std + self._norm_mean, 
                    upper*self._norm_std + self._norm_mean,
                    alpha=0.2)          
            
            plt.plot(plot_index,plot_values)
            plt.title("Forecast for " + self.data_name)
            plt.xlabel("Time")
            plt.ylabel(self.data_name)
            plt.show()