# fitbenchmarking.cost_func.poisson_cost_func module

Implements a Poisson deviance cost function based on Mantid’s: https://docs.mantidproject.org/nightly/fitting/fitcostfunctions/Poisson.html

class fitbenchmarking.cost_func.poisson_cost_func.PoissonCostFunc(problem)

This defines the Poisson deviance cost-function where, given the set of $$n$$ data points $$(x_i, y_i)$$, and a model function $$f(x,p)$$, we find the optimal parameters in the Poisson deviance sense by solving:

$\min_p \sum_{i=1}^n \left( y_i \left(\log{y_i} - \log{f(x_i, p)} \right) - \left( y_i - f(x_i, p) \right) \right)$

where $$p$$ is a vector of length $$m$$, and we start from a given initial guess for the optimal parameters.

This cost function is intended for positive values.

This cost function is not a least squares problem and as such will not work with least squares minimizers. Please use algorithm_type to select general solvers. See options docs (Fitting Options) for information on how to do this.

eval_cost(params, **kwargs)

Evaluate the Poisson deviance cost function

Parameters
• params (list) – The parameters to calculate residuals for

• x (np.array (optional)) – The x values to evaluate at. Default is self.problem.data_x

• y (np.array (optional)) – The y values to evaluate at. Default is self.problem.data_y

Returns

evaluated cost function

Return type

float

hes_cost(params, **kwargs)

Uses the Hessian of the model to evaluate the Hessian of the cost function, $$\nabla_p^2 F(r(x,y,p))$$, at the given parameters.

Parameters

params (list) – The parameters at which to calculate Hessians

Returns

evaluated Hessian of the cost function

Return type

2D numpy array

hes_res(params, **kwargs)

Uses the Hessian of the model to evaluate the Hessian of the cost function residual, $$\nabla_p^2 r(x,y,p)$$, at the given parameters.

Parameters

params (list) – The parameters at which to calculate Hessians

Returns

evaluated Hessian and Jacobian of the residual at each x, y pair

Return type

tuple (list of 2D numpy arrays, list of 1D numpy arrays)

jac_cost(params, **kwargs)

Uses the Jacobian of the model to evaluate the Jacobian of the cost function, $$\nabla_p F(r(x,y,p))$$, at the given parameters. :param params: The parameters at which to calculate Jacobians :type params: list :return: evaluated Jacobian of the cost function :rtype: 1D numpy array

jac_res(params, **kwargs)

Uses the Jacobian of the model to evaluate the Jacobian of the cost function residual, $$\nabla_p r(x,y,p)$$, at the given parameters.

Parameters

params (list) – The parameters at which to calculate Jacobians

Returns

evaluated Jacobian of the residual at each x, y pair

Return type

a list of 1D numpy arrays

validate_problem()

Validate the problem for the Poisson Cost Function. Poisson involves a log so will fail on negative inputs.

Raises:
IncompatibleCostFunctionError: When the problem has negative

values.