notExp {mgcv} | R Documentation |
It is common practice in statistical optimization to use log-parameterizations when a
parameter ought to be positive. i.e. if an optimization parameter a
should be non-negative then
we use a=exp(b)
and optimize with respect to the unconstrained parameter b
. This often works
well, but it does imply a rather limited working range for b
: using 8 byte doubles, for example,
if b
's magnitude gets much above 700 then a
overflows or underflows. This can cause
problems for numerical optimization methods.
notExp
is a monotonic function for mapping the real line into the positive real line with much less
extreme underflow and overflow behaviour than exp
. It is a piece-wise function, but is continuous
to second derivative: see the source code for the exact definition, and the example below to see what it
looks like.
notLog
is the inverse function of notExp
.
The major use of these functions is to provide more robust pdMat
classes for lme
for use by
gamm
.
notExp(x) notLog(x)
x |
Argument array of real numbers (notExp ) or positive real numbers (notLog ). |
An array of function values evaluated at the supplied argument values.
Simon N. Wood simon@stats.gla.ac.uk
http://www.stats.gla.ac.uk/~simon/
## Illustrate the notExp function: ## less steep than exp, but still monotonic. x <- -100:100/10 op <- par(mfrow=c(2,2)) plot(x,notExp(x),type="l") lines(x,exp(x),col=2) plot(x,log(notExp(x)),type="l") lines(x,log(exp(x)),col=2) # redundancy intended x <- x/4 plot(x,notExp(x),type="l") lines(x,exp(x),col=2) plot(x,log(notExp(x)),type="l") lines(x,log(exp(x)),col=2) # redundancy intended par(op) range(notLog(notExp(x))-x) # show that inverse works!