def main(): # define the MCMC target distribution # possible distributions are in kameleon_mcmc.distribution: Banana, Flower, Ring # distribution = Banana(dimension=2, bananicity=0.03, V=100.0) distribution = Ring() # create instance of kameleon sampler that learns the length scale # can be replaced by any other sampler in kameleon_mcmc.mcmc.samplers kernel = GaussianKernel(sigma=5) mcmc_sampler = KameleonWindowLearnScale(distribution, kernel, stop_adapt=inf, nu2=0.05) # mcmc chain and its parameters start = asarray([0,-3]) mcmc_params = MCMCParams(start=start, num_iterations=30000) chain = MCMCChain(mcmc_sampler, mcmc_params) # plot every iteration and print some statistics chain.append_mcmc_output(PlottingOutput(distribution, plot_from=2000)) chain.append_mcmc_output(StatisticsOutput()) # run cmcm chain.run() # print empirical quantiles burnin=10000 print distribution.emp_quantiles(chain.samples[burnin:]) Visualise.visualise_distribution(distribution, chain.samples)
def plot_proposal(self, ys): # evaluate density itself Visualise.visualise_distribution(self.distribution, Z=self.Z, Xs=self.Xs, Ys=self.Ys) # precompute constants of proposal mcmc_hammer = Kameleon(self.distribution, self.kernel, self.Z, \ self.nu2, self.gamma) # plot proposal around each y for y in ys: mu, L_R = mcmc_hammer.compute_constants(y) gaussian = Gaussian(mu, L_R, is_cholesky=True) hold(True) Visualise.contour_plot_density(gaussian) hold(False) draw()
from matplotlib.pyplot import axis, savefig from numpy import linspace from kameleon_mcmc.distribution.Banana import Banana from kameleon_mcmc.distribution.Flower import Flower from kameleon_mcmc.distribution.Ring import Ring from kameleon_mcmc.tools.Visualise import Visualise if __name__ == '__main__': distributions = [Ring(), Banana(), Flower()] for d in distributions: Xs, Ys = d.get_plotting_bounds() resolution = 250 Xs = linspace(Xs[0], Xs[1], resolution) Ys = linspace(Ys[0], Ys[1], resolution) Visualise.visualise_distribution(d, Xs=Xs, Ys=Ys) axis("Off") savefig("heatmap_" + d.__class__.__name__ + ".eps", bbox_inches='tight')
from matplotlib.pyplot import axis, savefig from numpy import linspace from kameleon_mcmc.distribution.Banana import Banana from kameleon_mcmc.distribution.Flower import Flower from kameleon_mcmc.distribution.Ring import Ring from kameleon_mcmc.tools.Visualise import Visualise if __name__ == '__main__': distributions = [Ring(), Banana(), Flower()] for d in distributions: Xs, Ys = d.get_plotting_bounds() resolution = 250 Xs = linspace(Xs[0], Xs[1], resolution) Ys = linspace(Ys[0], Ys[1], resolution) Visualise.visualise_distribution(d, Xs=Xs, Ys=Ys) axis("Off") savefig("heatmap_" + d.__class__.__name__ + ".eps", bbox_inches='tight')