Identical regression estimates in cross-lagged panel model (RICLPM)?

206 views
Skip to first unread message

zrc2...@gmail.com

unread,
Apr 24, 2019, 10:08:37 AM4/24/19
to lavaan
Hello,

I am using an random intercept cross-lagged panel model (RICLPM) code for Lavaan (see below) with missing data estimated with fiml. I am puzzled by the results, which provide identical regression estimates for all cross and stability paths for the same construct measured at 4 different time points. In other words, estimate for x1--> x2, x2-->x3, x3-->x4 are all identical. Likewise, x1-->y2, x2-->y3, x3-->y4 are all identical.

I am curious if there is an obvious reason for such results. 

Any input would be much appreciated
riclpm3<- '
# Define intercept factors
ix =~ 1*x1+1*x2+1*x3+1*x4
iy =~ 1*y1+1*y2+1*y3+1*y4

# Define phantom latent variables
etax1 =~ 1*x1
etax2 =~ 1*x2
etax3 =~ 1*x3
etax4 =~ 1*x4

etay1 =~ 1*y1
etay2 =~ 1*y2
etay3 =~ 1*y3
etay4 =~ 1*y4

# Autoregressive effects
etax2 ~ a1*etax1
etax3 ~ a1*etax2
etax4 ~ a1*etax3

etay2 ~ a2*etay1
etay3 ~ a2*etay2
etay4 ~ a2*etay3

# Crosslagged effects
etay2 ~ c1*etax1
etay3 ~ c1*etax2
etay4 ~ c1*etax3

etax2 ~ c2*etay1
etax3 ~ c2*etay2
etax4 ~ c2*etay3

# Some further constraints on the variance structure
# 1. Set error variances of the observed variables to zero
x1 ~~ 0*x1
x2 ~~ 0*x2
x3 ~~ 0*x3
x4 ~~ 0*x4

y1 ~~ 0*y1
y2 ~~ 0*y2
y3 ~~ 0*y3
y4 ~~ 0*y4

# 2. Let lavaan estimate the variance of the latent variables
etax1 ~~ varx1*etax1
etax2 ~~ varx2*etax2
etax3 ~~ varx3*etax3
etax4 ~~ varx4*etax4

etay1 ~~ vary1*etay1
etay2 ~~ vary2*etay2
etay3 ~~ vary3*etay3
etay4 ~~ vary4*etay4

# 3. We also want estimates of the intercept factor variances and an
#    estimate of their covariance
ix ~~ varix*ix
iy ~~ variy*iy
ix ~~ covi*iy

# 4. We have to define that the covariance between the intercepts and
#    the latents of the first time point are zero
etax1 ~~ 0*ix
etay1 ~~ 0*ix
etax1 ~~ 0*iy
etay1 ~~ 0*iy

# 5. Finally, we estimate the covariance between the latents of x and y
#    of the first time point, the second time-point and so on. note that
#    for the second to fourth time point the correlation is constrained to
#    the same value
etax1 ~~ cov1*etay1
etax2 ~~ e1*etay2
etax3 ~~ e1*etay3
etax4 ~~ e1*etay4

# The model also contains a mean structure and we have to define some
# constraints for this part of the model. the assumption is that we
# only want estimates of the mean of the intercept factors. all other means
# are defined to be zero:
x1 ~ 0*1
x2 ~ 0*1
x3 ~ 0*1
x4 ~ 0*1
y1 ~ 0*1
y2 ~ 0*1
y3 ~ 0*1
y4 ~ 0*1

etax1 ~ 0*1
etax2 ~ 0*1
etax3 ~ 0*1
etax4 ~ 0*1

etay1 ~ 0*1
etay2 ~ 0*1
etay3 ~ 0*1
etay4 ~ 0*1

ix ~ 1
iy ~ 1


## define correlations
cori := covi / (sqrt(varix) * sqrt(variy))
cor1 := cov1 / (sqrt(varx1) * sqrt(vary1))
cort2 := e1 / (sqrt(varx2) * sqrt(vary2))
cort3 := e1 / (sqrt(varx3) * sqrt(vary4)) #IS THIS CORRECT?
cort4 := e1 / (sqrt(varx4) * sqrt(vary4))
'

