INTERNAL function for setting up a list representing a block diagonal penalty matrix
from the object produced by gam.setup.
Sl.setup(G,cholesky=FALSE,no.repara=FALSE,sparse=FALSE,keepS=FALSE)A list with an element for each block.
For block, b, Sl[[b]] is a list with the following elements
repara: should re-parameterization be applied to model matrix, etc?
Usually FALSE if non-linear in coefficients.
start, stop: such that start:stop are the indexes of the parameters of this block.
S: a list of penalty matrices for the block (dim = stop-start+1)
If length(S)==1 then this will be an identity penalty.
Otherwise it is a multiple penalty, and an rS list of square
root penalty matrices will be added. S (if repara==TRUE) and rS (always)
will be projected into range space of total penalty matrix.
rS: square root of penalty matrices if multiple penalties are used.
D: a reparameterization matrix for the block. Applies to cols/params in start:stop.
If numeric then X[,start:stop]%*%diag(D) is re-parametrization of X[,start:stop],
and b.orig = D*b.repara (where b.orig is the original parameter vector).
If matrix then X[,start:stop]%*%D is re-parametrization of X[,start:stop],
and b.orig = D%*%b.repara (where b.orig is the original parameter vector).
S0: original penalties if requested.
the output of gam.setup.
re-parameterize using Cholesky only.
set to TRUE to turn off all initial reparameterization.
sparse setup?
store original penalties in S0? (after any splitting
of multiple penalties into singletons, but before reparameterization)
Simon N. Wood <simon.wood@r-project.org>.