The nAGQ
error is from package lme4 which is used by projpred for performing the projection (namely by fitting an lme4 model to “the” fit of the reference model). It is caused by projpred encountering an lme4 convergence error and then trying to avoid that automatically by increasing argument nAGQ
of lme4::glmer()
. You could now try to play around with the lme4 tuning parameters (see lme4::glmer()
) until the error disappears (without compromising the convergence of the estimation algorithm used by lme4). For that, I guess you would have to adapt projpred:::divmin()
to replace the automatic nAGQ
adjustment in these lines by something which works in your case. The adapted projpred:::divmin()
function then needs to be passed to argument div_minimizer
of init_refmodel()
(via brms:::get_refmodel.brmsfit()
in your case). However, instead of taking this tedious way directly, I think you should try the latent projection (Latent projection predictive feature selection • projpred) first. The latent projection might be able to avoid the lme4 convergence error underlying the nAGQ
error and in general, it is also able to avoid this lme4 issue. However, the latent projection is only an approximate solution.
Concerning your search_terms
question:
Is there a better way to do this?
Unfortunately, there is no better way at the moment. For the future, we plan some enhancements (see also Fixing certain terms to be included in all submodels in cv_varsel in a high dimensional setting · Issue #346 · stan-dev/projpred · GitHub), but we haven’t made it yet to implement these.
Some minor remarks:
-
In
cv_varsel()
, you are usingrefit_prj=FALSE
andnclusters_pred = 20
. Thenclusters_pred = 20
part is not necessary and can be omitted because you are using the default ofnclusters = 20
for the search part. Apart from that, for final results, yournclusters
/refit_prj
/nclusters_pred
setting seems quite rough. See also my answer at Projpred: Fixing Group Effects in Search Terms and Tips for Speed? - #2 by fweber144. -
In the
brm()
call, you have the predictor termsI(Dam.age.years^2)
andI(Sire.age.years^2)
. These should now be supported correctly by projpred (recently, there have been some fixes for such terms), but in general (also outside of projpred), such special terms are always a bit more dangerous than pre-calculating the corresponding predictor data, appending it as new columns to the dataset, and then using these pre-calculated predictor columns as “usual” predictor terms in the model formula.