I have a gam model with automatic predictor selection based on cubic splines (bs = cr) and SELECT == T or shrinkage cubic splines (bs = cs) and SELECT == F.
Now I'm wondering if predictors affected by concurvity are automatically dropped from my model by the shrinkage methods, or if I should remove them from the model myself after checking for concurvity.

My Model looks like this:

genericModel <- mgcv::bam(formula = TT2_ScaledTransformed ~
            s(NDVI, k = k, bs = cr) + ... +
            s(BuildingHeight_10m_10std, k = k, bs = cr),
            data = trainSet,
            family = gaussian, method = "fREML", select = TRUE, 
            control = ctrl,
            cluster = cl, gamma = 1.4)

E.g. in this example, BuildingHeight and NDVI (Index for Vegetation) are partly concurved, because these two parameter are partly inverse.

And I check for concurvity like this:

print(concurvity(genericModel, full = TRUE))

And I evaluate my model based on AIC.


1 Answer 1


In short, no, using select = TRUE doesn't automatically drop concurved terms. You should still check the concurvity of the terms in the resultant model, and decide whether to drop terms or not for highly concurved ones, checking how the other estimated terms change when you drop a concurved term.

That said, fitting with method = "REML" (or "ML" or "fREML" depending on context) and select = TRUE is likely the best protection against the issues raised by concurved terms in the model that we have if you don't want to or can't drop concruved terms.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.