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
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
Hi 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?
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.
Luo Wenshu posted on Monday, December 05, 2011 - 7:32 pm
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
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.
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
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.
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.
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.
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)?
Hello, 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!
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.
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; ANALYSIS: Type = COMPLEX; 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 ANALYSIS: Type = TWOLEVEL; ESTIMATOR = MLR; MODEL: %within% y on y_pmc_tmin1 x_pmc_tmin1; x on x_pmc_tmin1; %between%]
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?)
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.
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?
MODEL FIT INFORMATION FOR THE CONFIGURAL MODEL
Chi-Square Test of Model Fit Value 8764.717* RMSEA 0.118 CFI 0.995 TLI 0.994
MODEL FIT INFORMATION FOR THE CONFIGURAL MODEL (*NOTE ADDITIONAL TYPE=COMPLEX ADDED)
Chi-Square Test of Model Fit Value 3985.179* RMSEA 0.079 CFI 0.993 TLI 0.991
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?
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
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?
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
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.