Specifying Correlated Errors

4 replies [Last post]
IanCero's picture
Offline
Joined: 02/09/2012

Hello all,

Preemptive apologies for the rudimentary question, but I'm having trouble specifying correlated errors for a confirmatory factor model. It is possible that I am specifying them wrong, or that there is some problem with my model (I'm hoping it is the former). Currently, I am using a path specification, which indicates a double-headed arrow between my first and fifth indicator:

#-------------------------
mxPath(from = c("ac1"),
to = c("ac5"),
arrows = 2,
free = T,
values = 1,
labels = ("cov15"))
#-------------------------

But when I run the model, I get this message:

"Error: The job for model 'The AC Model' exited abnormally with the error message: Backing out of parameter space region where expected covariance is non-positive-definite."

My Questions:

1. I looked in the user guide, but can't find the answer - am I specifying correlated errors correctly?

2. What does this error message mean? Can I salvage this model?

Thank you in advance for any help you can give. I'm between a rock and a hard place because the correlated errors are an important part of my thesis, so they need to be in there somehow, but I can't seem to get the model to run.

Ian

PS - syntax for the whole model is attached, if you are interested.

AttachmentSize
Correlated Error Syntax.txt852 bytes
Ryne's picture
Offline
Joined: 07/31/2009
It's a problem of starting

It's a problem of starting values. Pick a starting value for the residual covariance that's less than 1 and you'll be fine.

You've specified a model with every single path equal to 1. That means that the variance of any variable is 2 (residual variance of 1 and a variance due to the common factor is path^2 times the factor variance, which is also 1. 1^2 * 1 + 1 = 2). All of your covariances are 1 as well, as the covariance between any pair of variables is path * factor variance * path, which is still 1. So your initial expected covariance matrix is a matrix where all of the diagonal elements are 2 and all of the off-diagonal are 1:

2 1 1 ... 1
1 2 1 ... 1
1 1 2 ....1
....
1 1 1 ... 2

When you add the residual covariance of 1, you get a model-implied covariance between variables ac1 and ac5 of 2: residual covariance (1) + covariance due to common factor (1). This makes those variables perfectly correlated, and the expected covariance matrix non-invertible.

IanCero's picture
Offline
Joined: 02/09/2012
Thanks!

You were right, the model was fine as soon as I started the covariance at .90 instead of 1.0.

However, when I specified a covariance on another sub-scale (the model is the same as the one above, but the error covariance is between items 3 & 5, rather than 1 & 5), I get the following message:

"In model 'The AC Model' NPSOL returned a non-zero status code 1. The final iterate satisfies the optimality conditions to the accuracy requested, but the sequence of iterates has not yet converged. NPSOL was terminated because no further improvement could be made in the merit function (Mx status GREEN). "

This looks ominous in the sense that it is a warning message, but it also seems okay, given that the final iterate satisfies the "optimality conditions." I have a relatively small sample (N=106), so it could be something with my data, but are my estimates and fit indices still interpretable if I get this message? Is there a way to increase the number of iterations so that the model has more chances to converge?

Ryne's picture
Offline
Joined: 07/31/2009
I've given long-winded

I've given long-winded descriptions of the various statuses elsewhere on the boards, but here's the quick version. There are two criteria for convergence: optimality, which is that the first derivative of the likelihood function is zero, and what NPSOL calls convergence, which is that the expected step size is close enough to zero. Status 1 means that NPSOL found what is generally defined as a minimum, but expected to take a step anyway. It tried to take steps, but fit didn't get any better (probably because it was already at a minimum). The most common cause of status 1's is that your starting values were too good; that is, the optimizer expects to take a bunch of steps, but started out much closer to a minimum that it usually does.

You're very likely at the right answer. If you're worried, it never hurts to pick a different set of starting values and see if you get the same answer.

IanCero's picture
Offline
Joined: 02/09/2012
Thanks again!

Ryne,

Thanks again for the speedy response! Again, you were right. When the factor loadings on the indicator were changed to .80 (instead of 1.0), the message went away.

Ian

PS - I should take a second to say that I really appreciate your help with this program. I'm new to both SEM and R. Additionally, I am on a relatively tight timeline and, were it not for your help, I don't think I could have completed this project on time. So, thank you. You have caused a meaningful amount of stress reduction in my life.