LCSM with proportional effects

14 views
Skip to first unread message

Vinicius Coscioni

unread,
Jun 14, 2025, 7:19:05 AM6/14/25
to lav...@googlegroups.com

Hello,

 

I want to test whether changes in agency predict changes in well-being considering 3 waves and a sample of 207 individuals (some data was imputed). Agency is a single indicator variable and well-being has multiple indicators (a scale with 4 items). I implemented LCSM with proportional effects using WLSMV (theta parameterization). To estimate well-being, I used the effects coding identification approach for both the estimation of factor loadings and thresholds.

 

Here is my code:

 

Model_LSCM_agency2 <- "

 

##### DLS #####

 

# latent true scores (factor loadings constrained to equality across waves)

DLS1 =~ NA*DLS_1.T1 + f1*DLS_1.T1 + f2*DLS_2.T1 + f3*DLS_3.T1 + f4*DLS_4.T1

DLS2 =~ NA*DLS_1.T2 + f1*DLS_1.T2 + f2*DLS_2.T2 + f3*DLS_3.T2 + f4*DLS_4.T2

DLS3 =~ NA*DLS_1.T3 + f1*DLS_1.T3 + f2*DLS_2.T3 + f3*DLS_3.T3 + f4*DLS_4.T3

 

# constraints (effects coding identification)

f1 + f2 + f3 + f4 == 4

 

# thresholds (constrained to equality across waves)

DLS_1.T1 |t1.1*t1 + t1.2*t2 + t1.3*t3 + t1.4*t4 + t1.5*t5 + t1.6*t6

DLS_2.T1 |t2.1*t1 + t2.2*t2 + t2.3*t3 + t2.4*t4 + t2.5*t5 + t2.6*t6

DLS_3.T1 |t3.1*t1 + t3.2*t2 + t3.3*t3 + t3.4*t4 + t3.5*t5 + t3.6*t6

DLS_4.T1 |t4.1*t1 + t4.2*t2 + t4.3*t3 + t4.4*t4 + t4.5*t5 + t4.6*t6

 

DLS_1.T2 |t1.1*t1 + t1.2*t2 + t1.3*t3 + t1.4*t4 + t1.5*t5 + t1.6*t6

DLS_2.T2 |t2.1*t1 + t2.2*t2 + t2.3*t3 + t2.4*t4 + t2.5*t5 + t2.6*t6

DLS_3.T2 |t3.1*t1 + t3.2*t2 + t3.3*t3 + t3.4*t4 + t3.5*t5 + t3.6*t6

DLS_4.T2 |t4.1*t1 + t4.2*t2 + t4.3*t3 + t4.4*t4 + t4.5*t5 + t4.6*t6

 

DLS_1.T3 |t1.1*t1 + t1.2*t2 + t1.3*t3 + t1.4*t4 + t1.5*t5 + t1.6*t6

DLS_2.T3 |t2.1*t1 + t2.2*t2 + t2.3*t3 + t2.4*t4 + t2.5*t5 + t2.6*t6

DLS_3.T3 |t3.1*t1 + t3.2*t2 + t3.3*t3 + t3.4*t4 + t3.5*t5 + t3.6*t6

DLS_4.T3 |t4.1*t1 + t4.2*t2 + t4.3*t3 + t4.4*t4 + t4.5*t5 + t4.6*t6

 

# constraints (effects coding approach)

t1.1 + t2.1 + t3.1 + t4.1 == 0

 

# unique variances (fixed to 1)

DLS_1.T1 ~~ 1*DLS_1.T1

DLS_2.T1 ~~ 1*DLS_2.T1

DLS_3.T1 ~~ 1*DLS_3.T1

DLS_4.T1 ~~ 1*DLS_4.T1

 

DLS_1.T2 ~~ 1*DLS_1.T2

DLS_2.T2 ~~ 1*DLS_2.T2

DLS_3.T2 ~~ 1*DLS_3.T2

DLS_4.T2 ~~ 1*DLS_4.T2

 

DLS_1.T3 ~~ 1*DLS_1.T3

DLS_2.T3 ~~ 1*DLS_2.T3

DLS_3.T3 ~~ 1*DLS_3.T3

DLS_4.T3 ~~ 1*DLS_4.T3

 

# measurement errors' covariances across waves (freely estimated)

DLS_1.T1 ~~ DLS_1.T2 + DLS_1.T3

DLS_2.T1 ~~ DLS_2.T2 + DLS_2.T3

DLS_3.T1 ~~ DLS_3.T2 + DLS_3.T3

DLS_4.T1 ~~ DLS_4.T2 + DLS_4.T3

DLS_1.T2 ~~ DLS_1.T3

DLS_2.T2 ~~ DLS_2.T3

DLS_3.T2 ~~ DLS_3.T3

