Source code for pyhf.infer.mle

"""Module for Maximum Likelihood Estimation."""
from .. import get_backend


[docs]def twice_nll(pars, data, pdf): """ Twice the negative Log-Likelihood. Args: data (`tensor`): the data pdf (~pyhf.pdf.Model): The statistical model adhering to the schema model.json Returns: Twice the negative log likelihood. """ return -2 * pdf.logpdf(pars, data)
[docs]def fit(data, pdf, init_pars=None, par_bounds=None, **kwargs): """ Run a unconstrained maximum likelihood fit. Args: data (`tensor`): the data pdf (~pyhf.pdf.Model): The statistical model adhering to the schema model.json kwargs: keyword arguments passed through to the optimizer API Returns: see optimizer API """ _, opt = get_backend() init_pars = init_pars or pdf.config.suggested_init() par_bounds = par_bounds or pdf.config.suggested_bounds() return opt.minimize(twice_nll, data, pdf, init_pars, par_bounds, **kwargs)
[docs]def fixed_poi_fit(poi_val, data, pdf, init_pars=None, par_bounds=None, **kwargs): """ Run a maximum likelihood fit with the POI value fixzed. Args: data: the data pdf (~pyhf.pdf.Model): The statistical model adhering to the schema model.json kwargs: keyword arguments passed through to the optimizer API Returns: see optimizer API """ _, opt = get_backend() init_pars = init_pars or pdf.config.suggested_init() par_bounds = par_bounds or pdf.config.suggested_bounds() return opt.minimize( twice_nll, data, pdf, init_pars, par_bounds, [(pdf.config.poi_index, poi_val)], **kwargs )