Type = Complex PreviousNext
Mplus Discussion > Multilevel Data/Complex Sample >
 Patchara Popaitoon posted on Tuesday, August 23, 2011 - 10:30 am
Dear Linda,

I have run a unit level analysis and found the results are so much different by applying the analysis: Type = Complex.

I have used the same specification one with this command line and the other without. I found the model fit indices (esp. RMSEA) from the two runs are glaringly different.

When applying Analysis: Type = Complex; the fit indices gave:
RMSEA .032 CFI .923 TLI .914

When removing the analysis command line; the fit indices gave:
RMSEA .093 CFI .897 TLI .889

In my analysis, I also used

Cluster = location;
Stratification = region;

I would like to know why this is the case. Which one is more appropriate given the nature of my study?

 Linda K. Muthen posted on Wednesday, August 24, 2011 - 1:12 pm
If you have nested data and the results differ when you use COMPLEX, then you should use COMPLEX.

When you do not use COMPLEX, chi-square is inflated giving a worse RMSEA than when you take the nested nature of your data into account.
 Patchara Popaitoon posted on Wednesday, August 24, 2011 - 2:43 pm
Thanks for the advise. But, when I use COMPLEX, I got Probability RMSEA <= .05 equal 1.000. Whereas when I do not use COMPLEX, probability RMSEA is 0.000.

What does this mean? Is the result from the model using COMPLEX still appropriate?

 Linda K. Muthen posted on Thursday, August 25, 2011 - 8:35 am
This agrees with what is expected. With complex you should obtain a better RMSEA which you do. You should use COMPLEX with your data.
 Luo Wenshu posted on Monday, December 05, 2011 - 12:22 am
Dear Linda,

I am testing a SEM model with 13 latent variables and 2 observed covariates. There are 3 variables with large ICC (>.10) (cluster size about 15). I tried estimating a two-level measurement model, but the estimation did not converge.
Two ways were tried from here.

One is to use composite scores to run a two-level path model.By specifying the same free paths across two levels I got the informaiton: THE STANDARD ERRORS OF THE MODEL PARAMETER ESTIMATES MAY NOT BE TRUSTWORTHY FOR SOME PARAMETERS DUE TO A NON-POSITIVE DEFINITE FIRST-ORDER DERIVATIVE PRODUCT MATRIX. THE NONIDENTIFICATION IS MOST LIKELY DUE TO HAVING MORE PARAMETERS THAN THE NUMBER OF CLUSTERS. However, I think it is difficult to reduce the number of parameters to be less than the number of clusters and I am not very interested in the model at second level.

The other way is to use TYPE = COMPLEX to consider the dependence of the data with each cluster when estimating the parameters at the first level. Rather than using the composite scores, I specified both a measurement model and a structural model. The model has a good fit, but I got similar warming information as obtained in the first analysis.

Can I trust the result from the analysis in the two ways, especially the second?
 Li Lin posted on Monday, December 05, 2011 - 12:01 pm
I'm running a two-level SEM model with dichotomous outcomes. I would like to get the BLUP for u. For example, a blup is E(u) = GZ'V(-1)(y - Xb). How can I get the BLUP in Mplus? Does Mplus give the variance components?
 Linda K. Muthen posted on Monday, December 05, 2011 - 12:38 pm

You have non-independence of observations at the individual level. Only at the cluster level do you have independence of observations. The impact of having more parameters than clusters has not been well studied but this may affect your results. The only way to know the impact is to do a Monte Carlo study similar to your own study and see the impact on parameter estimates, standard errors and fit statistics.
 Linda K. Muthen posted on Monday, December 05, 2011 - 3:27 pm

Mplus does not provide BLUP.
 Luo Wenshu posted on Monday, December 05, 2011 - 7:32 pm
Hi Linda,

