R CFA Issue: Non-Positive Definite Variance-Covariance Matrix for Estimated Parameters

Help with Confirmatory Factor Analysis in R

I’m stuck with a CFA problem in R. I’m checking a psychometric scale (5-point Likert, 6 factors, 66 items, N = 200). My code looks okay, but I’m getting a weird warning.

model <- '
  Factor1 =~ Item1 + Item2 + Item3 + Item4
  Factor2 =~ Item5 + Item6 + Item7 + Item8 + Item9
  # ... more factors and items
'

fit <- cfa(model, data = mydata, ordered = c('Item1', 'Item2', 'Item3', 'Item4', 'Item5'), std.lv = TRUE)

The warning indicates the vcov matrix isn’t positive definite (with a negative eigenvalue), which might imply the model isn’t identified. I checked for Heywood cases and found no negative variances or covariances exceeding 1.

Any advice on how to move forward or adjust my model would be greatly appreciated!

I’ve encountered similar issues with CFA models before. One approach that often helps is to investigate the correlation matrix of your items. Look for extremely high correlations (>0.9) between items, as these can lead to model identification problems.

Another strategy is to run an exploratory factor analysis (EFA) first. This can give you insights into the underlying structure of your data and might suggest a more parsimonious model. You could then use this information to refine your CFA model.

Lastly, consider increasing your sample size if possible. With 66 items and 6 factors, 200 participants might not provide enough statistical power. A general rule of thumb is to have at least 10 participants per estimated parameter in your model.

Remember, model fit is an iterative process. Don’t be discouraged if it takes several attempts to find a well-fitting model.

Hey there, ExploringForest! :deciduous_tree:

Wow, that’s quite the puzzle you’ve got there with your CFA! I’ve been down this road before, and it can be pretty frustrating. Have you considered that maybe your model is a bit too complex for the data you have?

With 66 items and only 200 participants, you might be asking a lot from your analysis. Have you thought about maybe running some item analysis first? You could look at item-total correlations or even do an exploratory factor analysis to see if all those items are really pulling their weight.

Oh, and here’s a wild thought - what if you tried a bifactor model? Sometimes when you have a bunch of factors like that, there might be a general factor lurking underneath it all. It could help simplify things and maybe solve that pesky non-positive definite matrix issue.

Just brainstorming here, but what do you think? Have you tried any of these approaches yet? I’d be super curious to hear what else you’ve attempted or if you’ve spotted any patterns in your data that might give us a clue!

hey, maybe try simplifying your model. with only 200 participants, i reckon your model needs trimming.

you might combine items or drop low-loading ones and check for multicollinearity. good luck!