1
$\begingroup$

I'm trying to estimate an ALT-SR model (autoregressive latent trajectory with random intercepts) where stress is continuous and smoke is ordinal (0/1).
When I run the model I get the following warning:

"variance-covariance matrix of the estimated parameters (vcov) does not appear to be positive definite! The smallest eigenvalue (= 9.873656e-16) is close to zero. This may be a symptom that the model is not identified."

I tested the same ALT-RL specification with two continuous variables and it works fine. In this case, however, I believe the problem comes from smoke being ordinal. I’m using the WLSMV estimator with the ordered argument in lavaan.For building the model, I closely followed the article "Beyond the Cross-Lagged Panel Model: Next-Generation Statistical Tools for Analyzing Interdependencies Across the Life Course" (Marcus Mund & Steffen Nestler).

Do I need to change something in the specification to make the ALT-RL model work with an ordinal variable, or is my current approach simply not appropriate for this type of data?

Any advice or suggestions would be very appreciated

model <- '
# 1. Growth factors for smoke 
i_smoke =~ 1*smoke_2004 + 1*smoke_2006 + 1*smoke_2008 + 
           1*smoke_2010 + 1*smoke_2012 + 1*smoke_2014

# 2. Growth factors for stress
i_stress =~ 1*stress_2004 + 1*stress_2006 + 1*stress_2008 + 
            1*stress_2010 + 1*stress_2012 + 1*stress_2014
s_stress =~ 0*stress_2004 + 1*stress_2006 + 2*stress_2008 + 
            3*stress_2010 + 4*stress_2012 + 5*stress_2014

# 3. Phantom latent variables for smoke
eta_smoke2004 =~ 1*smoke_2004
eta_smoke2006 =~ 1*smoke_2006
eta_smoke2008 =~ 1*smoke_2008
eta_smoke2010 =~ 1*smoke_2010
eta_smoke2012 =~ 1*smoke_2012
eta_smoke2014 =~ 1*smoke_2014

# 4. Phantom latent variables for stress
eta_stress2004 =~ 1*stress_2004
eta_stress2006 =~ 1*stress_2006
eta_stress2008 =~ 1*stress_2008
eta_stress2010 =~ 1*stress_2010
eta_stress2012 =~ 1*stress_2012
eta_stress2014 =~ 1*stress_2014

# 5. Residual variances of observed variables set to zero 

smoke_2004 ~~ 0*smoke_2004
smoke_2006 ~~ 0*smoke_2006
smoke_2008 ~~ 0*smoke_2008
smoke_2010 ~~ 0*smoke_2010
smoke_2012 ~~ 0*smoke_2012
smoke_2014 ~~ 0*smoke_2014

stress_2004 ~~ 0*stress_2004
stress_2006 ~~ 0*stress_2006
stress_2008 ~~ 0*stress_2008
stress_2010 ~~ 0*stress_2010
stress_2012 ~~ 0*stress_2012
stress_2014 ~~ 0*stress_2014

# 6. Autoregressive paths
eta_smoke2006 ~ a_smoke*eta_smoke2004
eta_smoke2008 ~ a_smoke*eta_smoke2006
eta_smoke2010 ~ a_smoke*eta_smoke2008
eta_smoke2012 ~ a_smoke*eta_smoke2010
eta_smoke2014 ~ a_smoke*eta_smoke2012

eta_stress2006 ~ a_stress*eta_stress2004
eta_stress2008 ~ a_stress*eta_stress2006
eta_stress2010 ~ a_stress*eta_stress2008
eta_stress2012 ~ a_stress*eta_stress2010
eta_stress2014 ~ a_stress*eta_stress2012

# 7. Cross-lagged effects
eta_stress2006 ~ cl_smoke2stress*eta_smoke2004
eta_stress2008 ~ cl_smoke2stress*eta_smoke2006
eta_stress2010 ~ cl_smoke2stress*eta_smoke2008
eta_stress2012 ~ cl_smoke2stress*eta_smoke2010
eta_stress2014 ~ cl_smoke2stress*eta_smoke2012

eta_smoke2006 ~ cl_stress2smoke*eta_stress2004
eta_smoke2008 ~ cl_stress2smoke*eta_stress2006
eta_smoke2010 ~ cl_stress2smoke*eta_stress2008
eta_smoke2012 ~ cl_stress2smoke*eta_stress2010
eta_smoke2014 ~ cl_stress2smoke*eta_stress2012

