Conditional indirect effects, multiple x, latent variables

189 views
Skip to first unread message

Francesca Tirotto

unread,
Jun 26, 2019, 7:54:58 PM6/26/19
to lavaan
Hi all,

I have a model with 4 continuous latent IVs, 1 continuous latent moderator, and 1 observed y (please see the model attached).

I am ok with R, I am a beginner with SEM, never used spss and "process". 

I would like to verify:

1) the effect of the moderator variable W on the relationship between the M and y within the sem model (where the variables X1, X2, X3, X4 are also included). For example the relationship between X1 and y is mediated by M - and the relationship between M and y is moderated by W.

2) the mediating effect of M on the relationship between each X (1, 2, 3, 4) and y;
    
3) how the above X1 and X2 mediation effects are also moderated by W (I think it should be the model 14 in Hayes's book);                               
4) if it is possibile to do all the steps above in one model specification.


For what concerns X3 and X4 instead, I am only interested in the mediation paths (not the conditional effects).

  
Here I define the first part of the model:
 #a1, b1, c1, d1 are the direct effects of X1, X2, X3, X4 on y; t is the direct effect of W on y

    model<- 
    X1=~ x1.1 + x1.2 + x1.3 + x1.4
    X2=~ x2.5 + x2.6 + x2.7 + x2.8
    X3=~ x3.9 + x3.10 + x3.11
    X4=~ x4.12 + x4.13 + x4.14
    M=~  m.15 + m.16 + m.17  
    W=~  w.18 + w.19 + w.20
    MxW =~ m.15.w.18 + m.16.w.19 + m.17.w.20 ##compute with IndProd with match=T e doubleMC=T

    #regressions
    M ~ a*X1 + b*X2 + c*X3 + d*X4
    y ~ a1*X1 + b1*X2 + c1*X3 + d1*X4 + e*M + t*W+ mw*MxW

I am not sure if I should add covariance (~~) between IVs or any other specification that this model would require (?). 

Continuing within the same model, I define additional parameters as follow.

My attempt for the conditional effect based on previous discussions 

#I am interested in what happens at low or high level of the moderator W (that it's measured with a 7 p Likert-Scale)

#indirect effect conditional on W levels 
#IV X1
ae0 := a*e             # (W==0)
low_ae_W  :=  a * (e + ae0 * 1)  # W==1 
high_ae_W := a * (e + ae0 * 2) # W==2

#IV X2
be0 := b*e             # (W==0)
low_be_W  := b *(e + be0 * 1)   #W==1
high_be_W := b *(e + be0 * 2)  #W==2

ce := c*e #only the mediation effect (W==0); not interested in conditional effect
de := d*e #only the mediation effect (W==0); not interested in conditional effect

Do *1 and *2  mean that I am using the 25th and the 75th percentiles? (as in probe2WayMC when doing a simple moderation?).

- Not sure:
            where to find the effect of point 1) above;
            if the mediation effects are represented by a*e, b*e, c*e, d*e (as I asked in point 2)
            if point 3) is correctly written in "#indirect and total effect conditional on W levels"


Thank you very much for any help you could give me!

Fran

modelA.png

Terrence Jorgensen

unread,
Jun 27, 2019, 4:55:12 PM6/27/19
to lavaan
1) the effect of the moderator variable W on the relationship between the M and y within the sem model (where the variables X1, X2, X3, X4 are also included). For example the relationship between X1 and y is mediated by M - and the relationship between M and y is moderated by W.

Check the output for the slope you labeled "mw".

2) the mediating effect of M on the relationship between each X (1, 2, 3, 4) and y;    

If that effect is moderated (i.e., if "mw" is significant), then there is not a single mediating effect.  You can define a mediating/indirect effect at any level of the moderator; that is called "probing the interaction".
 
3) how the above X1 and X2 mediation effects are also moderated by W            

You defined those simple indirect effects incorrectly.  You need to plug in values of the moderator W, and add the interaction term to the simple slope.  "mw" is the degree to which the effect of M on Y ("e") depends on W, e.g., how much the "e" slope changes as W increases by 1 unit.  

ae0 := a *  e         # W==0
ae1
:= a * (e +   mw) # W==1
ae2
:= a * (e + 2*mw) # W==2


4) if it is possibile to do all the steps above in one model specification.

Yes
 
For what concerns X3 and X4 instead, I am only interested in the mediation paths (not the conditional effects).

Well, the effect of M is moderated by W, so all the indirect effects via M are therefore also moderated by W.

ce := c*e #only the mediation effect (W==0); not interested in conditional effect
de := d*e #only the mediation effect (W==0); not interested in conditional effect

Too bad, that is still a conditional effect (i.e., on the condition that W == 0).

Do *1 and *2  mean that I am using the 25th and the 75th percentiles?

No, those are literally the values 1 and 2.  Look at the summary() of your W variable to see what those quantiles are, and you can plug in those values instead.

- Not sure:
            where to find the effect of point 1) above;

You labeled it "mw".  That label appears in your summary() output.

            if the mediation effects are represented by a*e, b*e, c*e, d*e (as I asked in point 2)

Yes, but only conditional on W == 0.

            if point 3) is correctly written in "#indirect and total effect conditional on W levels"

See my correction above.

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

Francesca Tirotto

unread,
Jul 1, 2019, 5:06:40 PM7/1/19
to lavaan
Thanks for this detailed feedback, really helpful!

I have one doubt about the computation of quantiles of W.

This is the modified model following your suggestions:

