Hi,

Snuffling around in MxPPMLR I see

# IN DEVELOPMENT

# Fake Latents

# There are multiple ways to specify the error variance terms. There is the

# usual, direct way of allowing the term in the S matrix to be free, but it

# can also be specified using latent variables.

#

# This segment adjusts the model so that all error variance is specified using

# only the S matrix, without any latent variables

This raised a question for me.

I guess this is designed to do change this:

Into this:

But how should one implement this:?

Attachment | Size |
---|---|

fake1.png | 16.12 KB |

manifests.png | 6.99 KB |

correlated fakes.png | 13.94 KB |

This would be accomplished by drawing the covariance path directly between the manifest variables. The two systems in the attached pdf produce identical model-implied covariance matrices for the observed variables.

Hope this helps!

I note that the specification with latent variables is easier to constrain to optimize only inside positive definite regions. Bounding the correlation path to lie between say -.999 and .999 in the latent variable version will stop the optimizer from trying values with a non-positive-definite covariance matrix (well, if the paths from the latent to observed variables are bounded to be greater than zero). OpenMx's default optimizer has ways of backing out of such regions, but they're not infallible, so the "returned an infinite value" error could result.

To achieve similar "restricted air space" in the observed-variables-only model one might think that a non-linear constraint would work, but in fact non-linear constraints (mxConstraint()) are not guaranteed to be satisfied throughout optimization - only at the solution.

So to sum up, the version with latent variables is more stable -- and this may be why some other packages do not allow users to specify the observed-variables-only version. Given decent starting values, both should work just fine.