Thank you for your reply. My data actually have three levels (students, classes and schools). In Mplus, if I run SEM with type = complex, I can only treat the data as having two levels (classes as the second level units).Is it OK to ignore the school level for this analysis? By setting type = complex, will the results of SEM analysis be the same if the data can be treated with three levels? Indeed,I found that the level 3 variance + level 2 variance in three-level variance decomposition analysis = level 2 variance in two-level variance decomposition analysis.
 Luo Wenshu posted on Tuesday, December 06, 2011 - 1:19 am
Hi Linda,

When we set type=complex to run SEM, we can obtain a latent correlation matrix if we have tech4 following the OUTPUT command. Is this correlation matrix the pooled within groups latent correlation matrix or a correlation matrix based on the disaggregated data? Thank you very much.
 Linda K. Muthen posted on Tuesday, December 06, 2011 - 8:55 am
It sounds like the school variance is small so it could perhaps be ignored. If you don't want to ignore it, you can use TYPE=COMPLEX TWOLEVEL. See the introduction to Chapter 9 and pages 500-501 in the user's guide.

TECH4 is not the pooled-within matrix. See the SAMPLE option of the SAVEDATA command for pooled-within.
 Luo Wenshu posted on Tuesday, December 13, 2011 - 10:37 pm
Hi Linda,

I am testing a complex mediation model with multiple independent variables, multiple mediators, and multiple outcomes. I can obtain the indirect effects and their signficance test in Mplus. I found in Mplus output the size of the indirect effect is the product of the path coefficent from X to M (a) and from M to Y (b), and the standard error can be obtained by using Sobel's formula. Could you please let me know how the significance test is conducted? Is it based on the ratio of ab/SE assuming normal distribution? From MacKinnon's articles, the product usually does not follow a normal distribution. When the sample size is large, does the distribution approach normality? I know we can use Bootstrap method to test signficance. However I use TYPE = COMPLEX and Bootstrap cannot be run for this type of analysis.
 Linda K. Muthen posted on Wednesday, December 14, 2011 - 11:51 am
Note that we use the Delta method standard errors. There is a FAQ on the website that discusses the difference.

Yes, when the sample size is large, the distribution does approach normality. Indirect effects are generally not that non-normal.
 Christopher Bratt posted on Saturday, February 11, 2012 - 3:00 am
Hi Linda (or anyone else answering here)

I have relatively complex, longitudinal data with students clustered in classrooms.

Repeatedly I find effects (with low p-values) if I

- do a single level analysis
- or use a sandwich estimator with type = complex

But modelling the longitudinal model as twolevel inflates p-values (or gives wide CIs with Bayesian). Intraclass correlations vary from quite moderate (e.g. .01) to relatively high (e.g. .05 or higher), N is anywhere between 400 and 1400.

I am for the time being not so interested in the Between level, but think I need to account for the interdependence of observations. Trouble is, COMPLEX and TWOLEVEL give me very different conclusions for the part I am interested in.

Am I correct in believing that simulation studies indicate TWOLEVEL is more reliable than COMPLEX? A yes to this question is unfortunate as far as my analyses are concerned... I hoped you might be able to comment on this.

 Linda K. Muthen posted on Saturday, February 11, 2012 - 4:20 pm
A growth model is what is called a disaggregated model. You should use TWOLEVEL not COMPLEX for disaggregated models.
 babs posted on Monday, April 23, 2012 - 6:46 am

I am new to Mplus, so please forgive me my beginner questions. I am considering the following situation: 538 customers are nested with 195 sales representatives who are nested within 12 companies. As the model type I chose "twolevel complex" however, I am not sure whether I need a random slope in my case.

My model looks like this so far:

cluster=Company SalesREP;
analysis: type=twolevel complex;



Cw by y1-y2; !Customer Loyalty


Ab by x1-x4;! salesREP'CustomerOrientation

Bb by z1-z4; ! salesREP' Job Satisfaction

Cb by y1-y2; !CustomerLoyalty

Cb on Ab Bb;

But I also would like to include an effect "Cw on Ab Bb"- how can I do this? And how would the syntax look like in this case? I am not sure how to transfer the user's guide examples for random slopes to my case. Furthermore, is the command cluster=company salesRep suitable if I want to take into account the 3rd level (companies)?