DLS_4.T2 ~~ DLS_4.T3

 

# latent true scores' means (first freely estimated, others fixed to 0) 

DLS1 ~ 1

DLS2 ~ 0*1

DLS3 ~ 0*1

 

# latent true scores' variances (first freely estimated, others fixed to 0)

DLS1 ~~ DLS1

DLS2 ~~ 0*DLS2

DLS3 ~~ 0*DLS3

 

# autoregressions (loadings fixed to 1)

DLS2 ~ 1*DLS1

DLS3 ~ 1*DLS2

 

# latent change scores (loadings fixed to 1)

c.DLS1x2 =~ 1*DLS2

c.DLS2x3 =~ 1*DLS3

 

# latent change scores' means (freely estimated)

c.DLS1x2 ~ 1

c.DLS2x3 ~ 1

 

# latent change scores' disturbances (freely estimated) 

c.DLS1x2 ~~ c.DLS1x2

c.DLS2x3 ~~ c.DLS2x3

 

# covariance between latent change scores' disturbances (fixed to 0)

c.DLS1x2 ~~ 0*c.DLS2x3

 

# proportional effects (constrained to equality)

c.DLS1x2 ~ p.DLS*DLS1

c.DLS2x3 ~ p.DLS*DLS2

 

##### agency #####

 

# latent true scores (loadings fixed to 1)

Ag1 =~ 1*Ag.T1

Ag2 =~ 1*Ag.T2

Ag3 =~ 1*Ag.T3

 

# thresholds (first fixed to 0, others constrainted to equality across waves) 

Ag.T1 |0*t1 + t2.Ag*t2 + t3.Ag*t3 + t4.Ag*t4

Ag.T2 |0*t1 + t2.Ag*t2 + t3.Ag*t3 + t4.Ag*t4

Ag.T3 |0*t1 + t2.Ag*t2 + t3.Ag*t3 + t4.Ag*t4

 

# unique variances (fixed to 1)

Ag.T1 ~~ 1*Ag.T1

Ag.T2 ~~ 1*Ag.T2

Ag.T3 ~~ 1*Ag.T3

 

# latent true scores' means (first freely estimated, others fixed to 0)

Ag1 ~ 1

Ag2 ~ 0*1

Ag3 ~ 0*1

 

# latent true scores' variances (first freely estimated, others fixed to 0)

Ag1 ~~ 1*Ag1

Ag2 ~~ 0*Ag2

Ag3 ~~ 0*Ag3

 

# autoregressions (loadings fixed to 1)

Ag2 ~ 1*Ag1

Ag3 ~ 1*Ag2

 

# latent change scores (loadings fixed to 1)

c.Ag1x2 =~ 1*Ag2

c.Ag2x3 =~ 1*Ag3

 

# latent change scores' means (freely estimated)

c.Ag1x2 ~ 1

c.Ag2x3 ~ 1

 

# latent change scores' disturbances (freely estimated) 

c.Ag1x2 ~~ c.Ag1x2

c.Ag2x3 ~~ c.Ag2x3

 

# covariance between latent change scores' disturbances (fixed to 0)

c.Ag1x2 ~~ 0*c.Ag2x3

 

# proportional effects (constrained to equality)

c.Ag1x2 ~ p.Ag*Ag1

c.Ag2x3 ~ p.Ag*Ag2

 

##### relations between DLS and agency #####

 

# covariances between the first measurements

DLS1 ~~ Ag1

 

# coupling paratemers (constrained to equality)

c.DLS1x2 ~ p*c.Ag1x2

c.DLS2x3 ~ p*c.Ag2x3

"

 

fit_imp_LSCM_agency2 <- cfa(Model_LSCM_agency2,

                            data = df_imp,

                            ordered = T,

                            estimator = "wlsmv",

                            parameterization = "theta")

 

summary(fit_imp_LSCM_agency2, rsquare= T, standardized= T, fit.measures= T)

 

As this is the first time I’m running this sort of model, it would be great if someone could have a look if the code looks fine. I’m particularly concerned about:

1)     Am I estimating the thresholds correctly (first fixed to 0, other constrained to equality)?

2)     Should I fix the errors of agency to 1 the way I’m currently doing?

3)     Should I include covariances between agency errors across waves (not currently included)?

In addition, I also would like to understand better the function of the proportional effects. If I remove them, the effect size of the anticipated regression path increases considerably.

 

Here are extra questions:

1) The covariance between two well-being errors is negative. Should I fix it to 0.001?

2) The first threshold is often non-significant. Would it be more appropriate to collapse the two first response categories (which were less frequently answered)? 


Warmly,

--
Vinicius Coscioni, Ph.D.
Assistant Professor
Psychology Department (Developmental Psychology Section)
Utrecht University, Netherlands
Reply all
Reply to author
Forward
0 new messages