\HeaderA{notExp2}{Alternative to log parameterization for variance components}{notExp2}
\aliasA{notLog2}{notExp2}{notLog2}
\keyword{models}{notExp2}
\keyword{smooth}{notExp2}
\keyword{regression}{notExp2}
\begin{Description}\relax
\code{notLog2} and \code{notExp2} are alternatives to \code{log}
and \code{exp} or \code{\LinkA{notLog}{notLog}} and \code{\LinkA{notExp}{notExp}} for
re-parameterization of variance parameters. They are used by the
\code{\LinkA{pdTens}{pdTens}} and \code{\LinkA{pdIdnot}{pdIdnot}} classes which in turn implement
smooths for \code{\LinkA{gamm}{gamm}}.

The functions are typically used to ensure that smoothing parameters are
positive, but the \code{notExp2} is not monotonic: rather it cycles between
`effective zero' and `effective infinity' as its argument changes. The
\code{notLog2} is the inverse function of the \code{notExp2} only over an
interval centered on zero.

Parameterizations using these functions ensure that estimated smoothing
parameters remain positive, but also help to ensure that the likelihood is
never indefinite: once a working parameter pushes a smoothing parameter below
`effetive zero' or above `effective infinity' the cyclic nature of the
\code{notExp2} causes the likelihood to decrease, where otherwise it might
simply have flattened. 

This parameterization is really just a numerical trick, in order to get
\code{lme} to fit \code{gamm} models, without failing due to indefiniteness. 
Note in particular that asymptoticresults on the likelihood/REML criterion are 
not invalidated by the trick,
unless parameter estimates end up close to the effective zero or effective
infinity: but if this is the case then the asymptotics would also have been invalid
for a conventional monotonic parameterization.

This reparameterization was made necessary by some modifications to the
underlying optimization method in  \code{lme} introduced in nlme 3.1-62. It is
possible that future releases will return to the \code{\LinkA{notExp}{notExp}} parameterization.

Note that you can reset `effective zero' and `effective infinity': see below.
\end{Description}
\begin{Usage}
\begin{verbatim}
notExp2(x,d=.Options$mgcv.vc.logrange,b=1/d)

notLog2(x,d=.Options$mgcv.vc.logrange,b=1/d)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] Argument array of real numbers (\code{notExp}) or positive real numbers (\code{notLog}).
\item[\code{d}] the range of \code{notExp2} runs from \code{exp(-d)} to
\code{exp(d)}. To change the range used by \code{gamm} reset
\code{mgcv.vc.logrange} using \code{\LinkA{options}{options}}.
\item[\code{b}] determines the period of the cycle of \code{notExp2}.
\end{ldescription}
\end{Arguments}
\begin{Value}
An array of function values evaluated at the supplied argument values.
\end{Value}
\begin{Author}\relax
Simon N. Wood \email{simon.wood@r-project.org}
\end{Author}
\begin{References}\relax
\url{http://www.maths.bath.ac.uk/~sw283/}
\end{References}
\begin{SeeAlso}\relax
\code{\LinkA{pdTens}{pdTens}}, \code{\LinkA{pdIdnot}{pdIdnot}},  \code{\LinkA{gamm}{gamm}}
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
## Illustrate the notExp2 function:
x <- seq(-50,50,length=1000)
op <- par(mfrow=c(2,2))
plot(x,notExp2(x),type="l")
lines(x,exp(x),col=2)
plot(x,log(notExp2(x)),type="l")
lines(x,log(exp(x)),col=2) # redundancy intended
x <- x/4
plot(x,notExp2(x),type="l")
lines(x,exp(x),col=2)
plot(x,log(notExp2(x)),type="l")
lines(x,log(exp(x)),col=2) # redundancy intended
par(op)
\end{ExampleCode}
\end{Examples}