OUTPUT

> fit3 <- sem(riclpm3, data = RICLPM, missing="fiml")
> summary(fit3, fit.measures = T)
lavaan 0.6-3 ended normally after 228 iterations

  Optimization method                           NLMINB
  Number of free parameters                         29
  Number of equality constraints                    10

                                                  Used       Total
  Number of observations                           142         156
  Number of missing patterns                        41

  Estimator                                         ML
  Model Fit Test Statistic                     109.023
  Degrees of freedom                                25
  P-value (Chi-square)                           0.000

Model test baseline model:

  Minimum Function Test Statistic              461.425
  Degrees of freedom                                28
  P-value                                        0.000

User model versus baseline model:

  Comparative Fit Index (CFI)                    0.806
  Tucker-Lewis Index (TLI)                       0.783

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -2848.588
  Loglikelihood unrestricted model (H1)      -2794.076

  Number of free parameters                         19
  Akaike (AIC)                                5735.175
  Bayesian (BIC)                              5791.336
  Sample-size adjusted Bayesian (BIC)         5731.219

Root Mean Square Error of Approximation:

  RMSEA                                          0.154
  90 Percent Confidence Interval          0.125  0.184
  P-value RMSEA <= 0.05                          0.000

Standardized Root Mean Square Residual:

  SRMR                                           0.146

Parameter Estimates:

  Information                                 Observed
  Observed information based on                Hessian
  Standard Errors                             Standard

Latent Variables:
                   Estimate  Std.Err  z-value  P(>|z|)
  ix =~                                               
    x1                1.000                           
    x2                1.000                           
    x3                1.000                           
    x4                1.000                           
  iy =~                                               
    y1                1.000                           
    y2                1.000                           
    y3                1.000                           
    y4                1.000                           
  etax1 =~                                            
    x1                1.000                           
  etax2 =~                                            
    x2                1.000                           
  etax3 =~                                            
    x3                1.000                           
  etax4 =~                                            
    x4                1.000                           
  etay1 =~                                            
    y1                1.000                           
  etay2 =~                                            
    y2                1.000                           
  etay3 =~                                            
    y3                1.000                           
  etay4 =~                                            
    y4                1.000                           

Regressions:
                   Estimate  Std.Err               z-value  P(>|z|)
  etax2 ~                                                          
    etax1     (a1)    0.816                 0.086    9.519    0.000
  etax3 ~                                                          
    etax2     (a1)    0.816                 0.086    9.519    0.000
  etax4 ~                                                          
    etax3     (a1)    0.816                 0.086    9.519    0.000
  etay2 ~                                                          
    etay1     (a2)    0.203                 0.087    2.329    0.020
  etay3 ~                                                          
    etay2     (a2)    0.203                 0.087    2.329    0.020
  etay4 ~                                                          
    etay3     (a2)    0.203                 0.087    2.329    0.020
  etay2 ~                                                          
    etax1     (c1)   -0.039                 0.061   -0.635    0.525
  etay3 ~                                                          
    etax2     (c1)   -0.039                 0.061   -0.635    0.525
  etay4 ~                                                          
    etax3     (c1)   -0.039                 0.061   -0.635    0.525
  etax2 ~                                                          
    etay1     (c2)    0.125                 0.143    0.874    0.382
  etax3 ~                                                          
    etay2     (c2)    0.125                 0.143    0.874    0.382
  etax4 ~                                                          
    etay3     (c2)    0.125                 0.143    0.874    0.382

Covariances:
                   Estimate  Std.Err               z-value  P(>|z|)
  ix ~~                                                            
    iy      (covi)   17.881                 8.222    2.175    0.030
    etax1             0.000                                        
    etay1             0.000                                        
  iy ~~                                                            
    etax1             0.000                                        
    etay1             0.000                                        
  etax1 ~~                                                         
    etay1   (cov1)  -12.186                 7.752   -1.572    0.116
 .etax2 ~~                                                         
   .etay2     (e1)   -0.175                 2.112   -0.083    0.934
 .etax3 ~~                                                         
   .etay3     (e1)   -0.175                 2.112   -0.083    0.934
 .etax4 ~~                                                         
   .etay4     (e1)   -0.175                 2.112   -0.083    0.934

