Wed, 05/25/2011 - 13:55

Hello,

I took a quick look through the documentation and couldn't find anything on running multilevel CFA/EFA in openmx. Specifically, I'm interested in running a two level CFA where observations are nested within participants. I believe that Muthen (1994) reports a similar model to the one that I am interested in running. Also, is there any documentation on running multilevel EFA? I'm interested in running something similar to Vijver (2002). Thanks!

Muthén, B. O. (1994). Multilevel covariance structure analysis. Sociological Methods & Research, 22, 376-398.

van de Vijver, F.J.R., & Poortinga, Y.H. (2002). Structural equivalence in multilevel research. Journal of Cross-Cultural Psychology, 33, 141–156.

Multilevel structural equation models are still under development for a future OpenMx release. I'll look over the Muthen paper and see if we can specify some version of multilevel CFA.

While longitudinal data is inherently clustered/multilevel, a lot of longitudinal models can be specified in a "wide" format, where each clustered set of observations are on the same row. Can you tell us more about the model you're trying to fit to see if we can help?

Hey Ryne,

The model is pretty simple. It is a 3 factor model using 16-18 indicators. I will be testing this model against 2 factor model. The data are longitudinal and participants range from 1 to 3 assessments. We are more interested in controlling for clustered observations, rather than interpreting the results longitudinally. I'm under the impression that within the EFA portion of these analyses it will be less important to control for clustering because I am not estimating standard errors-- confirmation on this would be appreciated!

Sorry this took me a day to get back to you.

There is a long long history of spacing longitudinal data in wide format to make rows independently and identically distributed (iid) for the purposes of confirmatory model estimation. To run in OpenMx, set up your data so that it is 48-54 variables wide, with the first 16-18 being the time 1 variables, the next 16-18 as time 2 and the last 16-18 as time 3. Make equality constraints such that whatever structure you apply to the time 1 variables you also apply to the time 2 and time 3 variables. Congrats! You've solved your clustering issue. Let whatever latent variables you have at each time point vary freely with latent variables at all others (you'll typically not allow residual covariances, but constraint residual variances to equality over time).

EFA is a little different issue. Wide format data won't work, as you can't make the required equality constraints. You're correct in your assessment of the impact of clustering on standard errors; if you have complete data (with exactly 3 observations per person), that might be your only problem. If you have any missing data, you're also likely to get some additional bias in parameter values. I hereby refuse to confirm your EFA suspicion, though I'll do some reading on clustered EFA if I have time. Feel free to share any articles you find on the subject.

Hey Ryne,

Thanks for your suggestions. I now understand the "wide" format you suggested.

With regards to the EFA, I think I may have found a solution, although I'm still figuring out how to do this in OpenMX. I'd like your thoughts on this technique as well as any advice for getting this to work in OpenMX. I'm using MPLUS to estimate a multilevel covariance structure model by specifying the cluster information. From this model I extract the sample pooled-within covariance matrix (scaled to correlation matrix). I then use this matrix to conduct my EFA using standard procedures where sample size is N-C, C being the number of clusters and N being the total number of observations. I'm aware that I can use OpenMX for the second step, but I'd like any information on conducting the first step in OpenMX.

Sam

No idea whether this will help but go to your local CRAN mirror, hit TaskViews in the top left and then hit Psychometrics. There are certainly any possibilities listed.

OpenMx isn't designed with exploratory factor analysis in mind. We don't have any default engines for either exploratory factor extraction or rotation. There are EFA tools in R, specifically factanal() and maybe others I'm not familiar with. This isn't to say that you couldn't define the necessary algebras yourself and fit them with OpenMx, its just that no one has done it yet.

Your proposal may well be what Mplus is doing when it fits a multilevel EFA, though I'm not familiar enough with that method to comment in great detail. You may be proposing random means for each cluster, and calculating your observed covariance matrix in terms of deviations around those means, or you may be incorporating the variance in cluster means in some way.