pyhf.infer.mle.fixed_poi_fit#

pyhf.infer.mle.fixed_poi_fit(poi_val, data, pdf, init_pars=None, par_bounds=None, fixed_params=None, **kwargs)[source]#

Run a maximum likelihood fit with the POI value fixed. This is done by minimizing the objective function of twice_nll() of the model parameters given the observed data, for a given fixed value of μ. This is used to produce the constrained maximal likelihood for the given μ, L(μ,θ^^), in the profile likelihood ratio in Equation (7) in [1007.1727]

λ(μ)=L(μ,θ^^)L(μ^,θ^)

Note

twice_nll() is the objective function given to the optimizer and is returned evaluated at the best fit model parameters when the optional kwarg return_fitted_val is True.

Example

>>> import pyhf
>>> pyhf.set_backend("numpy")
>>> model = pyhf.simplemodels.uncorrelated_background(
...     signal=[12.0, 11.0], bkg=[50.0, 52.0], bkg_uncertainty=[3.0, 7.0]
... )
>>> observations = [51, 48]
>>> data = pyhf.tensorlib.astensor(observations + model.config.auxdata)
>>> test_poi = 1.0
>>> bestfit_pars, twice_nll = pyhf.infer.mle.fixed_poi_fit(
...     test_poi, data, model, return_fitted_val=True
... )
>>> bestfit_pars
array([1.        , 0.97224597, 0.87553894])
>>> twice_nll
array(28.92218013)
>>> -2 * model.logpdf(bestfit_pars, data) == twice_nll
array([ True])
Parameters:
  • data – The data

  • pdf (Model) – The statistical model adhering to the schema model.json

  • init_pars (list of float) – The starting values of the model parameters for minimization.

  • par_bounds (list of list/tuple) – The extrema of values the model parameters are allowed to reach in the fit. The shape should be (n, 2) for n model parameters.

  • fixed_params (tuple or list of bool) – The flag to set a parameter constant to its starting value during minimization.

  • kwargs – Keyword arguments passed through to the optimizer API

Returns:

See optimizer API