def plot_ppc(self, nsims=1000, T=np.mean, **kwargs):
        """ Plots histogram of the discrepancy from draws of the posterior

        Parameters
        ----------
        nsims : int (default : 1000)
            How many draws for the PPC

        T : function
            A discrepancy measure - e.g. np.mean, np.std, np.max
        """     
        if self.latent_variables.estimation_method not in ['BBVI', 'M-H']:
            raise Exception("No latent variables estimated!")
        else:
            import matplotlib.pyplot as plt
            import seaborn as sns

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

            lv_draws = self.draw_latent_variables(nsims=nsims)
            mus = [self._model(lv_draws[:,i])[0] for i in range(nsims)]
            model_scale, model_shape, model_skewness = self._get_scale_and_shape_sim(lv_draws)
            data_draws = np.array([self.family.draw_variable(self.link(mus[i]), 
                np.repeat(model_scale[i], mus[i].shape[0]), np.repeat(model_shape[i], mus[i].shape[0]), 
                np.repeat(model_skewness[i], mus[i].shape[0]), mus[i].shape[0]) for i in range(nsims)])
            T_sim = T(self.sample(nsims=nsims), axis=1)
            T_actual = T(self.data)

            if T == np.mean:
                description = " of the mean"
            elif T == np.max:
                description = " of the maximum"
            elif T == np.min:
                description = " of the minimum"
            elif T == np.median:
                description = " of the median"
            else:
                description = ""

            plt.figure(figsize=figsize)
            ax = plt.subplot()
            ax.axvline(T_actual)
            sns.distplot(T_sim, kde=False, ax=ax)
            ax.set(title='Posterior predictive' + description, xlabel='T(x)', ylabel='Frequency');
            plt.show()
def plot_ppc ( self , nsims = 1000 , T = np . mean , ** kwargs ) : if self . latent_variables . estimation_method not in [ 'BBVI' , 'M-H' ] : raise Exception ( "No latent variables estimated!" ) else : import matplotlib . pyplot as plt import seaborn as sns figsize = kwargs . get ( 'figsize' , ( 10 , 7 ) ) lv_draws = self . draw_latent_variables ( nsims = nsims ) mus = [ self . _model ( lv_draws [ : , i ] ) [ 0 ] for i in range ( nsims ) ] model_scale , model_shape , model_skewness = self . _get_scale_and_shape_sim ( lv_draws ) data_draws = np . array ( [ self . family . draw_variable ( self . link ( mus [ i ] ) , np . repeat ( model_scale [ i ] , mus [ i ] . shape [ 0 ] ) , np . repeat ( model_shape [ i ] , mus [ i ] . shape [ 0 ] ) , np . repeat ( model_skewness [ i ] , mus [ i ] . shape [ 0 ] ) , mus [ i ] . shape [ 0 ] ) for i in range ( nsims ) ] ) T_sim = T ( self . sample ( nsims = nsims ) , axis = 1 ) T_actual = T ( self . data ) if T == np . mean : description = " of the mean" elif T == np . max : description = " of the maximum" elif T == np . min : description = " of the minimum" elif T == np . median : description = " of the median" else : description = "" plt . figure ( figsize = figsize ) ax = plt . subplot ( ) ax . axvline ( T_actual ) sns . distplot ( T_sim , kde = False , ax = ax ) ax . set ( title = 'Posterior predictive' + description , xlabel = 'T(x)' , ylabel = 'Frequency' ) ; plt . show ( )
Plots histogram of the discrepancy from draws of the posterior

        Parameters
        ----------
        nsims : int (default : 1000)
            How many draws for the PPC

        T : function
            A discrepancy measure - e.g. np.mean, np.std, np.max