# Checking error covariances between indicator variables in sem/cfa

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
wisc4.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
summary(wisc4.fit,standardized=TRUE)
parameterEstimates(wisc4.fit,standardized=TRUE)

#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!

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).