Thank you so much for your help!
 Linda K. Muthen posted on Monday, April 23, 2012 - 1:33 pm
Please note that 12 companies are not enough for COMPLEX or TWOLEVEL. A minimum of 30-50 is recommended. Instead of using COMPLEX, include 11 dummy variables in the analysis.

You can't include Cw ON Ab Bb. The most you can do is create a customer loyalty factor using the between part of y1 and y2 as you have done.
 Stefanie App posted on Friday, February 15, 2013 - 10:34 am
I have a similar setting as "Luo Wenshu posted on Monday, December 05, 2011 - 12:22 am".
I am using Type=Complex and get the same error information, as I have more parameters than clusters (16 clusters), but I am not able to reduce the parameters. I just want to control for the second level as my estimated intraclass correlations suggest that I have nested data, but I am actually just interested in the level 1 structure.
Linda refers to use a Monte Carlo study in order to see the impact on the parameter estimates, standard errors and fit statistics.
Can you please specify what I would have to do?
Thank you for your help!
 Bengt O. Muthen posted on Friday, February 15, 2013 - 1:52 pm
You can look at examples 12.6 and 12.7 in the UG. Typically, you don't have to worry about this. Note, however, that 16 clusters is a bit too small for type=complex standard errors to be well estimated. At least 20 is the rule of thumb. You can also try Bayes where a smaller number of clusters can be handled, although type=complex is not available with Bayes but instead you would have to do twolevel analysis.
 Wouter Vleugels posted on Thursday, June 09, 2016 - 5:03 am
Dear Prof. Muthen,

I wonder what the exact difference is between the Type = Complex and Type = TWOLEVEL command when trying to predict time-lagged effects of x on y.
If you have a two-level structured data sample (i.e., days of measurement nested in people), should you get the same output when using the ‘Type = Complex’ command…

[VARIABLE: NAMES = y_t x_t y_tmin1 x_tmin1 id; CLUSTER = id;
MODEL: y on y_tmin1 x_tmin1; x on x_tmin1;]

…compared to the ‘Type = TWOLEVEL’ command when person mean centering the independent variables?

[VARIABLE: NAMES = y_t x_t y_pmc_tmin1 x_pmc_tmin1 id; CLUSTER = id; WITHIN ARE y_t x_t y_pmc_tmin1 x_pmc_tmin1
MODEL: %within% y on y_pmc_tmin1 x_pmc_tmin1; x on x_pmc_tmin1; %between%]

Many thanks!
 Linda K. Muthen posted on Thursday, June 09, 2016 - 6:18 am
See Slides 20-24 of the Topic 7 course handout on the website. See also the introduction to Chapter 9 of the user's guide. You can also see the difference by doing both analyses and comparing them.
 Wouter Vleugels posted on Thursday, June 09, 2016 - 6:53 am
Dear prof. Muthen,

The slides suggest you should end up with a similar solution. However, mine greatly differs when using Type = COMPLEX versus Type = TWOLEVEL. The latter produces different (and non-significant) estimates compared to the former. May this be caused by person mean centering the data? (for instance, does the Type = Complex command operates by using random intercepts which I corrected by person-mean centering the data when using the Type = TWOLEVEL command?)

Many thanks!
 Linda K. Muthen posted on Thursday, June 09, 2016 - 9:54 am
Please send the output and your license number to support@statmodel.com.
 Benjamin Brumley posted on Tuesday, January 24, 2017 - 1:54 pm
Drs. Muthen,

I am conducting multiple-group invariance tests in Mplus using the "model = CONFIGURAL METRIC SCALAR" feature with ordered-categorical observed items. I read that this multiple group analysis can be combined with a clustering variable (classroom ID) using the Type=Complex option to make adjustments to the chi-square.

I read that the Type=Complex produces the Satorra–Bentler chi-square with MLM but my estimator in this model is WLSMV. What chi-square adjustments are being used with Type=Complex with WLSMV in Mplus? I can not seem to readily find an answer, so I would very much appreciate any references you can provide.

