INTERNAL function for finding an orthogonal re-parameterization which avoids "dominant machine zero leakage" between components of the square root penalty.
gam.reparam(rS, lsp, deriv)
list of the square root penalties: last entry is root of
fixed penalty, if fixed.penalty==TRUE
(i.e. length(rS)>length(sp)
).
The assumption here is that rS[[i]]
are in a null space of total penalty already;
see e.g. totalPenaltySpace
and mini.roots
.
vector of log smoothing parameters.
if deriv==1
also the first derivative of the log-determinant of the penalty matrix
is returned, if deriv>1
also the second derivative is returned.
A list containing
S
: the total penalty matrix similarity transformed for stability.
rS
: the component square roots, transformed in the same way.
Qs
: the orthogonal transformation matrix S = t(Qs)%*%S0%*%Qs
, where S0
is the
untransformed total penalty implied by sp
and rS
on input.
det
: log|S|.
det1
: dlog|S|/dlog(sp) if deriv >0
.
det2
: hessian of log|S| wrt log(sp) if deriv>1
.