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!