Thank you,
Benjamin Brumley
 Bengt O. Muthen posted on Tuesday, January 24, 2017 - 2:49 pm
Look for DIFF test in the UG.
 Benjamin Brumley posted on Wednesday, January 25, 2017 - 9:22 am
Dr. Muthen, Thank you so much for your response. I have looked at the User's Guide with reference on DIFF test. My follow-up question is not so much on the DIFF test between the Configural Metric Scalar. Rather, when I add the Type = Complex option to the model the Chi-Square value, for example the Configural model, is influenced and as a result, the fit indices(RMSEA, CFI, TLI) are influenced. Is the new Chi-Square being estimated via Sattora-Bentler or Yuan-Bentler or is there a different formulation of this chi-square with estimator WLSMV?


Chi-Square Test of Model Fit
Value 8764.717*
RMSEA 0.118
CFI 0.995
TLI 0.994


Chi-Square Test of Model Fit
Value 3985.179*
RMSEA 0.079
CFI 0.993
TLI 0.991
 Benjamin Brumley posted on Thursday, February 09, 2017 - 12:40 pm
Dr. Muthen, When I add Type = Complex option to the factor model with estimator WLSMV, is the new Chi-Square being estimated via Sattora-Bentler or Yuan-Bentler or is there a different formulation of this adjusted chi-square with estimator WLSMV?

Thank you very much,
Benjamin Brumley
 Bengt O. Muthen posted on Thursday, February 09, 2017 - 6:09 pm
It's related but somewhat different. See the paper on our website:

Muthén, B., du Toit, S.H.C., & Spisic, D. (1997). Robust inference using weighted least squares and quadratic estimating equations in latent variable modeling with categorical and continuous outcomes. Unpublished technical report.
download paper contact first author show abstract
 ZHANG Liang posted on Thursday, October 12, 2017 - 6:31 am
Dr. Muthen,

We did a cross-lagged analysis to examine the longitudinal reciprocal relations between aggression and academic achievement among students. Both aggression and achievement were measured yearly for four consecutive years. At each of the 4 years, the aggression of students in one classroom were rated by one same teacher. Thus, one reviewer recommended us to take into account the hierarchical nature of our data (participants were nested in classes), using TYPE = COMPLEX.

However, the participants were at elementary schools at year 1 and year 2, and they transited into middle schools thereafter, were assigned into new classes at year 3 and year 4. As such, we cannot predefine a unified multilevel structure through the 4 years using CLUSTER.

If so, is it still possible to use TPYE = COMPLEX here?
And, if there are alternative ways to address this problem?

 Bengt O. Muthen posted on Thursday, October 12, 2017 - 7:58 am
This is a case of multiple membership. This is not available in Mplus in the general case, but for how to do this in Mplus in a simple case, see slides 57-60 of V7Part3 our Topic 10 short course material at

 mdehne posted on Thursday, May 28, 2020 - 3:24 am
Dear Mplus Support:

I want to test measurement invariance between student and teacher ratings in a multigroup framework and use type = complex option together with MLR-estimation. This procedure I used for gender, grade level, and different subjects to account for nonindependence of observations among my students.

I am quite unsure how to account for nonindependence of observations correctly in the multigroup framework if nesting information is only available for one group since my students are nested within classes. For my teacher ratings I could use the same information, though, to my opinion, it is not the best way as each teacher would equal one cluster. If I code all teacher cluster information as missing values, Mplus issues a warning that the observation size for the teacher group is zero. On the other hand, I think it might be the correct way to account for nonindependence in one group when at the same time one person in the other group equals one cluster. Maybe this is trivial but I could not find the computation for standard errors if I only use type = complex.

Thank you very much in advance – your help is as always appreciated.
 Bengt O. Muthen posted on Saturday, May 30, 2020 - 11:28 am
I think this question is suited for SEMNET.
Back to top
Add Your Message Here
Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Options: Enable HTML code in message
Automatically activate URLs in message