Unstandardized ML factor scores

Posted on
No user picture. dadrivr Joined: 01/19/2010
I'd like to obtain unstandardized factor scores for a single factor CFA, with the factor scores on the same metric (approximately the same mean, SD, range, distribution) as the indicators. There is missingness in the data, so ML factor scores are preferred. How can I do this in OpenMX? I read Appendix A from Estabrook and Neale's (2013) paper on estimating ML factor scores in OpenMx:
http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3773873/

Does this approach calculate standardized or unstandardized factor scores? If standardized, how can I generate unstandardized factor scores with ML instead? Note that I don't want to transform standardized factor scores to unstandardized ones because the distributions of my indicators are non-normal (i.e., the normal distribution of standardized factor scores cannot be easily transformed to the raw metric of my indicators). In other words, I'd like to estimate unstandardized factor scores on the raw metric of the indicators without first estimating them on a standardized metric.

Replied on Tue, 06/16/2015 - 00:41
Picture of user. mhunter Joined: 07/31/2009

I literally just checked in a function to get factor scores yesterday.

https://github.com/OpenMx/OpenMx/commit/fa457b305280370dc5faedb012609061700f095a

As far as the scale, the factor scores will have whatever scale you set for the latent variables. If you identify the model by having fixed zero latent mean and fixed unit latent variance, then the factor scores are in z-score units. If you identify the model by setting the first factor loading to one, then the the factor scores are in the units of the first indicator.

Replied on Tue, 06/16/2015 - 09:58
No user picture. dadrivr Joined: 01/19/2010

In reply to by mhunter

Great timing! That looks like it's just for LISREL model specification. Would it be possible to allow RAM-type model specification, as well? Thanks, and looking forward to the next release!
Replied on Tue, 06/16/2015 - 10:18
Picture of user. mhunter Joined: 07/31/2009

In reply to by dadrivr

The RAM specification for factor scores is planned but not yet implemented. If it's a type='RAM' model (i.e. a path model), then you can turn it into a LISREL model by changing it to type='LISREL' and letting OpenMx know which variables are exogenous or endogenous. See the example starting here

https://github.com/OpenMx/OpenMx/blob/fa457b305280370dc5faedb012609061700f095a/inst/models/nightly/FactorScores.R#L21

for a LISREL path model with factor scores.

Replied on Wed, 06/24/2015 - 17:16
Picture of user. rabil Joined: 01/14/2010

In reply to by mhunter

When I run your function:

> r1 <- mxFactorScores(factorRun, 'ML')
Error in mxFactorScores(factorRun, "ML") :
could not find function "mxAlgebraFromString"

I cannot find any information on "mxAlgebraFromString". It doesn't seem to be available in the latest version of OpenMx.

Replied on Wed, 06/24/2015 - 19:32
Picture of user. jpritikin Joined: 05/23/2012

Can you install following the instructions at the bottom of this page, https://github.com/OpenMx/OpenMx ?