Intercepts:
                   Estimate  Std.Err               z-value  P(>|z|)
   .x1                0.000                                        
   .x2                0.000                                        
   .x3                0.000                                        
   .x4                0.000                                        
   .y1                0.000                                        
   .y2                0.000                                        
   .y3                0.000                                        
   .y4                0.000                                        
    etax1             0.000                                        
   .etax2             0.000                                        
   .etax3             0.000                                        
   .etax4             0.000                                        
    etay1             0.000                                        
   .etay2             0.000                                        
   .etay3             0.000                                        
   .etay4             0.000                                        
    ix               32.708                 0.846   38.681    0.000
    iy               20.310                 0.465   43.635    0.000

Variances:
                   Estimate  Std.Err               z-value  P(>|z|)
   .x1                0.000                                        
   .x2                0.000                                        
   .x3                0.000                                        
   .x4                0.000                                        
   .y1                0.000                                        
   .y2                0.000                                        
   .y3                0.000                                        
   .y4                0.000                                        
    etax1   (vrx1)   92.753                41.398    2.240    0.025
   .etax2   (vrx2)   57.551                 8.858    6.497    0.000
   .etax3   (vrx3)   36.850                 5.373    6.859    0.000
   .etax4   (vrx4)   34.280                 5.222    6.564    0.000
    etay1   (vry1)   23.144                 4.108    5.634    0.000
   .etay2   (vry2)   15.316                 2.538    6.034    0.000
   .etay3   (vry3)   19.491                 3.718    5.242    0.000
   .etay4   (vry4)   13.116                 2.519    5.208    0.000
    ix      (varx)  -12.576                39.995   -0.314    0.753
    iy      (vary)   19.328                 3.668    5.269    0.000

Defined Parameters:
                   Estimate  Std.Err               z-value  P(>|z|)
    cori                Inf 35882095144945480.000      Inf    0.000
    cor1             -0.263                 0.154   -1.709    0.088
    cort2            -0.006                 0.071   -0.083    0.934
    cort3            -0.008                 0.096   -0.083    0.934
    cort4            -0.008                 0.100   -0.083    0.934

>

Terrence Jorgensen

unread,
Apr 24, 2019, 12:59:06 PM4/24/19
to lavaan
I am puzzled by the results, which provide identical regression estimates for all cross and stability paths for the same construct measured at 4 different time points. In other words, estimate for x1--> x2, x2-->x3, x3-->x4 are all identical. Likewise, x1-->y2, x2-->y3, x3-->y4 are all identical.  I am curious if there is an obvious reason for such results. 

Because your model syntax constraints them to equality by using the same labels:

# Autoregressive effects
etax2 ~ a1*etax1
etax3 ~ a1*etax2
etax4 ~ a1*etax3

etay2 ~ a2*etay1
etay3 ~ a2*etay2
etay4 ~ a2*etay3

# Crosslagged effects
etay2 ~ c1*etax1
etay3 ~ c1*etax2
etay4 ~ c1*etax3

etax2 ~ c2*etay1
etax3 ~ c2*etay2
etax4 ~ c2*etay3

See the section "simple equality constraints" in the tutorial:  http://lavaan.ugent.be/tutorial/syntax2.html

Terrence D. Jorgensen
Assistant Professor, Methods and Statistics
Research Institute for Child Development and Education, the University of Amsterdam

zrc2...@gmail.com

unread,
Apr 25, 2019, 11:16:05 AM4/25/19
to lavaan
Indeed...! I noticed that only after my post and did have to think what purpose equality constraints serves for cross-path type modeling (when my substantive interest in these modeling is usually interpreting direction of influence with regression coefficients). Thank you for taking your time to answer this (dumb) question. Much appreciated.
Reply all
Reply to author
Forward
0 new messages