Fixing correlation between latent variables to 1

456 views
Skip to first unread message

Una

unread,
May 4, 2014, 4:47:25 PM5/4/14
to lav...@googlegroups.com
Hello!

I'm relatively new with structural modeling, and especially with lavaan and R. Is there a way to fix a correlation between exogenous latent variables to 1? I am aware I could just define a new factor encompassing the previous ones, but I would like to explore the issue of equivalent models this way. I have tried defining it with the help of equal() and the relation of correlation and covariance:
emp <- 'af =~ 1*E01+E03+E05+E09+E11+E13+E15+E17+E19+E21
cf =~ 1*E02+E04+E06+E08+E10+E14+E16+E18+E20+E22
rc =~ 1*E03+E04+E11+E18+E20+E22
af~~1*sqrt(equal("af~~af")*equal("cf~~cf"))*cf
cf~~1*sqrt(equal("rc~~rc")*equal("cf~~cf"))*rc'

But this only resulted in covariance between af~~cf and cf~~rc being equal. I have not found another way to do it, could you please advise me why does this not function and/or suggest another way to accomplish this?

Thank you very much,

Una

Edward Rigdon

unread,
May 4, 2014, 5:03:43 PM5/4/14
to lav...@googlegroups.com
A correlation implies that the two variables are standardized.  That standardization will generally be inconsistent with scaling the factors by fixing a loading to 1.  But you can standardize the factors in several ways, including:

NA the first loading on each factor, then
Fix the variance of each factor to 1, then
Fix the covariance between factors to 1

Ed Rigdon

Sent from my iPad
--
You received this message because you are subscribed to the Google Groups "lavaan" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lavaan+un...@googlegroups.com.
To post to this group, send email to lav...@googlegroups.com.
Visit this group at http://groups.google.com/group/lavaan.
For more options, visit https://groups.google.com/d/optout.

yrosseel

unread,
May 7, 2014, 11:35:45 AM5/7/14
to lav...@googlegroups.com
On 05/04/2014 10:47 PM, Una wrote:
> Hello!
>
> I'm relatively new with structural modeling, and especially with lavaan
> and R. Is there a way to fix a correlation between exogenous latent
> variables to 1? I am aware I could just define a new factor encompassing
> the previous ones, but I would like to explore the issue of equivalent
> models this way. I have tried defining it with the help of equal() and
> the relation of correlation and covariance:
> emp <- 'af =~ 1*E01+E03+E05+E09+E11+E13+E15+E17+E19+E21
> cf =~ 1*E02+E04+E06+E08+E10+E14+E16+E18+E20+E22
> rc =~ 1*E03+E04+E11+E18+E20+E22
> af~~1*sqrt(equal("af~~af")*equal("cf~~cf"))*cf
> cf~~1*sqrt(equal("rc~~rc")*equal("cf~~cf"))*rc'

Try this:


af =~ NA*E01+E03+E05+E09+E11+E13+E15+E17+E19+E21
cf =~ NA*E02+E04+E06+E08+E10+E14+E16+E18+E20+E22
rc =~ NA*E03+E04+E11+E18+E20+E22

# standardized latent variables
af ~~ 1*af
cf ~~ 1*cf
rc ~~ 1*rc

# force unit correlations
af ~~ 1*cf
af ~~ 1*rc
cf ~~ 1*rc

The fit of this model should be identical to a model where you have only
a single factor.

Yves



Una

unread,
May 19, 2014, 6:28:49 AM5/19/14
to lav...@googlegroups.com
Thank you very much for the quick reply and suggestions! 

Sorry for the slow reply. I was hoping for a way to fix the correlation without having to fix the variance of the latent variables, because I would like to test their significance. I have now tried to define a general factor (as a first order factor) together with the orthogonal specific factors, that seems to work better.

Una






--
You received this message because you are subscribed to a topic in the Google Groups "lavaan" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/lavaan/93uAGxwRZJk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to lavaan+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages