0

I want to do structural equation modeling with three moderators. My variables are attractiveness (X), self-worth (Y), age (A), gender (G) and social status (S). The data is longitudinal and collected in two waves: t1 and t2. In order to find out which relation exists between X and Y, in which direction this relation goes and how the relation is moderated by A, G and S, I want to use a cross-lagged-model where X_t2 and Y_t2 are the outcome variables. I use the R-package lavaan. The model looks like the following:

modelCLP <- '
  # regressions
    X_t2 ~ X_t1 + Y_t1 + A + G + S + Y_t1 * A + Y_t1 * G + Y_t1 * S   
    Y_t2 ~ Y_t1 + X_t2 + A + G + S + X_t1 * A + X_t1 * G + X_t1 * S 
  
  # co-movements
    X_t2 ~~ Y_t2
    X_t1 ~~ Y_t1
 
'
fit <- sem(modelCLP, data = datenB)
summary(fit, standardized = TRUE, fit.measures = TRUE)

The problem with my output is that I get the same results for the moderators in equation 1 and for the moderators in equation 2. When I do three separate analyses for the moderators I get three different results. When i calculate the model above, I get theses results:

lavaan 0.6-10 ended normally after 20 iterations

  Estimator                                         ML
  Optimization method                           NLMINB
  Number of model parameters                        13
  Number of equality constraints                     4
                                                      
                                                  Used       Total
  Number of observations                           871        2406
                                                                  
Model Test User Model:
                                                      
  Test statistic                                14.959
  Degrees of freedom                                 4
  P-value (Chi-square)                           0.005

Model Test Baseline Model:

  Test statistic                              1024.222
  Degrees of freedom                                11
  P-value                                        0.000

User Model versus Baseline Model:

  Comparative Fit Index (CFI)                    0.989
  Tucker-Lewis Index (TLI)                       0.970

Loglikelihood and Information Criteria:

  Loglikelihood user model (H0)              -1967.499
  Loglikelihood unrestricted model (H1)      -1960.020
                                                      
  Akaike (AIC)                                3952.999
  Bayesian (BIC)                              3995.926
  Sample-size adjusted Bayesian (BIC)         3967.344

Root Mean Square Error of Approximation:

  RMSEA                                          0.056
  90 Percent confidence interval - lower         0.028
  90 Percent confidence interval - upper         0.088
  P-value RMSEA <= 0.05                          0.320

Standardized Root Mean Square Residual:

  SRMR                                           0.018

Parameter Estimates:

  Standard errors                             Standard
  Information                                 Expected
  Information saturated (h1) model          Structured

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
  X_t2 ~                                                                
    X_t1              0.382    0.018   21.245    0.000    0.382    0.600
    Y_t1              0.100    0.034    2.902    0.004    0.100    0.083
    A       (Y_t1)    0.002    0.002    1.395    0.163    0.002    0.037
    G       (Y_t1)    0.002    0.002    1.395    0.163    0.002    0.001
    S       (Y_t1)    0.002    0.002    1.395    0.163    0.002    0.003
  Y_t2 ~                                                                
    Y_t1              0.716    0.034   21.180    0.000    0.716    0.594
    X_t1              0.064    0.018    3.617    0.000    0.064    0.100
    A       (X_t1)    0.004    0.001    2.724    0.006    0.004    0.071
    G       (X_t1)    0.004    0.001    2.724    0.006    0.004    0.002
    S       (X_t1)    0.004    0.001    2.724    0.006    0.004    0.006

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
 .X_t2 ~~                                                               
   .Y_t2              0.104    0.020    5.287    0.000    0.104    0.182

Variances:
                   Estimate  Std.Err  z-value  P(>|z|)   Std.lv  Std.all
   .X_t2              0.580    0.028   20.869    0.000    0.580    0.581
   .Y_t2              0.560    0.027   20.869    0.000    0.560    0.559

What can I do in order to get different results for the three moderators? Is there a better way to do a SEM with multiple moderators in R?

Jesua_G
  • 1
  • 1

1 Answers1

0

I am not sure what exactly is being done by lavaan in your code, but I believe maybe 'A', 'G', and 'S' are considered constrains in the model.

For what I know, we need to prepare the interaction (moderation) terms before running the SEM analysis in almost (?) all tools... There are several ways to do so.

  • One is computing factor scores for the latent variables and generate the interaction terms as product among factor score and moderator.
  • Another way to do so in R, without computing factor scores is, for example, to use the function indProd() from semTools package.
  • From your code, it appears you are not dealing with latent variables, so, compute the product among the variables would be sufficient:
modelCLP$A_Y_t1=modelCLP$A*modelCLP$Y_t1
modelCLP$G_Y_t1=modelCLP$G*modelCLP$Y_t1
modelCLP$S_Y_t1=modelCLP$S*modelCLP$Y_t1
modelCLP$A_X_t1=modelCLP$A*modelCLP$Y_t1
modelCLP$G_X_t1=modelCLP$G*modelCLP$X_t1
modelCLP$S_X_t1=modelCLP$S*modelCLP$X_t1
    modelCLP <- '
      # regressions
    X_t2 ~ X_t1 + Y_t1 + A + G + S + A_Y_t1 + G_Y_t1  + S_Y_t1   
    Y_t2 ~ Y_t1 + X_t2 + A + G + S + A_X_t1 + G_X_t1 + S_X_t1      
      # co-movements
    X_t2 ~~ Y_t2
    X_t1 ~~ Y_t1'

Note: you possibly need to add covariances among all variables (including these interaction terms).

fit <- sem(modelCLP, data = datenB)
summary(fit, standardized = TRUE, fit.measures = TRUE)
hamagust
  • 728
  • 2
  • 10
  • 28