CFA, invariance, correlated uniqueness and df

87 views
Skip to first unread message

19lucy...@gmail.com

unread,
Feb 20, 2019, 10:01:47 AM2/20/19
to lavaan
Hi everyone!

I am running a CFA and testing for invariance using lavaan.
My model consists of three subscales, one of 3 items and two of two items each. The scales have been measured twice.
I am new to R and lavaan and therefore I did not used the commands offered by lavaan  to understand what actually is going on.
So far as I know there are two ways "measuring" the scale of the LV:
Either by fixing the mean=0 and variance=1 of the LV
or by setting the first items' factor loadings to 1 and the intercept to 0.
Therefore I have two different models:


Model1 <- '
LV1_1 =~ NA*Item1+ alambda21*Item2 + alambda31*Item 3
LV1_2 =~ NA*Item1+ alambda22*Item2 + alambda32*Item3
LV2_1 =~ NA*Item4 + blambda21*Item5
LV2_2 =~ NA*Item4* blambda22*Item5
LV3_1 =~ NA*Item6 + clambda21*Item7
LV3_2 =~ NA*Item6 + clambda22*Item7

#autocorrelation#
Item1_1~~Item1_2
Item2_1~~Item2_2
Item3_1~~Item3_2
Item4_1~~Item4_2
Item5_1~~Item5_2
Item6_1~~Item6_2
Item7_1~~Item7_2

#Variance LV
LV1_1~~1*LV1_1
LV1_2~~1*LV1_2
LV2_1~~1*LV2_1
LV2_2~~1*LV2_2
LV3_1~~1*LV3_1
LV3_2~~1*LV3_2

#Variance means
LV1_1 ~ 0*1
LV1_2 ~ 0*1
LV2_1 ~ 0*1
LV2_2 ~0*1
LV3_1~0*1
LV3_2~0*1
'
Model1.fit <- sem(Model1,data = data1_2, estimator = "mlr", missing = "fiml")

Model2 <- '
LV1_1 =~ 1*Item1+ alambda21*Item2 + alambda31*Item 3
LV1_2 =~ 1*Item1+ alambda22*Item2 + alambda32*Item3
LV2_1 =~ 1*Item4 + blambda21*Item5
LV2_2 =~ 1*Item4* blambda22*Item5
LV3_1 =~ 1*Item6 + clambda21*Item7
LV3_2 =~ 1*Item6 + clambda22*Item7

#autocorrelation#
Item1_1~~Item1_2
Item2_1~~Item2_2
Item3_1~~Item3_2
Item4_1~~Item4_2
Item5_1~~Item5_2
Item6_1~~Item6_2
Item7_1~~Item7_2

#Intercepts#
Item1_1~ 0*1
Item2_1~ 0*1
Item3_1~ 0*1
Item4_1~ 0*1
Item5_1~ 0*1
Item6_1~ 0*1
Item7_1~ 0*1

#Variance LV
LV1_1~~1*LV1_1
LV1_2~~1*LV1_2
LV2_1~~1*LV2_1
LV2_2~~1*LV2_2
LV3_1~~1*LV3_1
LV3_2~~1*LV3_2

#Variance means
LV1_1 ~ 0*1
LV1_2 ~ 0*1
LV2_1 ~ 0*1
LV2_2 ~0*1
LV3_1~0*1
LV3_2~0*1
'
Model2.fit <- sem(Model2,data = data1_2, estimator = "mlr", missing = "fiml")

My questions are the following ones:
Do I need to estimate the covariances between the LV's and using the command " orthogonal=F"? It's working without problems however I wonder if it's important for future measurements.

My second questions is: When I don't calculate the correlated uniqueness, why don't my dfs change in this model?
Because when I measure weak, strong and strict invariance there is a difference in the dfs, depending on whether I calculated correlated uniqueness or not.

Moreover measuring the other stages of invariance produces different dfs for the two different models.
For example for weak invariance:
62 when fixing the mean and variance and 59 when fixing the first factor loadings to 1.
And for strict invariance:
69 for model 1 and 63 for model 2.

When I look at the scales separately the differences are even bigger.
And what I really don't understand:
the df's differ between the LV2 and Lv3 scale even both consists of two items.

I am really happy about any comment or idea that can help me understanding what's going on.

Thank you!

Lucy

Terrence Jorgensen

unread,
Feb 21, 2019, 3:42:13 PM2/21/19
to lavaan
Do I need to estimate the covariances between the LV's and using the command " orthogonal=F"?

No, that is the default

lavOptions("orthogonal")


When I don't calculate the correlated uniqueness, why don't my dfs change in this model?
Because when I measure weak, strong and strict invariance there is a difference in the dfs, depending on whether I calculated correlated uniqueness or not.

It is unclear what model(s) you are talking about comparing.  But some mistakes in your syntax could lead to unexpected results.  When you fixed the first intercepts to 0:
  • you only did so for Time 1, not Time 2
  • you forgot to free the latent means (confusingly labeled "variance means" in the syntax)
Likewise, when you fixed the first loadings to 1, you forgot to free the latent variances.

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

Reply all
Reply to author
Forward
0 new messages