Using change in one variable (2 timepoints) to predict change in another variable (2 timepoints): latent change models? I have two variables, both measured at two timepoints: before and after an experimental procedure.
I'm expecting that change in one variable from Time 1 to Time 2 will predict change in the other variable from Time 1 to Time 2.
I think that I may be able to test this model with the following code in Lavaan:
library(lavaan)
#intercepts
ia =~ 1*a1 + 1*a2
ib =~ 1*b1 + 1*b2
#slopes
sa =~ 0*b1 + 1*b2
sb =~ 0*a1 + 1*a2

#regression
sb ~ sa

My question is two-fold:

*

*Is this a "latent change model"? I can't find any specific guidance or resources doing something exactly like this. But I think this computes two slopes and uses one slope to predict the other slope.

*How is this different from extracting the coefficient for each subject, saving that coefficient to the datafile, and then computing a simple fixed effects multiple regression?

Any suggestions are welcome.
 A: You also need to define a latent intercept for the "b" pair.  In your current code, s1 is just a dummy/phantom/single-indicator factor that puts b2 in latent space.  So you are predicting b2 rather than change from b1 to b2.

*

*I'm pretty sure the LGCM with only 2 occasions would be statistically equivalent to a latent difference/change score (LDS) model, if you fixed the indicators' residual variances to zero.  In that case, the second indicator's variance is composed entirely of (a) the first indicator's variance plus (b) variance in the change score (latent slope).  And the latent intercept is simply the first indicator in latent space, which points to the second indicator, just as the first indicator typically does in a LDS model.

a_diff =~ 1*a2 # analogous to "s2" above
a2 ~ 1*a1

a2 ~~ 0*a2

a1 ~~ a1 + a_diff
a_diff ~~ a_diff



*You are describing factor-score regression, which is problematic because estimated factor scores are treated as observed data.  There are some solutions (Croon's correction, semTools::plausibleValues(), structural-after-measurement in lavaan::sam(): preprint linked below), but I don't see any reason to consider using this approach in your situation.  They can be good alternatives to a big simultaneous SEM when N is small or the measurement model fits only approximately well for constructs that otherwise meet all validity criteria.

https://osf.io/pekbm/ (SAM preprint, also discusses Croon's correction)