# 8. Variances of phantom latent variables
eta_smoke2004 ~~ v_smoke1*eta_smoke2004
eta_smoke2006 ~~ v_smoke2*eta_smoke2006
eta_smoke2008 ~~ v_smoke2*eta_smoke2008
eta_smoke2010 ~~ v_smoke2*eta_smoke2010
eta_smoke2012 ~~ v_smoke2*eta_smoke2012
eta_smoke2014 ~~ v_smoke2*eta_smoke2014

eta_stress2004 ~~ v_stress1*eta_stress2004
eta_stress2006 ~~ v_stress2*eta_stress2006
eta_stress2008 ~~ v_stress2*eta_stress2008
eta_stress2010 ~~ v_stress2*eta_stress2010
eta_stress2012 ~~ v_stress2*eta_stress2012
eta_stress2014 ~~ v_stress2*eta_stress2014

# 9. Variances and covariances of growth factors
i_smoke ~~ var_i_smoke*i_smoke
i_stress ~~ var_i_stress*i_stress
s_stress ~~ var_s_stress*s_stress

i_smoke ~~ cov_i_smoke_stress*i_stress

eta_smoke2004 ~~ 0*i_smoke + 0*i_stress + 0*s_stress
eta_stress2004 ~~ 0*i_smoke + 0*i_stress + 0*s_stress

eta_smoke2004 ~~ cov_res_ss1*eta_stress2004
eta_smoke2006 ~~ cov_res_ss2*eta_stress2006
eta_smoke2008 ~~ cov_res_ss2*eta_stress2008
eta_smoke2010 ~~ cov_res_ss2*eta_stress2010
eta_smoke2012 ~~ cov_res_ss2*eta_stress2012
eta_smoke2014 ~~ cov_res_ss2*eta_stress2014

#  Means structure
i_smoke ~ 1
i_stress ~ 1
s_stress ~ 0*1

# Observed means fixed to zero
smoke_2004 ~ 0*1
smoke_2006 ~ 0*1
smoke_2008 ~ 0*1
smoke_2010 ~ 0*1
smoke_2012 ~ 0*1
smoke_2014 ~ 0*1

stress_2004 ~ 0*1
stress_2006 ~ 0*1
stress_2008 ~ 0*1
stress_2010 ~ 0*1
stress_2012 ~ 0*1
stress_2014 ~ 0*1

eta_smoke2004 ~ 0*1
eta_smoke2006 ~ 0*1
eta_smoke2008 ~ 0*1
eta_smoke2010 ~ 0*1
eta_smoke2012 ~ 0*1
eta_smoke2014 ~ 0*1

eta_stress2004 ~ 0*1
eta_stress2006 ~ 0*1
eta_stress2008 ~ 0*1
eta_stress2010 ~ 0*1
eta_stress2012 ~ 0*1
eta_stress2014 ~ 0*1
'
$\endgroup$

1 Answer 1

0
$\begingroup$

Because smoke (say, $y$) is binary, you cannot disentangle changes in level (intercepts, captured by growth factors) from changes in spread (residual or marginal variance) in the latent response ($y^*$, e.g., "propensity to smoke"). You can only estimate change in either the level or (residual or marginal) variance conditional on assuming equality of the other in addition to equality of thresholds over time.

By default, the intercepts of latent responses are fixed to 0 for identification, so you can't estimate a mean of the random intercept i_smoke (it must be fixed to 0).

You didn't show your lavaan() call, but your syntax specifies residual variances of latent responses, so you need to set parameterization = "theta". By default, those residual variances would be fixed to 1 for identification, so you would need to analogously fix the residual variances of eta_smoke20** to 1. If you merely equality-constrain the residual variances (after 2004), then you can only estimate that parameter by setting thresholds equal across occasions.

'
smoke_2004 | thr*t1
smoke_2006 | thr*t1
smoke_2008 | thr*t1
smoke_2010 | thr*t1
smoke_2012 | thr*t1
smoke_2014 | thr*t1
'

But then you can't estimate a change in level between the first and second occasion. But I suppose that is not a concern for you, since you don't appear to be modeling change (latent slope) for smoke, only the random intercept. Under that assumption, you could freely estimate all the residual variances of eta_smoke20**, and your equality constraints after 2004 would be testable.

$\endgroup$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.