I'm learning SEM/CFA, and am currently following Beaujean's (2014) book on using lavaan. In the chapter where he talked about CFA and the number of indicator variables to have to ensure the model would be just/over-identified, he gave some rules of thumb. For instance, "The LV (latent variable) has 3 indicator variables, and the error variances do not covary."

My question in a gist: how do I check this? After running the model and I was able to get the error covariance matrix (following the steps given in the book), but I'm not sure how to interpret it. Below I include the example that Beaujean used (these codes are from his book)

# convert vector of correlations into matrix
   wisc4.cor <-  lower2full(c(1,0.72,1,0.64,0.63,1,0.51,0.48,0.37,1,0.37,0.38,0.38,0.38,1))
# enter the SDs
   wisc4.sd <- c(3.01 , 3.03 , 2.99 , 2.89 , 2.98)
# name the variables
   colnames(wisc4.cor) <- rownames(wisc4.cor) <- c("Information", "Similarities", "Word.Reasoning", "Matrix.Reasoning", "Picture.Concepts")
   names(wisc4.sd) <-  c("Information", "Similarities", "Word.Reasoning", "Matrix.Reasoning", "Picture.Concepts")
# convert correlations and SDs to covarainces
   wisc4.cov <- cor2cov(wisc4.cor,wisc4.sd)
# specify single factor model
   g =~ a*Information + b*Similarities + c*Word.Reasoning + d*Matrix.Reasoning + e*Picture.Concepts
# fit model
   wisc4.fit <- cfa(model=wisc4.model, sample.cov=wisc4.cov, sample.nobs=550,  std.lv=FALSE)
# examine parameter estimates

#obtain the model-implied covariances of the indicator variables
   inspect(wisc4.fit, "cov.ov")

And this is what I got:

                 Infrmt Smlrts Wrd.Rs Mtrx.R Pctr.C
Information      9.044                             
Similarities     6.551  9.164                      
Word.Reasoning   5.716  5.633  8.924               
Matrix.Reasoning 4.303  4.241  3.700  8.337        
Picture.Concepts 3.606  3.553  3.100  2.334  8.864 

How do I interpret this? Many thanks!


1 Answer 1


These values are the model-implied covariances among the observed variables. These can be derived using path-tracing rules on the resulting coefficient and variance estimates. The goal of SEM (and CFA) is for the model-implied covariance matrix to be as close as possible to the observed covariance matrix; this means the relationships among the observed variables are well explained by your model. Indeed, the observed covariance matrix wisc4.cov is not too far off from inspect(wisc4.fit, "cov.ov"), though it is far enough away to yield a significant chi-square statistic (indicating some lack of good fit).

This is a separate issue from the identification of the model, which doesn't usually depend on the covariance matrix of the observed variables. There are many rules of identification, which I know are covered in Bollen (1989). In CFA with one latent variable, you can usually tell whether a model is identified by whether there are as many or more observed variances and covariances as there are variances, covariances, and coefficients to estimate. There are 15 unique elements of the observed variance-covariance matrix (as displayed in inspect(wisc4.fit, "cov.ov")), and you are estimating 10 parameters (as displayed in parameterEstimates(wisc4.fit), so your model is identified. You could add a few residual covariances among the indicators and still have an identified model (I found that adding two was sufficient to yield a nonsignificant chi-square).

  • $\begingroup$ Thanks for your response. But this doesn't answer my question on how I can check whether the error variances of my indicator variables (observed variables) covary or not. I do get that usually if you add a few residual covariances can improve model fit (but this is heavily frowned upon if it's not backed by theory). The reason why I want to check is not so much my worry about identification (although that is one issue as well), but more so that if they do covary and there's no good theoretical reason for it, I can go back to my conceptual model and adjust it. $\endgroup$ Mar 31, 2019 at 13:26
  • $\begingroup$ They will covary only if you model their covariances, which you have not done. Their covariance is 0 as required by your model specification. To see if model fit would improve by estimating the covariance (instead of setting it to 0), you can see the modification indices the correspond to the covariances of interest. $\endgroup$
    – Noah
    Apr 1, 2019 at 0:45
  • $\begingroup$ ah, I understand now. My confusion is due to a misread of the text. I think I wouldn't be confused if it was written "The LV (latent variable) has 3 indicator variables, and the error variances [are not set to] covary." thanks $\endgroup$ Apr 1, 2019 at 2:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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