The optimization routines 'ucminf', 'nloptr' and 'trustOptim' requires the
user to supply a gradient. Writing an analytical gradient can be quite
cumbersome for very complex likelihood expressions. This function is a simple
wrapper around numDeriv::grad()
and prepares a high-precision
numerical gradient that can be supplied directly to the optimizers that
require one.
Note that a numerical gradient is slower in calculation and less precise than
an analytical gradient.
prepare_num_grad(ll, estim_env, workers)
This is the 'raw' log-likelihood function passed to the estimation routine. It is important that the user takes into account whether the optimization routine is a minimizer (e.g. 'ucminf') or a maximizer (e.g. 'maxlik').
An estimation environment returned by
prepare_estimation_environment
A list of workers created using the parallel package
A high precision numerical gradient function