Example #1
0
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 
Example #2
0
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