def main(): # covariance has stretched Eigenvalues, and rotated basis Sigma = eye(2) Sigma[0, 0] = 30 Sigma[1, 1] = 1 theta = -pi / 4 U = MatrixTools.rotation_matrix(theta) Sigma = U.T.dot(Sigma).dot(U) gaussian = Gaussian(Sigma=Sigma) distribution = GaussianFullConditionals(gaussian, [0., 0.]) mcmc_sampler = Gibbs(distribution) start = zeros(distribution.dimension) mcmc_params = MCMCParams(start=start, num_iterations=20000) chain = MCMCChain(mcmc_sampler, mcmc_params) chain.append_mcmc_output(StatisticsOutput(plot_times=True, lag=100)) chain.append_mcmc_output( PlottingOutput(distribution=gaussian, plot_from=1, colour_by_likelihood=False, num_samples_plot=0, lag=100)) chain.run()
def main(): # covariance has stretched Eigenvalues, and rotated basis Sigma = eye(2) Sigma[0, 0] = 30 Sigma[1, 1] = 1 theta = -pi / 4 U = MatrixTools.rotation_matrix(theta) Sigma = U.T.dot(Sigma).dot(U) gaussian = Gaussian(Sigma=Sigma) distribution = GaussianFullConditionals(gaussian, [0., 0.]) mcmc_sampler = Gibbs(distribution) start = zeros(distribution.dimension) mcmc_params = MCMCParams(start=start, num_iterations=20000) chain = MCMCChain(mcmc_sampler, mcmc_params) chain.append_mcmc_output(StatisticsOutput(plot_times=True, lag=100)) chain.append_mcmc_output(PlottingOutput(distribution=gaussian, plot_from=1, colour_by_likelihood=False, num_samples_plot=0, lag=100)) chain.run()
def main(): # covariance has stretched Eigenvalues, and rotated basis Sigma1 = eye(2) Sigma1[0, 0] = 30.0 Sigma1[1, 1] = 1.0 Sigma2 = Sigma1 Sigma2[0, 0] = 20.0 theta = -pi / 4 U = MatrixTools.rotation_matrix(theta) Sigma1 = U.T.dot(Sigma1).dot(U) Sigma2 = U.T.dot(Sigma2).dot(U) gaussian1 = Gaussian(Sigma=Sigma1) gaussian2 = Gaussian(mu=array([1., 0.]), Sigma=Sigma1) numTrials=500 vanillap=empty((numTrials,2,2)) blockp=empty((numTrials,2,2)) wildp=empty((numTrials,2,2)) # f = open("/home/dino/git/test_results.dat", "r") # vanillarej=load(f) # blockrej=load(f) # wildrej=load(f) # f.close() # for i in range(numTrials): print 'trial', i vanillap[i],blockp[i],wildp[i]=all_tests(gaussian1,gaussian2,n=200) f = open("/nfs/home2/dino/git/test_results.dat", "w") vanillarej=sum(vanillap<0.05,0)/numTrials blockrej=sum(blockp<0.05,0)/numTrials wildrej=sum(wildp<0.05,0)/numTrials dump(vanillarej, f) dump(blockrej, f) dump(wildrej, f) f.close()
def main(): # covariance has stretched Eigenvalues, and rotated basis Sigma1 = eye(2) Sigma1[0, 0] = 30.0 Sigma1[1, 1] = 1.0 Sigma2 = Sigma1 Sigma2[0, 0] = 20.0 theta = -pi / 4 U = MatrixTools.rotation_matrix(theta) Sigma1 = U.T.dot(Sigma1).dot(U) Sigma2 = U.T.dot(Sigma2).dot(U) gaussian1 = Gaussian(Sigma=Sigma1) gaussian2 = Gaussian(mu=array([1.0, 0.0]), Sigma=Sigma1) numTrials = 500 vanillap = empty((numTrials, 2, 2)) blockp = empty((numTrials, 2, 2)) wildp = empty((numTrials, 2, 2)) # f = open("/home/dino/git/test_results.dat", "r") # vanillarej=load(f) # blockrej=load(f) # wildrej=load(f) # f.close() # for i in range(numTrials): print "trial", i vanillap[i], blockp[i], wildp[i] = all_tests(gaussian1, gaussian2, n=200) f = open("/nfs/home2/dino/git/test_results.dat", "w") vanillarej = sum(vanillap < 0.05, 0) / numTrials blockrej = sum(blockp < 0.05, 0) / numTrials wildrej = sum(wildp < 0.05, 0) / numTrials dump(vanillarej, f) dump(blockrej, f) dump(wildrej, f) f.close()
def main(): numTrials = 500 n=200 Sigma1 = eye(2) Sigma1[0, 0] = 30.0 Sigma1[1, 1] = 1.0 theta = - pi / 4 U = MatrixTools.rotation_matrix(theta) Sigma1 = U.T.dot(Sigma1).dot(U) print Sigma1 gaussian1 = Gaussian(Sigma=Sigma1) gaussian2 = Gaussian(mu=array([1., 0.]), Sigma=Sigma1) oracle_samples1 = gaussian1.sample(n=n).samples oracle_samples2 = gaussian2.sample(n=n).samples print 'mean1:', mean(oracle_samples1,0) print 'mean2:', mean(oracle_samples2,0) plot(oracle_samples1[:,0],oracle_samples1[:,1],'b*') plot(oracle_samples2[:,0],oracle_samples2[:,1],'r*') show() distribution1 = GaussianFullConditionals(gaussian1, list(gaussian1.mu)) distribution2 = GaussianFullConditionals(gaussian2, list(gaussian2.mu)) H0_samples = zeros(numTrials) HA_samples = zeros(numTrials) mcmc_sampler1 = Gibbs(distribution1) mcmc_sampler2 = Gibbs(distribution2) burnin = 9000 thin = 5 start = zeros(2) mcmc_params = MCMCParams(start=start, num_iterations=burnin+thin*n, burnin=burnin) sigma = GaussianKernel.get_sigma_median_heuristic(concatenate((oracle_samples1,oracle_samples2),axis=0)) print 'using bandwidth: ', sigma kernel = GaussianKernel(sigma=sigma) for ii in arange(numTrials): start =time.time() print 'trial:', ii oracle_samples1 = gaussian1.sample(n=n).samples oracle_samples1a = gaussian1.sample(n=n).samples oracle_samples2 = gaussian2.sample(n=n).samples # chain1 = MCMCChain(mcmc_sampler1, mcmc_params) # chain1.run() # gibbs_samples1 = chain1.get_samples_after_burnin() # gibbs_samples1 = gibbs_samples1[thin*arange(n)] # # chain1a = MCMCChain(mcmc_sampler1, mcmc_params) # chain1a.run() # gibbs_samples1a = chain1a.get_samples_after_burnin() # gibbs_samples1a = gibbs_samples1a[thin*arange(n)] # # chain2 = MCMCChain(mcmc_sampler2, mcmc_params) # chain2.run() # gibbs_samples2 = chain2.get_samples_after_burnin() # gibbs_samples2 = gibbs_samples2[thin*arange(n)] # H0_samples[ii]=kernel.estimateMMD(gibbs_samples1,gibbs_samples1a) # HA_samples[ii]=kernel.estimateMMD(gibbs_samples1,gibbs_samples2) # H0_samples[ii]=kernel.estimateMMD(oracle_samples1,oracle_samples1a) HA_samples[ii]=kernel.estimateMMD(oracle_samples1,oracle_samples2) end=time.time() print 'time elapsed: ', end-start f = open("/home/dino/git/mmdIIDTrueSamples.dat", "w") dump(H0_samples, f) dump(HA_samples, f) dump(gaussian1, f) dump(gaussian2, f) f.close() return None
def main(): numTrials = 500 n = 200 Sigma1 = eye(2) Sigma1[0, 0] = 30.0 Sigma1[1, 1] = 1.0 theta = -pi / 4 U = MatrixTools.rotation_matrix(theta) Sigma1 = U.T.dot(Sigma1).dot(U) print Sigma1 gaussian1 = Gaussian(Sigma=Sigma1) gaussian2 = Gaussian(mu=array([1., 0.]), Sigma=Sigma1) oracle_samples1 = gaussian1.sample(n=n).samples oracle_samples2 = gaussian2.sample(n=n).samples print 'mean1:', mean(oracle_samples1, 0) print 'mean2:', mean(oracle_samples2, 0) plot(oracle_samples1[:, 0], oracle_samples1[:, 1], 'b*') plot(oracle_samples2[:, 0], oracle_samples2[:, 1], 'r*') show() distribution1 = GaussianFullConditionals(gaussian1, list(gaussian1.mu)) distribution2 = GaussianFullConditionals(gaussian2, list(gaussian2.mu)) H0_samples = zeros(numTrials) HA_samples = zeros(numTrials) mcmc_sampler1 = Gibbs(distribution1) mcmc_sampler2 = Gibbs(distribution2) burnin = 9000 thin = 5 start = zeros(2) mcmc_params = MCMCParams(start=start, num_iterations=burnin + thin * n, burnin=burnin) sigma = GaussianKernel.get_sigma_median_heuristic( concatenate((oracle_samples1, oracle_samples2), axis=0)) print 'using bandwidth: ', sigma kernel = GaussianKernel(sigma=sigma) for ii in arange(numTrials): start = time.time() print 'trial:', ii oracle_samples1 = gaussian1.sample(n=n).samples oracle_samples1a = gaussian1.sample(n=n).samples oracle_samples2 = gaussian2.sample(n=n).samples # chain1 = MCMCChain(mcmc_sampler1, mcmc_params) # chain1.run() # gibbs_samples1 = chain1.get_samples_after_burnin() # gibbs_samples1 = gibbs_samples1[thin*arange(n)] # # chain1a = MCMCChain(mcmc_sampler1, mcmc_params) # chain1a.run() # gibbs_samples1a = chain1a.get_samples_after_burnin() # gibbs_samples1a = gibbs_samples1a[thin*arange(n)] # # chain2 = MCMCChain(mcmc_sampler2, mcmc_params) # chain2.run() # gibbs_samples2 = chain2.get_samples_after_burnin() # gibbs_samples2 = gibbs_samples2[thin*arange(n)] # H0_samples[ii]=kernel.estimateMMD(gibbs_samples1,gibbs_samples1a) # HA_samples[ii]=kernel.estimateMMD(gibbs_samples1,gibbs_samples2) # H0_samples[ii] = kernel.estimateMMD(oracle_samples1, oracle_samples1a) HA_samples[ii] = kernel.estimateMMD(oracle_samples1, oracle_samples2) end = time.time() print 'time elapsed: ', end - start f = open("/home/dino/git/mmdIIDTrueSamples.dat", "w") dump(H0_samples, f) dump(HA_samples, f) dump(gaussian1, f) dump(gaussian2, f) f.close() return None