stepcAIC {cAIC4}  R Documentation 
The step function searches the space of possible models in a greedy manner, where the direction of the search is specified by the argument direction. If direction = "forward" / = "backward", the function adds / exludes random effects until the cAIC can't be improved further. In the case of forwardselection, either a new grouping structure, new slopes for the random effects or new covariates modeled nonparameterically must be supplied to the function call. If direction = "both", the greedy search is alternating between forward and backward steps, where the direction is changed after each step
stepcAIC( object, numberOfSavedModels = 1, groupCandidates = NULL, slopeCandidates = NULL, fixEfCandidates = NULL, numberOfPermissibleSlopes = 2, allowUseAcross = FALSE, allowCorrelationSel = FALSE, allowNoIntercept = FALSE, direction = "backward", trace = FALSE, steps = 50, keep = NULL, numCores = 1, data = NULL, returnResult = TRUE, calcNonOptimMod = TRUE, bsType = "tp", digits = 2, printValues = "caic", ... )
object 
object returned by 
numberOfSavedModels 
integer defining how many additional models to be saved
during the step procedure. If 
groupCandidates 
character vector containing names of possible grouping variables for
new random effects. Group nesting must be specified manually, i.e. by
listing up the string of the groups in the manner of lme4. For example

slopeCandidates 
character vector containing names of possible new random effects 
fixEfCandidates 
character vector containing names of possible (non)linear fixed effects in the GAMM; NULL for the (g)lmeruse case 
numberOfPermissibleSlopes 
how much slopes are permissible for one grouping variable 
allowUseAcross 
allow slopes to be used in other grouping variables 
allowCorrelationSel 
logical; FALSE does not allow correlations of random effects to be (de)selected (default) 
allowNoIntercept 
logical; FALSE does not allow random effects without random intercept 
direction 
character vector indicating the direction ("both","backward","forward") 
trace 
logical; should information be printed during the execution of stepcAIC? 
steps 
maximum number of steps to be considered 
keep 
list($fixed,$random) of formulae; which splines / fixed (fixed) or random effects (random) to be kept during selection; specified terms must be included in the original model 
numCores 
the number of cores to be used in calculations;
parallelization is done by using 
data 
data.frame supplying the data used in 
returnResult 
logical; whether to return the result (best model and corresponding cAIC) 
calcNonOptimMod 
logical; if FALSE, models which failed to converge are not considered for cAIC calculation 
bsType 
type of splines to be used in forward gamm4 steps 
digits 
number of digits used in printing the results 
printValues 
what values of 
... 
further options for cAIC call 
if returnResult
is TRUE
, a list with the best model finalModel
,
additionalModels
if numberOfSavedModels
was specified and
the corresponding cAIC bestCAIC
is returned.
Note that if trace
is set to FALSE
and returnResult
is also FALSE
, the function call may not be meaningful
Note that the method can not handle mixed models with uncorrelated random effects and does NOT
reduce models to such, i.e., the model with (1 + s  g)
is either reduced to
(1  g)
or (0 + s  g)
but not to (1 + s  g)
.
David Ruegamer
(fm3 < lmer(strength ~ 1 + (1sample) + (1batch), Pastes)) fm3_step < stepcAIC(fm3, direction = "backward", trace = TRUE, data = Pastes) fm3_min < lm(strength ~ 1, data=Pastes) fm3_min_step < stepcAIC(fm3_min, groupCandidates = c("batch", "sample"), direction="forward", data=Pastes, trace=TRUE) fm3_min_step < stepcAIC(fm3_min, groupCandidates = c("batch", "sample"), direction="both", data=Pastes, trace=TRUE) # try using a nested group effect which is actually not nested > warning fm3_min_step < stepcAIC(fm3_min, groupCandidates = c("batch", "sample", "batch/sample"), direction="both", data=Pastes, trace=TRUE) Pastes$time < 1:dim(Pastes)[1] fm3_slope < lmer(data=Pastes, strength ~ 1 + (1 + time  cask)) fm3_slope_step < stepcAIC(fm3_slope,direction="backward", trace=TRUE, data=Pastes) fm3_min < lm(strength ~ 1, data=Pastes) fm3_min_step < stepcAIC(fm3_min,groupCandidates=c("batch","sample"), direction="forward", data=Pastes,trace=TRUE) fm3_inta < lmer(strength ~ 1 + (1sample:batch), data=Pastes) fm3_inta_step < stepcAIC(fm3_inta,groupCandidates=c("batch","sample"), direction="forward", data=Pastes,trace=TRUE) fm3_min_step2 < stepcAIC(fm3_min,groupCandidates=c("cask","batch","sample"), direction="forward", data=Pastes,trace=TRUE) fm3_min_step3 < stepcAIC(fm3_min,groupCandidates=c("cask","batch","sample"), direction="both", data=Pastes,trace=TRUE) ## Not run: fm3_inta_step2 < stepcAIC(fm3_inta,direction="backward", data=Pastes,trace=TRUE) ## End(Not run) ##### create own example na < 20 nb < 25 n < 400 a < sample(1:na,400,replace=TRUE) b < factor(sample(1:nb,400,replace=TRUE)) x < runif(n) y < 2 + 3 * x + a*.02 + rnorm(n) * .4 a < factor(a) c < interaction(a,b) y < y + as.numeric(as.character(c))*5 df < data.frame(y=y,x=x,a=a,b=b,c=c) smallMod < lm(y ~ x) ## Not run: # throw error stepcAIC(smallMod, groupCandidates=c("a","b","c"), data=df, trace=TRUE, returnResult=FALSE) smallMod < lm(y ~ x, data=df) # throw error stepcAIC(smallMod, groupCandidates=c("a","b","c"), data=df, trace=TRUE, returnResult=FALSE) # get it all right mod < stepcAIC(smallMod, groupCandidates=c("a","b","c"), data=df, trace=TRUE, direction="forward", returnResult=TRUE) # make some more steps... stepcAIC(smallMod, groupCandidates=c("a","b","c"), data=df, trace=TRUE, direction="both", returnResult=FALSE) mod1 < lmer(y ~ x + (1a), data=df) stepcAIC(mod1, groupCandidates=c("b","c"), data=df, trace=TRUE, direction="forward") stepcAIC(mod1, groupCandidates=c("b","c"), data=df, trace=TRUE, direction="both") mod2 < lmer(y ~ x + (1a) + (1c), data=df) stepcAIC(mod2, data=df, trace=TRUE, direction="backward") mod3 < lmer(y ~ x + (1a) + (1a:b), data=df) stepcAIC(mod3, data=df, trace=TRUE, direction="backward") ## End(Not run)