pymc.find_MAP#

pymc.find_MAP(start=None, vars=None, method='L-BFGS-B', return_raw=False, include_transformed=True, progressbar=True, maxeval=5000, model=None, *args, seed=None, **kwargs)[source]#

Finds the local maximum a posteriori point given a model.

find_MAP should not be used to initialize the NUTS sampler. Simply call pymc.sample() and it will automatically initialize NUTS in a better way.

Parameters:
start: `dict` of parameter values (Defaults to `model.initial_point`)

These values will be fixed and used for any free RandomVariables that are not being optimized.

vars: list of TensorVariable

List of free RandomVariables to optimize the posterior with respect to. Defaults to all continuous RVs in a model. The respective value variables may also be passed instead.

method: string or callable, optional

Optimization algorithm. Defaults to ‘L-BFGS-B’ unless discrete variables are specified in vars, then Powell which will perform better. For instructions on use of a callable, refer to SciPy’s documentation of optimize.minimize.

return_raw: bool, optional defaults to False

Whether to return the full output of scipy.optimize.minimize

include_transformed: bool, optional defaults to True

Flag for reporting automatically unconstrained transformed values in addition to the constrained values

progressbar: bool, optional defaults to True

Whether to display a progress bar in the command line.

maxeval: int, optional, defaults to 5000

The maximum number of times the posterior distribution is evaluated.

model: Model (optional if in `with` context)
*args, **kwargs

Extra args passed to scipy.optimize.minimize

Notes

Older code examples used find_MAP to initialize the NUTS sampler, but this is not an effective way of choosing starting values for sampling. As a result, we have greatly enhanced the initialization of NUTS and wrapped it inside pymc.sample() and you should thus avoid this method.