

BetweenLevel Sample Stats for Cluste... 

Message/Author 

Jason Major posted on Saturday, February 06, 2010  7:35 am



Hi, I am looking to get summary data on which to do EFA, taking into account the nonindependence of several twin pairs in my sample. I'm used TYPE = TWOLEVEL so I can get the betweenlevel (betweencluster) correlation matrix. First, am I right that this is the correct correlation matrix to take into account nonindependence of the twins in subsequent analyses? The sample is large with many continuous dependent variables (40+), which apparently has caused my TYPE = TWOLEVEL model to fail to converge with maximum likelihood estimation (MLR); I do however get the sample statistics I need with weighted least squares estimation (WLSM). Would there be any reason for me to try to increase the number of iterations to get maximum likelihood sample statistics? I am a bit confused on this point because the program states for both MLR and WLSM: "NOTE: The sample statistics for within and between refer to the maximumlikelihood estimated within and between covariance matrices, respectively." Why then would the sample statistics be different then when I used a different estimator? I have tried a smaller model that did converge and noticed that the betweenlevel correlation matrix was indeed different for MLR versus WLSM. Why is this the case? Is there one I should prefer? Thanks for any clarification you can provide. 

Jason Major posted on Saturday, February 06, 2010  1:33 pm



Sorry for the misunderstanding in my first post; I have read in the User's Guide about the options in SAVEDATA for outputting the correlation matrices with maximum likelihood or weight least squares, and I understand how they differ. I am still unsure however about how to get the sample correlation matrix that is most appropriate for further EFA. I am not planning to do weighted least squares estimation again, as SWMATRIX would be used for. Using SIGB I can get the estimated sigma between correlation matrix when using WLMS, however I find it strange that the output in Mplus doesn't include the sigma between matrix, but only the "BETWEEN LEVEL MATRIX", and this is what is found in the data file. I assume this is because I did not specify any between variables; the clustering is the only thing at the between level. SIGB does not work with MLR though when I try to get the estimated sigma between correlation matrix. I this case I'm also using BASIC in the analysis command, which works fine with WLMS but not with MLR who just outputs: "No data saved." 


The best way to do EFA with multilevel data is to use TWOLEVEL EFA and raw data. See Example 4.6. 

Jason Major posted on Monday, February 08, 2010  2:17 pm



Thank you for your reply Dr. Muthen; I have looked at the example you cited. However, I think I should be more explicit about my goal. It is my fault for not being clear in the first place and asking too many questions at once. Essentially, I’m trying to obtain a correlation matrix to use for EFA in SPSS, in order to apply some of the estimators not available in Mplus. As mentioned, I would like to use TWOLEVEL EFA with clustering to correct for the nonindependence of twins in the sample, and at the same time estimate some missing data, and get a new correlation matrix that accounts for these two problems in the data. Example 4.6 uses the SWMATRIX command to output the sample statistics, but this requires weighted least squares estimation, where I would like to use maximum likelihood. Also, as far as I can tell, the swmatrix.dat output file only contains the between level variance/covariance matrix, whereas I need the between level correlation matrix. Thus, my question boils down to whether the estimated sigma between matrix as obtained by SIGB option is what I need instead? 


You can use the TYPE option of the SAVEDATA command to save a correlation rather than a covariance matrix. See the user's guide. Our WLSM estimator gives within and between matrices similar to those of our ML estimator. SPSS EFA does not have any estimators beyond those in Mplus except some which are mostly of historical interest. For instance, MINRES is the same as the Mplus ULSMV. Also, you cannot always use ML on a within or between matrix because it may not be positive definite. If you actually want to do EFA taking nonindependence of observations, the categorical nature of the data, and missing data into account, I think the WLSM estimator is probably the best thing out there for this analysis. It is not necessary to use the SWMATRIX. It just makes the computations quicker. It is not used alone but with raw data. 

Jason Major posted on Tuesday, February 09, 2010  7:38 am



Okay, I think I have things sorted out now, thanks again. Just a note for others who may be reading: Above I was talking about the betweenlevel correlation matrix, where it should have been the withinlevel correlation matrix. 

Emily Blood posted on Wednesday, June 28, 2017  10:35 am



What is the format of the SWMATRIX output file? I am trying to follow the procedure of Grilli and Rampichini 2007 to SEPARATELY analyze the within and between covariances matrices. To do this, I need to obtain both within and between matrices and then run a separate analysis on each. Based on documentation, both are output using SWMATRIX (outputs both) and SIGBETWEEN (outputs between). I can isolate the between using SIGBETWEEN, but looking at the output from SWMATRIX I can't identify the values that make up the within covariance matrix. Also, is the row, column format for the SIGBETWEEN for a 3x3 matrix:11, 21,22,31,32,33? 


SWMATRIX contains the weight matrix as well and is not what you want. Instead, use the Savedata option Save = to get the estimated within covariance matrix. See the V8 UG page 828. The format is the way you describe it. 

Emily Blood posted on Thursday, June 29, 2017  7:10 am



Thank you. From looking at page 828 (V8 UG), it looks like I can get the within covariance matrix from a twolevel model with the SAMPLE = command in SAVEDATA. SAVEDATA: SIGBETWEEN IS CovBQ1Q3.dat; ! between; SAMPLE IS CovWQ1Q3.dat; ! within; Is this correct, or do I also need to use the SAVE= option? 


I think that's correct. No need to also have Save= 

Back to top 

