Optimization control parameters
are set by calls to options() (see examples).
Optimization parameters used in
Rdistance are the following:
Rdistance_maxIters: The maximum number of optimization
iterations allowed.
Rdistance_evalMax: The maximum number of objective function
evaluations allowed.
Rdistance_likeTol: Minimum change in the likelihood
between iterations required optimization to continue.
If the likelihood changes by less than this amount,
optimization stops and a solution is declared. Iteration
continues when likelihood changes exceed this value.
Rdistance_coefTol: Minimum change in model coefficients
between iterations for optimization to continue.
If the sum of squared coefficient differences changes
by less than this amount between iterations,
optimization stops and a solution is declared.
Rdistance_optimizer: A string specifying the optimizer
to use. Results can vary among optimizers, so
switching algorithms sometimes makes a poorly
behaved distance function converge, particularly when
parameters are near their boundaries. Valid
values are:
"optim": Uses optim::optim, method "L-BFGS-B",
a finite-difference gradient based approach.
"nlminb": Uses stats:nlminb, a finite-difference
gradient based approach.
"hookeJeeves": Uses dfoptim::hjkb, a
derivative-free approach for continuous and discontinuous
likelihoods.
The authors have had better luck with "nlminb" when likelihoods are differentiable (i.e. smooth). "optim" seems to perform better when solutions are near, but not on,parameter boundaries. "hookeJeeves" works well in all cases but is slightly slower than "nlminb".
Rdistance_hessEps: A vector of parameter distances used during
computation of numeric second derivatives. These distances control
and determine variance estimates, and they may need revision when
the maximum likelihood solution is near a parameter boundary.
Should have length
1 or the number of parameters in the model. See function
secondDeriv for further details.
Rdistance_trace: Integer scalar for the level
of information printed to the console by the optimization
routine during maximization of the likelihood. All optimizer
routines interpret a value of 0 as 'do not print any information'
or silent. Higher values produce more information. The
information produced varies among optimization routines.
Rdistance_requireUnits: A logical specifying whether measurement
units are required on distances and areas. If TRUE,
measurement units are required on off-transect and radial
distances in the input data frame. Likewise, measurement
units are required on truncation distances, scale location,
transect lengths, and study area size. If FALSE, no units are
required and input values are used as is. The FALSE options is
provided for rare cases when Rdistance functions are called
from other functions and the calling functions do not accommodate
units.
Assign units with statement like units(detectionDf$dist) <- "m"
or setUnits(w.hi, "km") or w.hi <- 150 %#% "m" or
w.hi <- 150 %m%..
Measurement units of
the various physical quantities need not
be equal because appropriate conversions occur internally.
An error is thrown if differing units are not compatible.
For example, "m" (meters) cannot be converted into "ha" (hectares),
but "acres" can be converted into "ha".
Rdistance recognizes units listed in units::valid_udunits.
Rdistance_maxBSFailPropForWarning: The proportion of bootstrap
iterations that can fail without a warning. If the proportion
of non-convergent bootstrap iterations exceeds this
parameter, a warning about the validity of CI's is issued in
the abundance print method.
# increase number of iterations
options(Rdistance_maxIters=2000)
# change optimizer and decrease tolerance
options(list(Rdistance_optimizer="optim", Rdistance_likeTol=1e-6))
Run the code above in your browser using DataLab