I am modelling data from a 3 time point longitudinal study using an RI-CLPM approach. There was a negative variance estimate for the between participant random intercept term for the outcome variable body weight (var_free model). The explanatory variable was a food addiction score (x) with the random intercept variance being more realistic.
This was a gross failure of the model in reflecting the nature of variability in the data as the between participant variance for weight was large as judged by alternative analyses. The within participant component of variance at time 1 was 812. That is all the between participant variability was being reflected in the within component. An alternative model was chosen in which the variance for the random intercept was fixed at 790, a sensible value based on other analyses carried out (var_fixed model).
Although the model fit measures were similar for both models the parameter estimates for autoregressive and cross-lagged terms were quite different. I decided that the var_fixed model would be a better model for representating the data. The attached html file contains all the analyses, details and explanations behind my analyses (including this post at the of the markdown document).
I have two questions.
Is my decision to choose the var_fixed model over the var_free model sound?
Was there some other way I could have fitted the model to overcome the negative variance estimation issue and not have to resort to fixing the between participant variance parameter?
Dear Yves,
Thanks for your thoughts on my model choice, I am encouraged.
I tried the bounds feature but it didn’t work, lavaan output a warning message.
## Warning: lavaan->lav_model_estimate():
## bounds have no effect in the presence of linear equality constraints
I assume this is because of constraints in my model to keep the auto-regressive coefficients equal for time 1 to 2 and time 2 to 3, and similarly for the cross-lagged coefficients.
I found a work around by applying constraints in the model specification
# Variance of random effects - yi fixed at > 0
yi~~ var_yi*yi
# Constrain var(yi) > 0
var_yi > 0
# Contain time 1 within component to be small
y1r ~~ var_y1r*y1r
var_y1r < 100
The result reinforced for me the choice to fix the random intercept term variance at 790 was sensible. The variance for the time 1 within component was estimated as 100, i.e. the maximum it could attained given the bound. The random intercept term variance was 688. It appears the strong correlation between the two terms has them tied together and they share the total variance with the estimation procedure unable to separate them properly into their two components.