1
$\begingroup$

I'm confused about my degrees of freedom (df) when comparing 2 CFA models using lavaan versus calculating them by hand.

I have 8 observed items/variables loading on 1 factor first:

    library(lavaan)        
    model1 <-'
    oneFactor =~ item1 + item2 + item3 + item4 + item5 + item6 + item7 + item8
    '
    fit1 <- cfa(model1, data=data)
    summary(fit1)

Lavaan states that the model has 20 dfs, which my calculation by hand also gives me. That is:

Pieces of information = $\frac{p(p-1)}{2}$; where p = number of items.

For 8 items: $\frac{8*(8+1)}{2}$ = 36

Free parameters:

7 loadings (i.e., one loading is fixed to 1 of the 8 observed items) + 8 variances (one for each observed items) + 1 variance (for the latent factor) = 16

36 – 16 = 20dfs

However, in the 2-factor model I get a mismatch:

    model2 <-'
    oneFactor =~ item1 + item2 + item3 + item4
    twoFactor =~ item5 + item6 + item7 + item8
    '
    fit2 <- cfa(model2, data=data)
    summary(fit2)

lavaan now states the model has 19 dfs; but my hand calculation gives me 20.

Still 8 items:

$\frac{8*(8+1)}{2}$ = 36

6 loadings (i.e., 2 items (one for each latent factor) are set to 1) + 8 variances (one for each observed item) + 2 variances (one for each latent construct) = 16

36 - 16 = 20dfs whereas lavaan's cfa gives me 19 dfs.

I will be very grateful if someone can let me know how I am thinking wrong about this. Thanks!

$\endgroup$
0
0
$\begingroup$

What I forgot was to include the covariance between the two latent variables, i.e., : 6 loadings (i.e., 2 items (one for each latent factor) are set to 1) + 8 variances (one for each observed item) + 2 variances (one for each latent construct) + 1 covariarnce (between the two latent variables) = 17. This gives 36-17 = 19, which is what lavaan presented!

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.