Because of the conditional nature of the optimization process in CBFM, such that if a B_xxx argument is used to construct random intercepts, then they are not centered around zero i.e., the mean of the random intercepts is not zero, even though by definition of PQL estimation they should be.
The problem occurs because when basis_effects_mat is meant to operate like random intercepts, then that are updated conditional on the Xbeta part of the model. So then the update behaves like estimationg random intercepts when there is no overall intercept in the model. This then causes these estimates to not be centered around zero.
It is a problem for interpretation but not for prediction, at least in principle;
Solutions:
- If
B_xxx itself is centered around zero i.e., a smooth basis function matrix from many options in mgcv, then this is not a problem. In principle, one could also scale B_xxx externall to have columns sum to zero to fix this problem. But this is fraught with danger if you don't know what you are doing!
- Employ a separate step when you move the mean of any random intercept type
B_xxx terms to the overall intercept in the Xbeta component.
Because of the conditional nature of the optimization process in CBFM, such that if a
B_xxxargument is used to construct random intercepts, then they are not centered around zero i.e., the mean of the random intercepts is not zero, even though by definition of PQL estimation they should be.The problem occurs because when
basis_effects_matis meant to operate like random intercepts, then that are updated conditional on theXbetapart of the model. So then the update behaves like estimationg random intercepts when there is no overall intercept in the model. This then causes these estimates to not be centered around zero.It is a problem for interpretation but not for prediction, at least in principle;
Solutions:
B_xxxitself is centered around zero i.e., a smooth basis function matrix from many options inmgcv, then this is not a problem. In principle, one could also scaleB_xxxexternall to have columns sum to zero to fix this problem. But this is fraught with danger if you don't know what you are doing!B_xxxterms to the overall intercept in theXbetacomponent.