Skip to first unread message

Jun 13, 2018, 10:42:34 AM6/13/18

to lavaan

Hey laavaan-Group,

I have a question concerning the specification of equality constraints for the first indicators in CFA models. Assume that we have a two-dimensional CFA model

f1 =~ V1+V2+V3+V4

f2 =~ V5+V6+V7+V8

Typically, lavaan defines the loading of the first indicator to be 1 and estimates the variance of the factors. However, I would like to estimate the loadings of the first indcators (V1 and V5, while setting the variance of the factors to 1) with the constraint that they are equal. Thus, I would like to estimate a model such as this

f1 =~ l1*NA*V1+V2+V3+V4

f2 =~ l1*NA*V5+V6+V7+V8

f1~~1*f1

f2~~1*f2

or something like this

f1 =~ l1*NA*V1+V2+V3+V4

f2 =~ l2*NA*V5+V6+V7+V8

f1~~1*f1

f2~~1*f2

l1 == l2

However, both definitions do not work. Is there another way to say lavaan that it should estimate the factor loadings of the first indicators of two factors and constraining them to be equal?

Thanks for any help!

Felix

Jun 14, 2018, 4:24:43 AM6/14/18

to lavaan

Typically, lavaan defines the loading of the first indicator to be 1 and estimates the variance of the factors.

Using the sem() or cfa() function, the default argument std.lv=FALSE does that. But you can switch it to std.lv=TRUE to standardize the latent variable (setting those variances to 1) and freely estimate the first loadings. Or if you use the bare-bones lavaan() function, no parameters are set to anything but zero by default, so you would need to either specify every parameter in your model syntax, or turn some defaults on (see the ?lavOptions help page for auto* arguments). If you want to see which defaults the sem() or cfa() wrappers turn on, you can see what call was actually used:

`fit <- cfa(...)`

fit@call

However, I would like to estimate the loadings of the first indcators (V1 and V5, while setting the variance of the factors to 1) with the constraint that they are equal. Thus, I would like to estimate a model such as thisf1 =~ l1*NA*V1+V2+V3+V4f2 =~ l1*NA*V5+V6+V7+V8f1~~1*f1f2~~1*f2or something like thisf1 =~ l1*NA*V1+V2+V3+V4f2 =~ l2*NA*V5+V6+V7+V8f1~~1*f1f2~~1*f2l1 == l2However, both definitions do not work. Is there another way to say lavaan that it should estimate the factor loadings of the first indicators of two factors and constraining them to be equal?

You can't use multiple operators on a parameter at the same time, but you can add another operator on the same line (although it superficially looks like you would be specifying the same parameter twice, lavaan simply applies both operations to the same parameter). For example, first tell lavaan to freely estimate the parameter, then apply a label to that parameter:

`f1 =~ NA*V1 + l1*V1 + V2 + V3 + V4`

f2 =~ NA*V5 + l1*V5 + V6 + V7 + V8

Anything in the model syntax will override arguments like std.lv= or any auto*= arguments.

Terrence D. Jorgensen

Postdoctoral Researcher, Methods and Statistics

Research Institute for Child Development and Education, the University of Amsterdam

UvA web page: http://www.uva.nl/profile/t.d.jorgensen

Jun 14, 2018, 8:00:48 AM6/14/18

to lavaan

Thanks Terrence, it worked.

Best

FelixReply all

Reply to author

Forward

0 new messages

Search

Clear search

Close search

Google apps

Main menu