What's the best approach for configuring a longitudinal CFA model?

I’m working on a study where I asked the same 12 questions both before and after a term. Now I want to compare the factor models for these two surveys using longitudinal CFA. Here are the details:

The questions are divided into three groups:

  • Factor1: Q1 to Q4
  • Factor2: Q5 to Q8
  • Factor3: Q9 to Q12

I’m uncertain how to set up the configural model. Should I build separate models for each factor, combine everything into one model, or try a different approach?

For example, I thought about using something like this:

model <- '
Factor1_pre =~ Q1_pre + Q2_pre + Q3_pre + Q4_pre
Factor1_post =~ Q1_post + Q2_post + Q3_post + Q4_post

Factor2_pre =~ Q5_pre + Q6_pre + Q7_pre + Q8_pre
Factor2_post =~ Q5_post + Q6_post + Q7_post + Q8_post

Factor3_pre =~ Q9_pre + Q10_pre + Q11_pre + Q12_pre
Factor3_post =~ Q9_post + Q10_post + Q11_post + Q12_post
'

After defining my model, I plan to use the cfa() function to fit it. Also, I’m curious if I can use the equaltestMI package for this task, or if it’s only intended for multi-group CFA. Any help or advice would be greatly appreciated. Thanks!

hey, ur approach looks good! I’d suggest combining all factors into one model for a comprehensive analysis. it lets u see how factors relate over time. Don’t forget to check configural invariance first. the lavaan package is great for this. good luck with ur study!

Your approach is on the right track. Combining all factors into one model is indeed preferable for longitudinal CFA. It allows you to examine the relationships between factors over time and test for measurement invariance.

Here’s a suggestion for your model specification:

model <- '
# Measurement model
Factor1_pre =~ Q1_pre + Q2_pre + Q3_pre + Q4_pre
Factor1_post =~ Q1_post + Q2_post + Q3_post + Q4_post
Factor2_pre =~ Q5_pre + Q6_pre + Q7_pre + Q8_pre
Factor2_post =~ Q5_post + Q6_post + Q7_post + Q8_post
Factor3_pre =~ Q9_pre + Q10_pre + Q11_pre + Q12_pre
Factor3_post =~ Q9_post + Q10_post + Q11_post + Q12_post

# Covariances between factors
Factor1_pre ~~ Factor2_pre + Factor3_pre
Factor2_pre ~~ Factor3_pre
Factor1_post ~~ Factor2_post + Factor3_post
Factor2_post ~~ Factor3_post

# Autoregressive paths
Factor1_pre ~~ Factor1_post
Factor2_pre ~~ Factor2_post
Factor3_pre ~~ Factor3_post
'

This model allows for correlations between factors at each time point and autoregressive paths across time. Use lavaan’s cfa() function to fit this model. Start with configural invariance and then test for metric and scalar invariance if needed. The equaltestMI package isn’t strictly necessary here, but its principles can be applied to your longitudinal design.