
cao
.cao.control(Rank = 1, all.knots = FALSE, criterion = "deviance", Cinit=NULL,
Crow1positive=TRUE, epsilon = 1.0e-05, Etamat.colmax = 10,
GradientFunction=FALSE, iKvector = 0.1, iShape = 0.1,
Norrr = ~ 1, SmallNo = 5.0e-13, Use.Init.Poisson.QO=TRUE,
Bestof = if (length(Cinit)) 1 else 10, maxitl = 10,
imethod = 1, bf.epsilon = 1.0e-7, bf.maxit = 10,
Maxit.optim = 250, optim.maxit = 20, SD.sitescores = 1.0,
SD.Cinit = 0.02, trace = TRUE, df1.nl = 2.5, df2.nl = 2.5,
spar1 = 0, spar2 = 0, ...)
Rank=1
is implemented.FALSE
means
fewer knots are chosen when the number of distinct points is large,
meaning less computational expense.Rank
(recycled if necessary): are
the elements of the first row of C positive? For example,
if Rank
is 4, then specifying Crow1positive=c(FALSE,
TRUE)
will force C[1,1]Rank
. Controls the amount
of memory used by .Init.Poisson.QO()
. It is the maximum
number of columns allowed for the pseudo-response and its weights.
In general, the larger the valueoptim
's argument gr
is used or not, i.e., to compute gradient values. Used only if
FastAlgorithm
is TRUE
. Currently, this argument must
be qrrvglm.control
.Norrr = ~ 1
is i.Machine$double.eps
and 0.0001
.
Used to avoid under- or over-flow in the IRLS algorithm.TRUE
then the function .Init.Poisson.QO
is
used to obtain initial values for the canonical coefficients C.
If FALSE
then random numbers are used instead.Bestof
models fitted is returned. This
argument helps guard against local solutions by (hopefully) finding
the global solution from many fits. The argument works only when
the function generates its own initiaqrrvglm.control
.optim
at each of the optim.maxit
iterations.optim
is invoked.Use.Init.Poisson.QO
is FALSE
.Use.Init.Poisson.QO = FALSE
.TRUE
is a good idea for large
data sets.qrrvglm.control
.
Here, $R$ is the Rank
, $M$ is the number
of additive predictors, and $S$ is the number of responses
(species).
Thus $M=S$ for binomial and Poisson responses, and
$M=2S$ for the negative binomial and 2-parameter gamma distributions.
Allowing the smooths too much flexibility means the CAO optimization
problem becomes more difficult to solve. This is because the number
of local solutions increases as the nonlinearity of the smooths
increases. In situations of high nonlinearity, many initial values
should be used, so that Bestof
should be assigned a larger
value. In general, there should be a reasonable value of df1.nl
somewhere between 0 and about 3 for most data sets.
Green, P. J. and Silverman, B. W. (1994) Nonparametric Regression and Generalized Linear Models: A Roughness Penalty Approach, London: Chapman & Hall.
cao
.hspider[,1:6] = scale(hspider[,1:6]) # Standardized environmental vars
set.seed(123)
ap1 = cao(cbind(Pardlugu, Pardmont, Pardnigr, Pardpull, Zoraspin) ~
WaterCon + BareSand + FallTwig +
CoveMoss + CoveHerb + ReflLux,
family = poissonff, data = hspider,
df1.nl = c(Zoraspin=2.3, 2.1),
Bestof = 10, Crow1positive = FALSE)
sort(ap1@misc$deviance.Bestof) # A history of all the iterations
Coef(ap1)
par(mfrow=c(2,3)) # All or most of the curves are unimodal; some are
plot(ap1, lcol = "blue") # quite symmetric. Hence a CQO model should be ok
par(mfrow=c(1,1), las=1)
index = 1:ncol(ap1@y) # lvplot is jagged because only 28 sites
lvplot(ap1, lcol = index, pcol = index, y=TRUE)
trplot(ap1, label=TRUE, col=index)
abline(a = 0, b = 1, lty = 2)
persp(ap1, label=TRUE, col=1:4)
Run the code above in your browser using DataLab