Target rotation in lavaan

566 views
Skip to first unread message

Abdullah

unread,
Dec 22, 2022, 11:59:47 AM12/22/22
to lavaan
Hi,
There is an option in lavaan to use EFA blocks as explained here https://lavaan.ugent.be/tutorial/efa.html
However, there is an option (estimation) within EFA (or ESEM) called target rotation which allows the user to target the factor loadings to specific values (for example 0). The tutorial page only tapped on that function but did not explain the code needed or how to use target  rotation
consider the following two factors solution

efa("efa1")*f1=~H1+H2+H3+H4+H5+H6+O1+O2+O3+O4+O5+O6

efa("efa1")*f2=~O1+O2+O3+O4+O5+O6+H1+H2+H3+H4+H5+H6
How can I use target rotation in this syntax and how can I target some factor loadings to be close to zero.


Thanks in advanced.

Yves Rosseel

unread,
Dec 30, 2022, 11:37:06 AM12/30/22
to lav...@googlegroups.com

> How can I use target rotation in this syntax and how can I target some
> factor loadings to be close to zero.

There is indeed no documentation yet.

Note that in the github version of lavaan (0.6-13) there is an efa()
function that will simplify using efa.

To use target rotation, you can create a binary (0/1) 'target' matrix,
for example (for 12 indicators and 4 factors):

TARGET <- matrix(0, 12, 4)
TARGET[1:3, 1] <- 1
TARGET[4:6, 2] <- 1
TARGET[7:9, 3] <- 1
TARGET[10:12, 4] <- 1

which you can then use in the rotation.args= argument. If you are using
the sem() function, it would be something like

fit <- sem(model, data = Data, rotation = "target",
rotation.args = list(target = TARGET))

If you are using the (new) efa() function, it would be something like

fit2 <- efa(data = Data, nfactors = 4L, rotation = "target",
rotation.args = list(target = TARGET))

Yves.
Reply all
Reply to author
Forward
0 new messages