def main(): mean = [0, 0, 0] cov = [[1, 0, 0], [0, 100, 0], [0, 0, 8]] x1, x2, x3 = np.random.multivariate_normal(mean, cov, 50000).T s1 = np.c_[x1, x2, x3] mean = [0.2, 0.5, 6.] cov = [[0.7, 0.3, 0.1], [0.3, 10, 0.25], [0.1, 0.25, 7]] x1, x2, x3 = np.random.multivariate_normal(mean, cov, 50000).T s2 = np.c_[x1, x2, x3] names = ['x_1', 'x_2', 'x_3'] samples1 = MCSamples(samples=s1, labels=names, label='sample1') samples2 = MCSamples(samples=s2, labels=names, label='sample2') get_constraints(samples1) get_constraints(samples2) print("cov(x_1, x_3) = ", samples2.cov(pars=[0,2])) print("cov(x_1, x_2) = ", samples2.cov(pars=[0,1])) g = plots.getSubplotPlotter() g.triangle_plot([samples1, samples2], filled=True) g.export('triangle_plot.png') g.export('triangle_plot.pdf') return
class binned_model_marge: # marginalised xi0 def __init__(self, file_name, nwalkers, nsamples, skip_steps=0): self.file_name = file_name self.samples = np.loadtxt(dir + 'chains/5/{}.txt'.format(self.file_name)) self.cosmo_name = 'FlatIVCDM_binned' self.nwalkers = nwalkers self.nsamples = nsamples self.skip_steps = skip_steps # bin specifications self.Nq = 20 self.zmax = 1.5 self.xi0_lims = (0.2, 2.0) self.Nscale = 4 self.amin = 1. / (1. + self.zmax) self.npars = self.Nq cos = cosmo(Nq=self.Nq) M = cos.model[self.cosmo_name] self.names_q = ['q{}'.format(i + 1) for i in range(self.Nq)] self.labels_q = [r'q_{{{}}}'.format(i + 1) for i in range(self.Nq)] samples_skipped = samples_skip(self.samples, self.nwalkers, self.nsamples, self.npars, self.skip_steps) self.MCsamps = MCSamples(samples=samples_skipped, names=self.names_q, labels=self.labels_q) @property def cov_q(self): # covariance return self.MCsamps.cov() @property def corr_q(self): # correlation return self.MCsamps.corr() @property def Fisher_q(self): # inverse covariance ('Fisher') return linalg.inv(self.cov_q) def plot_cov(self, kind='posterior'): C, Corr, F = self.cov_q, self.corr_q, self.Fisher_q fig = plt.figure(figsize=(19, 4)) ax1 = fig.add_subplot(131) im1 = ax1.imshow(C, cmap='viridis', interpolation='nearest') ax1.set_title('Covariance') fig.colorbar(im1) ax2 = fig.add_subplot(132) im2 = ax2.imshow(Corr, cmap='viridis', interpolation='nearest') ax2.set_title('Correlation matrix') fig.colorbar(im2) ax3 = fig.add_subplot(133) im3 = ax3.imshow(F, cmap='viridis', interpolation='nearest') ax3.set_title('Fisher matrix') fig.colorbar(im3) plt.rc('font', size=14) plt.show() def MSE(self, M): self.get_KL() q_sum = 0.0 bias2 = 0.0 variance = 0.0 for i in range(M): q_sum += self.KL_alpha[i] * self.KL_basis[i] bias2 += (q_sum[i] - self.q_mean[i])**2 variance += (self.KL_basis[i] * self.KL_varalpha[i])**2 return bias2 + variance