NumCosmo: Firecrown Likelihood Fisher

NumCosmo: Firecrown Likelihood Fisher#

This recipe outlines the process of computing the Fisher matrix for Supernova SNIa data likelihood using the Firecrown example with NumCosmo. Ensure that you have already installed Firecrown, CosmoSIS, and NumCosmo and set the environment variable FIRECROWN_DIR to the location of the Firecrown installation.

The starting point for this recipe is the NumCosmo experiment configuration file sn_srd.yaml. In section Convert Configuration File, we show how to convert this file to a Firecrown configuration file. The steps below assume that you have already converted the configuration file.

Computing the Fisher Matrix#

The next step is to compute the Fisher matrix using NumCosmo’s command line tool. There are two options for the command numcosmo run fisher that can be used to compute the Fisher matrix:

Expected Fisher Matrix#

This option computes the Fisher matrix using the analytic formula for the expected Fisher matrix. This requires a Gaussian or Poisson likelihood. The command to compute the Fisher matrix is:

cd $FIRECROWN_DIR/examples/srd_sn
numcosmo run fisher sn_srd.yaml --fisher-type expected

This command produces the output:

# NcmMSet parameters covariance matrix
#                                                           -------------------------------
# sn_ddf_sample_M[00000:00] = -19.3        +/-  0.01389     |  1           |  0.9626      |
#          Omegac[04000:01] =  0.26        +/-  0.01315     |  0.9626      |  1           |
#                                                           -------------------------------

When possible, the expected Fisher matrix is the preferred option as it is faster, more accurate, and can be computed at any point in the parameter space.

Observed Fisher Matrix#

This option computes the Fisher matrix using the observed Fisher matrix. This option computes an estimate of the Fisher matrix using the observed data. It computes the Hessian of the likelihood and therefore should be computed at the maximum likelihood point. The command to compute the Fisher matrix is:

cd $FIRECROWN_DIR/examples/srd_sn
numcosmo run fisher sn_srd.yaml --fisher-type observed

This command produces the output:

#                                                           -------------------------------
# sn_ddf_sample_M[00000:00] = -19.3        +/-  0.008047    |  1           |  0.8837      |
#          Omegac[04000:01] =  0.26        +/-  0.006992    |  0.8837      |  1           |
#                                                           -------------------------------

The observed Fisher matrix is less accurate and slower to compute than the expected Fisher matrix. The output above shows that the observed Fisher matrix does not agree with the expected Fisher matrix. This is because the observed Fisher matrix is an estimate that needs to be computed at the maximum likelihood point.

Running the command again but now using the previously computed maximum likelihood point as the starting point (Run NumCosmo App):

numcosmo run fisher sn_srd.yaml --fisher-type observed --starting-point sn_srd-bestfit.yaml

Resulting in the output:

#                                                           -------------------------------
# sn_ddf_sample_M[00000:00] = -19.43       +/-  0.01396     |  1           |  0.9629      |
#          Omegac[04000:01] =  0.2654      +/-  0.01332     |  0.9629      |  1           |
#                                                           -------------------------------

The observed Fisher matrix now agrees with the expected Fisher matrix. Recomputing the expected Fisher matrix at the maximum likelihood point will produce almost exactly the same result as the observed Fisher matrix. One notable advantage of the observed Fisher matrix is its applicability to any likelihood function, providing a versatile option despite its computational demands.

Output#

The Fisher matrix commands support the --output option, allowing you to save the computed Fisher matrix to a file. For instance:

numcosmo run fisher sn_srd.yaml --fisher-type expected --starting-point sn_srd-bestfit.yaml --output sn_srd-bestfit.yaml

Executing this command saves the Fisher matrix as sn_srd-bestfit.yaml in the same directory as the input configuration file. This feature proves useful for storing the Fisher matrix for future use, such as initializing a Markov Chain Monte Carlo (MCMC) run by sampling from the saved matrix.