model<- “
    X1=~ x1.1 + x1.2 + x1.3 + x1.4
    X2=~ x2.5 + x2.6 + x2.7 + x2.8
    X3=~ x3.9 + x3.10 + x3.11
    X4=~ x4.12 + x4.13 + x4.14
    M=~  m.15 + m.16 + m.17  
    W=~  w.18 + w.19 + w.20
    MxW =~ m.15.w.18 + m.16.w.19 + m.17.w.20 ##computed with IndProd with match=T e doubleMC=T

    #regressions
    M ~ a*X1 + b*X2 + c*X3 + d*X4
    y ~ a1*X1 + b1*X2 + c1*X3 + d1*X4 + e*M + t*W+ mw*MxW

#conditional indirect effects
ae0 := a *  e              # W==0
ae1 := a * (e +   mw) # W==1 
ae2 := a * (e + 2*mw) # W==2

be0 := b *  e              # W==0
be1 := b * (e +   mw) # W==1 
be2 := b * (e + 2*mw) # W==2

ce0 := c *  e              # W==0
ce1 := c * (e +   mw) # W==1 
ce2 := c * (e + 2*mw) # W==2

de0 := d *  e              # W==0
de1 := d * (e +   mw) # W==1 
de2 := d * (e + 2*mw) # W==2

As you said, I can now replace 1 and 2 values with W quantiles in the conditional effects part.

However, I am not sure where to get the quantiles of W. W is a latent variable.

It is computed within the model using the three items w.18, w.19, w.20 present as columns in my dataframe. 
I am not sure on how to combine the items above to obtain a column W in the dataframe, to then do:

summary(df$W)

or

quantile(df$W, probs = c(.25, .75))

I suppose I can’t create W doing a mean by row of the three items.

If I am not mistaken, using .25 and .75 quantile values would then allow (within the model) to test the conditional indirect effect of X on Y through M, when W is 0, low or high. 


Thanks for any help you will provide.

Fran

Terrence Jorgensen

unread,
Jul 2, 2019, 4:58:56 AM7/2/19
to lavaan
I am not sure where to get the quantiles of W. W is a latent variable.

Look at its distribution:

lavInspect(fit, "cov.lv") # sqrt the variance to get a SD
lavInspect
(fit, "mean.lv")


A common practice is choose the M +/- 1 SD above/below the mean.

Francesca Tirotto

unread,
Jul 2, 2019, 7:44:18 PM7/2/19
to lavaan
A common practice is choose the M +/- 1 SD above/below the mean.

Does that mean that I should take M +/- 1 SD values fixing the factor loading of the first indicator to 1.0? (otherwise the variance would be always 1 using the argument std.lv=TRUE in the sem function). 

If the above procedure is correct, after computing this, would it be correct to run again the model with all standardised lvs but using those parameters from the non-standardised model? In other words, getting the M +/- 1 SD values from a model with the argument std.lv set to FALSE (the default option), to then implement the resulting values in a model with the argument std.lv set to TRUE. 

In may case I have SD =1.155 so my values are 1.155 and -1.155 as my mean is 0 by sem default. 

Hope my doubts make any sense for you! Thank you for your patience.

Fran

Terrence Jorgensen

unread,
Jul 3, 2019, 12:33:49 PM7/3/19
to lavaan
Does that mean that I should take M +/- 1 SD values fixing the factor loading of the first indicator to 1.0? (otherwise the variance would be always 1 using the argument std.lv=TRUE in the sem function). 

It sounds like you understand enough not to need to have posted the last question.  Using std.lv=TRUE, W has M=0 and SD=1, so just pick values from that distribution at which to probe the interaction.

Francesca Tirotto

unread,
Jul 4, 2019, 8:06:43 PM7/4/19
to lavaan
Using std.lv=TRUE, W has M=0 and SD=1, so just pick values from that distribution at which to probe the interaction.

I am really sorry for this additional email. I don’t actually think I have completely understood it. 

When I use 1 and -1 (with std.lv=TRUE) within my model, does 1 represent high level of the moderator? How does Lavaan manage to probe the interaction if I multiply mw by 1? Any number multiplied by one returns the same number.

It seems that

ae1 := a * (e +  mw)   OR    ae1:= a * (e +  mw * 1)

is asking to consider the whole distribution of the moderator mw and not only the values 1 SD above the mean. Where did I get lost? 

Thank you very much,

Francesca

Nickname

unread,
Jul 5, 2019, 11:43:50 AM7/5/19
to lavaan
Francesca,
  The case of W = 1 is a special case in which the equation simplifies.  However, to probe an interaction you do not want to compute just one case.  You want to compute several cases, e.g., W = <-1, 0, 1> and then compare them.  You will obtain different values of ae for each of these values of W.  Aiken & West (1991) and Cohen, Cohen, West & Aiken (2003) provide detailed descriptions of procedures for ad hoc probing of interactions with examples.  These are described in the context of OLS regression, but apply to your analysis.

Aiken, L. S. & West, S. G. (1991).  Multiple regression:  Testing and interpreting interactions.  Newbury Park, CA:  Sage Publications.
Cohen, J., Cohen, P., West, S.G., & Aiken, L. S. (2003).  Applied multiple regression/correlation analysis for the behavioral sciences (3rd ed.).  Mahwah, NJ:  Erlbaum.

Keith
------------------------
Keith A. Markus
John Jay College of Criminal Justice, CUNY
http://jjcweb.jjay.cuny.edu/kmarkus
Frontiers of Test Validity Theory: Measurement, Causation and Meaning.
http://www.routledge.com/books/details/9781841692203/

Francesca Tirotto

unread,
Jul 9, 2019, 8:37:29 AM7/9/19
to lavaan
Thank you very much, Keith! 
Reply all
Reply to author
Forward
0 new messages