Message/Author 


Suppose I have 4 latent classes. Whether I'm looking at means (in the SEM part of the model) varying over the different latent classes or the probability of a binary outcome varying over the different latent classes, how do I determine if these means or probabilities are significantly different from one another? 


You can use likelihoodratio chisquare difference testing to compare two mixture models that have the same number of classes and are nested. So, in your case, you also run the model where these means/probabilities (logits) are held equal, and then compute the chisquare difference and degree of freedom difference. In mixture models, a chisquare test is not provided and therefore the chisquare difference test is computed as 2*d where d is the difference between the loglikelihood values from the two models being compared. The degrees of freedom difference is computed as the difference in the number of parameters. 

Anonymous posted on Wednesday, March 07, 2001  4:43 am



I’m just beginning to explore mixture models, so please forgive the naiveté. I have five continuous standardized outcome variables and want to assess how many groups they might represent. I have two questions. First, is the syntax below appropriate or have I missed something? Second, what are reasonable criteria for choosing 1 versus 2 versus 3 or more groups? Thanks! TITLE: Continuous outcome mixture model DATA: FILE IS "D:\eva\heterogeneity\analysis\nsf.csv"; VARIABLE: NAMES ARE fem black bw ed alt self trad open nep cons wts active; USEVARIABLES ARE alt self trad open nep; CLASSES = envgrp(2); ANALYSIS: TYPE IS MIXTURE; LOGHIGH = +15; LOGLOW = 15; UCELLSIZE = 0.01; ESTIMATOR IS MLR; LOGCRITERION = 0.0000001; ITERATIONS = 1000; CONVERGENCE = 0.000001; MITERATIONS = 500; MCONVERGENCE = 0.000001; MIXC = ITERATIONS; MCITERATIONS = 2; MIXU = ITERATIONS; MUITERATIONS = 2; OUTPUT: SAMPSTAT RESIDUAL STANDARDIZED; MODEL: %OVERALL% alt WITH nep self trad open; self WITH nep trad open; trad WITH nep open; open WITH nep ; %envgrp#2% [altnep*1]; 


This setup looks correct. The model is a classic mixture (cluster) analysis, in line with the web site examples given under Classic Mixtures with reference to Everitt's book. Your model assumes a classinvariant covariance matrix with classvarying means. As Everitt explains, this model sometimes gives convergence problems. An alternative is LPA where the variables are uncorrelated within classes. Many authors suggest that the model with the lowest BIC value be chosen. 


I am examining how reading scores in elementary school predict problem behavior in middle school. I have been running a growth mixture model on reading scores (readgr3  readgr6) that includes two covariates (lowinc and dstsex). I come up with a two group model that allows psi and theta to vary between groups. Now I want to compare those groups on a latent variable (problem) measured by four indicators (druggr7 school viol notviol), controlling for the covariates (lowinc and dstsex). I am having trouble figuring out the correct syntax for doing this. Here is what I have so far: TITLE: growth mixture model with 2 groups, covariates and latent problem behavior construct; DATA: FILE IS c:\data\analysis\traj2\mixture.dat; VARIABLE: NAMES ARE lowinc dstsex READGR3readgr6 prcongr3prcongr6 druggr7 school viol notviol; USEVARIABLES ARE lowinc dstsex READGR3readgr6 druggr7 school viol notviol; CLASSES = c(2); ANALYSIS: TYPE = mixture; miterations = 400; MODEL: %OVERALL% problem by druggr7*.7 school*.7 viol@1 notviol*.7; C#1 on lowinc dstsex; i BY READGR3readgr6@1; s BY readgr3@3 readgr4@2 readgr5@1 readgr6@0; [READGR3readgr6@0 i*210 s*6 problem*0]; readgr3*38 readgr4*27 readgr5*21 readgr6*15; i*75 s*.3; i with s*.36; %c#1% [i*220 s*4]; readgr3*32 readgr4*22 readgr5*18 readgr6*12; i*70 s*.3; i with s*.3; %c#2% [i*200 s*7]; readgr3*40 readgr4*30 readgr5*24 readgr6*20; i*80 s*.4; i with s*.4; OUTPUT: tech1 tech7 tech8; So my question is: What do I do to the above syntax in order to estimate the relationship between latent group class and the latent problem behavior construct, controlling for the two covariates? 


You want latent trajectory class membership to predict a dependent factor "problem", controlling for covariates lowinc and dstsex. This is done by stating problem on lowinc dstsex; in the Overall part of the input, followed by estimation of classspecific means of the problem factor using [problem]; in the classspecific parts of the input. This setting is then analogous to ANCOVA, where the dependent variable is the factor and class membership corresponds to experimental conditions. You have slopes on covariates that are invariant across experimental conditions and can then interpret the intercept differences as being due to experimental conditions. Invariance of the slopes can be relaxed by making classspecific statements. 

Anonymous posted on Tuesday, May 29, 2001  1:50 pm



I am running a two class mixture model, I want to be sure I have the correct thresholds for seven variables with only two response options, what do you think?? %OVERALL% %C#1% [imp$1 * 3 exp$1 * 2 lee$1 * 1 INC$1 * 1 OMI$1 *  2 TOR$1 * 3 OOP$1 * 4] %C#2% [imp$1 * 2 exp$1 * 1 lee$1 * 0 INC$1 * 2 OMI$1 * 3 TOR$1 * 4 OOP$1 * 5] 


I don't see any problems with your starting values. They should reflect the probabilities of the latent class indicators. Following are some general guidelines for selecting starting values: Selecting Starting Values · Class probabilities  not required · Conditional item probabilities  required for thresholds in logit scale · Translation of probabilities to logits for thresholds  the higher the threshold, the lower the probability · Very low probability (+3) · Low probability (+1) · High probability (1) · Very high probability ( 3) · Let the most prevalent class be last · For lowprobability behaviors, assign the highest logit threshold values to the items for the last class · For highprobability behaviors, assign the lowest logit thresholds values to the items for the last class 


I'm trying to run a twogroup latent class analysis  that is, I have two groups of observations and I want to run a latent class analysis on both of them simultaneously, but where each latent class is restricted to one of the manifest groups. I've tried doing this like so: %lc#1% [fight1$1*3 . . . disbrk5$1*5]; [interv$1@15]; . . . %lc#5% [fight1$1*3 . . . disbrk5$1*5]; [interv$1@15]; But I'm getting interesting error messages (model estimation did not terminate normally due to a NPD Fisher information matrix; model estimation has reached a saddle point, not a proper solution). Is this because of how I've set up the INTERV variable? Or is it likely just bad starting values in the rest of the model (I know the starting values are OK for one of the two groups, and I just duplicated them for the second set of latent classes)? Is there a better way to do what I'm trying to do? Thanks, Pat 

bmuthen posted on Thursday, October 11, 2001  10:27 am



I assume that the interv variable is the latent class indicator that determines the observed group membership; then the interv statements are correct. Alternatively, training data can be used to handle the two groups. But, you should use different starting values in the two classes for your fightdisbrk latent class indicators. Note also that your model assumes uncorrelated indicators for each of the two groups, which may be a strong assumption. You can generalize your setup to say 2 classes for each observed group. 


Yes, interv is the dichotomous indicator of the observed groups; I should have specified. I shifted the starting values for the second set of latent classes (there are actually six classes per group, with 21 indicators  this is a big problem), but still get the same errors. I tried specifying the groups with training data instead, but it made no difference. I note that in the partial output I get, many of the threshold estimates have an absolute value over 15, but I'm using the default settings for that, so I'm not sure what's going on. Should I take this to the tech support line? Or just keep fiddling with starting values? Thanks, Pat 

bmuthen posted on Friday, October 12, 2001  5:59 pm



It is ok that you get the message about several of the threshold estimates having values greater than 15. This is actually an advantage in defining the classes because it means that these indicators are either on or off for a given class with probability one. But, the large values can cause a singular information matrix as you indicate and a good approach is to go back and rerun the model with these values fixed at +15 (or 10) in the input (this does not change anything else in the model)  this may well solve your problem. 

Krishna Rao posted on Sunday, October 28, 2001  1:48 pm



I am trying to estimate an unrestricted LCA model. I assueme therefore, that I do not need to specify any treshold values or class probabilites. However, the results I get do not make sense (the conditional probabilites of class membership ar all 0.5) and are different when I use other LCA programs such as LEM. I feel that my syntax is incorrect (given below)  I would be grateful for your help. TITLE: rahhhlem DATA: FILE IS "d:\temp\krishna\rajhhlem2.dat"; VARIABLE: NAMES ARE hv206 hv207 hv208 hv209 hv210 hv211 hv212 hv221 sh36 sh38a sh38b sh38c sh38d sh38e sh38f sh38g sh38h sh38i sh42 sh43 sh46 sh47a sh47b sh47c sh47d sh47e sh47f sh47g sh47j sh47q sh47r sh47s sh47t hv2011 hv2012 hv2013 hv2014 hv2015 hv2016 hv2017 hv2018 hv20113 hv20114 hv20115 surwat hv2051 hv2052 hv2053 hv2054 hv2055 hv2056 hv2057 hv2058 sh341 sh342 sh343 sh344 sh345 sh491 sh492 sh493; USEVARIABLES ARE hv206sh493; CATEGORICAL ARE hv206sh493; CLASSES = C(2); ANALYSIS: TYPE IS MIXTURE; 

bmuthen posted on Sunday, October 28, 2001  5:13 pm



The Mplus philosophy is that the user should give starting values for the item probabilities in each class (in logit scale for the thresholds) to avoid local solutions that are not in line with theory. See Example 25.9 in the User's Guide to find input specifications for LCA. By not mentioning anything class specific in your input, I think your setup generates zero logit values (0.5 probability) for all classes, which is not what you want. 

krishna rao posted on Sunday, October 28, 2001  6:07 pm



Thanks for the reply. Unfortunatly, here at Johns Hopkins where I am a student, we do not have the MPlus User's guide, even though the program is available for students to use. But I shall see what I can do with the information you have kindly provided. 


Following is the input for Example 25.9. I hope this helps. The statements in brackets are giving starting values for the thresholds. TITLE: this is an example of a latent class analysis with binary latent class indicators DATA: FILE IS lca.dat; VARIABLE: NAMES ARE u1u4; CLASSES = c(2); CATEGORICAL = u1u4; ANALYSIS: TYPE = MIXTURE; MODEL: %OVERALL% %c#1% [u1$1*2 u2$1*1 u3$1*0 u4$1*1]; %c#2% [u1$1*1 u2$1*0 u3$1*1 u4$1*2]; 

krishna rao posted on Tuesday, October 30, 2001  10:45 am



Dear Linda, Thanks so much for this  it really helped me out. I have one more problem to bother you with  how do I get the MPlus to give me output where each observation (i.e. individual) is assigned to one of the classes. Thanks in advance... Best Krishna 


I think you mean that you want to save the posterior probabilities for each person and also save the highest probability class for each person. To do so, say SAVEDATA: FILE IS filename; SAVE IS CPROB; You can print a summary of the Mplus commands from www.statmodel.com under DEMO. 

dagmar posted on Tuesday, December 11, 2001  2:05 pm



Hello, I would like to find out the estimated intercept and slope for each individual in the sample so that I could look at the range of the intercepts and slopes for individuals in each class. Can Mplus produce these? How do I ask for them? Thanks very much for your help. Dagmar 

bmuthen posted on Tuesday, December 11, 2001  5:05 pm



It sounds like you are doing a growth mixture analysis. Assuming that this is a correct impression, the intercept and slope for each individual can be estimated as factor scores. However, with growth mixture models individuals' factor scores are not printed for each latent class. Instead, you have two other outputs. One, you get the factor scores for the individual's most likely class. Two, you get the "mixed" factor scores, that is the weighted sum over the latent classes. This is further described in the technical appendix of the User's Guide. 

Dagmar posted on Wednesday, December 12, 2001  9:58 am



I am doing a growth mixture analysis. My users's guide has numerous appendices, but none that I looked at (latent variable mixture modeling, estimation of factor scores) appears to contain syntax for requesting factor scores for the individual's most likely class and the "mixed" factor scores. The following is syntax for one of the models I'm running. Perhaps you could suggest how to modify this syntax so that it would produce the output files? Thanks! Dagmar VARIABLE: NAMES ARE ID Y1Y7; USEVARIABLES ARE Y1Y7; IDVARIABLE = ID; MISSING ARE ALL (99); CLASSES = c(3); ANALYSIS: TYPE IS MIXTURE MISSING; LOGHIGH = +15; LOGLOW = 15; UCELLSIZE = 0.01; ESTIMATOR IS MLR; LOGCRITERION = 0.0000001; ITERATIONS = 1000; CONVERGENCE = 0.000001; MITERATIONS = 500; MCONVERGENCE = 0.000001; MIXC = ITERATIONS; MCITERATIONS = 2; MIXU = ITERATIONS; MUITERATIONS = 2; OUTPUT: SAMPSTAT RESIDUAL TECH1 TECH4 TECH7 PATTERNS; SAVEDATA: FILE IS allrawdata3grrvar; FORMAT IS F10.3; RECORDLENGTH = 1000; SAVE = CPROBABILITIES; FILE (RESULTS) IS allresults3gr; FILE (TECH3) IS alltech33gr; FILE (TECH4) IS alltech43gr; MODEL: %OVERALL% i BY Y1Y7@1; s BY Y1@0 Y2@1 Y3@2 Y4@3 Y5@4 Y6@5 Y7@6; [Y1Y7@0 i s]; i@0; s@0; i WITH s@0; %c#1% [i*.4 s*.1]; %c#2% [i*.5 s*.2]; %c#3% [i*.1 s*0]; 


The statistics are described in the technical appendix. Syntax is described in the regular chapers. If you add SAVE = FSCORES; to your SAVEDATA command, you will get factor scores in the file, allrawdata3grrvar. This is described on page 93 of the Mplus User's Guide. 

Anonymous posted on Friday, February 01, 2002  8:59 am



Assistance interpreting Output, for c#1 on x1 . . .xn, ect. Hello, I have simplified my output to two classes and one exogenous predictor. Suppose I have an identified two class model, With a single exogenous predictor of class. My output provides me with this information: 1. An intercept of C1: for example 5 2. An effect of X1 on C1: for example +7 In your own words, would you mind explaining 1. The interpretation of each of these statistics. 2. The equation for converting them into odds ratios. 3. The equation for converting them into probabilities of class membership. I apologize if this seems overly simplistic, but it is easy to get confused. Many thanks. 

bmuthen posted on Saturday, February 02, 2002  8:36 am



The coefficients for c on x are in logit scale, where Prob = 1/(1+exp(L)) with exp being etothepowerof and L denoting the logit. Take as an example a case with binary class variable and a single x, giving the equation logit = intercept + slope*x. To interpret the intercept you can consider x=0, so that the logit = intercept. Compute the probability. This is the probability of being in class 1 at x=0. To interpret the slope, you can either consider the influence of x on the (1) probability (via the logit), or (2) the odds, or (3) the odds ratio. For (1), simply insert different x values in the logit equation and compute the probabilities. For (2), the odds of being in class 1 versus class 2 is simply P/(1P). For (3), the odds ratio is the odds at two different x values. Typically this is computed with a binary x. There is a simple shortcut to get this odds ratio, odds ratio = exp (slope) So, to interpret slopes one can use phrases like "comparing class 1 to class 2, the odds ratio for male versus female is...". Or, with a continuous x, "the odds of being in class 1 versus class 2 is significantly increased with increasing x value". 


In creating models with increasing numbers of classes, I run into the experience that a certain number of classes are not possible to estimate without a great degree of effort. In this case, I have proceeded through four classes, with each class, better than the previous, by smaller degrees (based on BIC stat). Ideally, I would compute a 5 class model with a smaller BIC than my four class model, reject the 5 class model and move on. Functionally, I get a terrific model with four classes, and am not able to estimate a five class model. Is there anything interesting that I can say about my data creating a situation that does not allow further estimation of classes. Mclachlan, states that ultmiately, the data may be modelled until c=n, the number of observations. In lieu of that  what information is gained from a model when an estimating "wall" is encountered? 


In working with simulated data, we have seen that nonconvergence is often an indication that the correct number of classes has been exceeded. Also, a drop in BIC alone should not be used as the only criteria to select the number of classes. Other criteria such as interpretability of the classes and class size should be considered. 

David Rein posted on Thursday, April 11, 2002  12:43 pm



I just want to confirm that in mixture modelling the number of possible classes islimited by sample size and not the number of observed indicators. McLachlan and Peel seem to state this, but I want to double check. For example, in a mixture model, I can have a latent variable with 5,6,7,8, etc . . values, even if I just have four observed indicators. My theoretical limit of values for my class value would be where c=n. Is this correct? 

bmuthen posted on Thursday, April 11, 2002  6:33 pm



It depends on the model. For example, with a latent class analysis with four binary outcomes already a 3class model has one indeterminacy as shown in Goodman (1974; see our Reference section). There seem to be few general rules, however. 

David Rein posted on Friday, April 12, 2002  7:05 am



Thank you, How are estimates from a simple FMM such as: "Normal mixtures, Everitt & Hand (1981), Fisher's Iris data, UNequal covariance matrices" used to forecast class membership in unfitted data? 

bmuthen posted on Friday, April 12, 2002  8:31 am



Interesting question. You do an Mplus run where you use the estimates to fix every parameter of the model, and enter as your sample the group of unfitted subjects. While no parameter gets estimates, out comes the estimated posterior probabilities for each subject which is what you want. 


I've got a situation where I want a latent class to mediate the effect of a continuous predictor on a continuous outcome. I can set up the class membership logits to depend on the predictor  that part's fine. However, the only way I've seen to model the effects of class membership on the outcome is as Bengt noted on his 3/12/01 message  by letting the mean of the outcome vary by class. My problem is that it seems that this would redefine the classes  that is, they'd be optimized with the outcome variable acting like a latent class indicator. I'd prefer the latent class definition to be based only on the other indicators. One solution that's come to mind is to run the latent class model with no other variables, and use the estimated values as fixed starting values in the second run that includes the other relations. Is this sensible (I know it will mess up my degrees of freedom)? Is there a better way? Or am I making too much of the reoptimization concern? Thanks, Pat 

bmuthen posted on Wednesday, July 31, 2002  9:35 am



Yes, when you include the outcome, your class membership changes. This may be desirable or not. On the one hand, one can argue that this is at it should be because all observed variables are informative about class membership. If the model is correct, adding the outcome should not change membership very much, but merely improve the classification (better entropy). On the other hand, you may want to enforce the class membership that you have before entering the outcome. This means that you must hold individual class probabilities fixed, not only the estimated parameters. If only estimated parameters are held fixed, the outcome still changes the class probabilities and the individual estimated posterior probabilities. I think a solution is to use the training data facility in its probability version (TTYPE=PROBABILITIES), using the individual estimated posterior probabilities from the run without the outcome. Note, however, that this strongly underestimates s.e.'s because you are acting as if class membership is known. 


Thanks. It's not so much class membership that I'm worried about changing as class definition (this may be because I haven't thought about it enough yet). I want to be able to say that X increases the likelihood of membership in class C, which in turn is associated with higher levels of outcome Y, but not have the definition of class C depend on what Y is in the model. Does that make sense? 

bmuthen posted on Thursday, August 01, 2002  9:13 am



Yes, I understand what you are saying here. I would not worry about this. Think about the analogy with SEM and all continuous variables, so that c is a continuous factor, say eta. Say that you even have a set of indicators z of eta in addition to the predictors x. If you add the outcome y to the model, to some extent this changes all parameters (including the loadings for z's on eta)  and if you were to estimate the factor scores for eta, they would also be different as compared to not having y in the model. Now, one could argue that to have the measurement of eta settled before adding y, one should fix the loadings of the z's on eta. One can do that, but I don't think it is customarily done in SEM. 


Thanks. That helps. 

Jeannie posted on Sunday, October 27, 2002  1:07 pm



Hello, how exactly are the standard errors for pihats calculated? Do you use the observed second derivative matrices or bootstrap estimates, or something else? thanks, Jeannie 


Can you please tell me what you mean by pihats? 

Jeannie posted on Monday, October 28, 2002  7:28 am



Oops, sorry, I meant estimates for conditional probabilities. 

bmuthen posted on Monday, October 28, 2002  7:56 am



 do you mean the conditional probabilities for items given class in LCA, or the conditional probabilities (posterior probabilities) for each individual? 

Jeannie posted on Monday, October 28, 2002  9:03 am



so sorry for the back and forth, I mean conditional probability for the item given the class in LCA. thanks, Jeannie 

bmuthen posted on Monday, October 28, 2002  9:37 am



 No problem. The answer is given on Mplus Discussion under the heading LCA s.e.'s for estimates in probability scale 10/16/2002 05:59am 

jeannie posted on Monday, October 28, 2002  12:07 pm



Hello, I see that I'm still not asking my question properly, I apologize! OK, I understand the method for determining the s.e. for a function of an estimate, what I was asking though, is then, how did you estimate the variance of the logit estimate? thanks, Jeannie 

bmuthen posted on Monday, October 28, 2002  4:28 pm



We are converging. For mixtures, the s.e.'s are computed using observed secondorder derivatives  and with the default MLR approach, doing the robust (sandwichtype) version that also involves firstorder derivatives. See Mplus User's Guide, Technical Appendix 8, page 370. 

Howard posted on Thursday, November 07, 2002  2:29 pm



Greetings, I have a question about applying the advice in Linda Muthen's post from 5/20/2001 regarding starting values in a LCA model with discrete indicators. I have 33 indicators, and am trying to fit a 2 class, then a 3 class solution. The class counts vary based on the starting values, so I am concerned that I am following 'best practice' in this area. One approach seems to be to set all the starting values in c#1 to 0, then c#2 to 1, and so on. For example:
  c1  c2  u1   0  1  u2   0  1  u3   0  1  u4   0  1  But the advice above implies that for prevalence indicators, the starting values should increase. So, if the indicators u1u4 are in order of decreasing prevalence, I should set the starting values as follows:
  c1  c2  u1   3  4  u2   1  2  u3   1  2  u4   3  4  Which approach is recommended? It seems like the first leads to a lower BIC, which would imply that it is preferred. An alternative that occurs is to use the logit of the the observed mean (proportion) for the starting value. Following this thought, should I use the 2 class probabilities as starting values for the 3 class solution? Thank you in advance. Thank you in 

bmuthen posted on Thursday, November 07, 2002  5:50 pm



I think you should all these approaches and if they give different log likelihood values you should probably try further variations. LCA is known to have multiple solutions, particularly with smaller samples and models that are less clearly determined by/suited to the data, and you want to make sure that you find the one with the best (highest) log likelihood value. 

Anonymous posted on Monday, January 27, 2003  12:11 pm



I'm trying to develop a latent class measurement model in which I allow the residuals for two or more indicator variables to be correlated. Does Mplus not allow this option ? I've tried: % OVERALL % indic1 with indic2; as well as: %C#1% indic1 with indic2; etc. Thanks. 

Anonymous posted on Monday, January 27, 2003  1:57 pm



I have some additional questions regarding LV mixture modeling in Mplus v2.12: (1) In constructing a SEM with a latent class measurement model (LCMM) as an outcome variable, I've noticed that Mplus provides: (a) ChiSquare tests of model fit for the LCMM, and (b) ChiSquare tests of model fit for the entire SEM. Are these calculated in stages  i.e., does Mplus fit the LCMM model first, obtain start values and model fit, and then generate overall model fit statistics ? (2) Mplus provides two types of class counts / proportions in the output for a SEM with a LCMM: estimates based on posterior probabilities and "estimates based on most likely class membership". Is it the case that the latter series of probabilities based on the LCMM "in isolation" (i.e., no covariates) while the former series is based on LC membership based on the addition of additional information (i.e., covariates) into the model ? If these values don't change much does this imply that the additional of covariates does not change the distribution of individuals into classes (and thus, evidence that the LCMM is "stable") ? (3) Finally, Mplus provides a space for RSquare statistics for each of the classes in my model but whenever I run a SEM with a LCMM, this portion of the output is blank  i.e., Mplus isn't producing RSquare values for the latent class membership portion of the model, in spite of providing the information referenced in question (2) above. (4) Is it possible to construct SEMs where a LCMM is used as an intervening variable between a set of covariates and a categorical outcome variable (dichotomous or polychotomous) ? 

bmuthen posted on Monday, January 27, 2003  2:49 pm



Regarding correlating latent class indicators beyond what the classes explain, this can easily be done when the indicators are continuous but not categorical. For continuous, you do it in Overall when they are classinvariant. With categorical indicators you have to use a trick, such as making one of the indicators be an x variable with a direct effect from this new x to the other indicator. 

bmuthen posted on Monday, January 27, 2003  3:00 pm



Here are some answers to the 4 questions. (1) the latent class and the SEM parts of the model are analyzed jointly  i.e. ML estimates are determined simultaneously for the 2 parts. (2) No on the first question  it does not have anything to do with covariates. The posterior probabilities reflect the "exact" values of a person's class membership  allowing for this individual to be partially a member of all classes. This is the counterpart of "factor scores" for continuous factors. The numbers based on most likely class membership will only approximate numbers based on post probs if the classification is clear, i.e. mostly contains 0 or 1 post prob values. (3) I think you are referring to the latent class membership regression part of the model ("c on x"). If so, this is multinomial logistic regression for which I don't know that there is a wellestablished Rsquare measure (correct me if I am wrong). (4) You can do "c on x" and then let u be c indicators  that means that the latent class variable c is an intervening variable between x and u. But you cannot have a path model leading to c  that is for Version 3. 

Anonymous posted on Tuesday, January 28, 2003  11:47 am



First: regarding your answer to my original question (4): i.e., “…constructing SEMs where a LCMM is used as an intervening variable between a set of covariates and a categorical outcome variable …”. The recommendation you make – is this what is diagrammed on page 262 of the Mplus Users Guide (version 2) ? Second: regarding your answer to my original question (3): I was referring to the fact that there is a section on the Mplus output titled: “RSquare / Class 1 / Class 2…” ( “/” denotes a line break in the actual Mplus output) that is always left blank when I run LCMMs or SEMs including LCMMs. Is this feature for some reason not operable in v.2.12 ? As to including direct effects between indicators in a LVMM: I’ve attempted to do as you suggested above. Is this what you had in mind ?: For dichotomous indicator variables A, B, C, and D, with a T=4 LCMM and including indicator A in the Mplus script as an “X” variable (thus I write A as “AX” below)… %OVERALL% B on AX; c#1 on AX; c#2 on AX; c#3 on AX; %c#1% [B$1*1 C$1*.5 D$1*2]; %c#2% [B$1*1 C$1*.5 D$1*2]; %c#3% [B$1*1 C$1*.5 D$1*2]; %c#4% [B$1*1 C$1*.5 D$1*2]; My concerns with this approach are: (1) The method doesn’t provide loadings for variable AX, but rather the influence of AX on LCMM c# for class c#1 vs. c#4, c#2 vs. c#4, etc. I.e., I don’t see how to recover the LCMM probability loadings from these effects. Furthermore, in running the model above, Mplus doesn’t provide the usual ChiSq and LR ChiSq tests / probability loadings output when I specify the above model. Am I specifying the model correctly ? (2) Related to point (1): if I understand the Mplus language / operationalization correctly, doesn’t the LC variable “cause” indicators A, B, C, and D, in which case shouldn’t the 3rd through 5th lines of code be: “AX on c#1”, etc. ? (3) When I compare the Mplus results from those obtained from another software application that does explicitly allow the incorporation of direct effects between indicators, the loadings for variable B are off in 2 of the T=4 classes by 20 percentage points. Is this likely due to differences in ML algorithms vs. the way the model is specified between the two packages ? Thanks again for your feedback and suggestions. I look forward to v3.0. 

bmuthen posted on Tuesday, January 28, 2003  12:13 pm



On "First", yes. On "Second", please send output to Mplus support (support@statmodel.com). Regarding the "residual correlation", or direct effect, consider first a test. Moving A to be an x should give the same B, C, D estimates as in the original model  here you should not include "B on AX". If I see this correctly, this should work out the same because both models assume conditional independence of the 4 indicators given the latent classes. Regarding your questions, (1)  you estimate the same joint probability distribution for c and x, but you have to derive the conditional x  c prob's from it. (2) it's ok for cond indep reasons given above. (3) which other software are you using and are you sure you are working with the same number of parameters? the residual correlation has 1 single parameter, right? is the correlation specified as a random effect (cont's latent vble) or in some other way? You may prefer another Mplus approach. Specify a second latent class variable which influences A and B. How to handle 2 latent class variables and the resulting equality constraints is shown on p. 11 in paper #86 (see Mplus home page). 

Anonymous posted on Tuesday, March 11, 2003  7:57 am



Hi, is it possible to change the comparison class in a class analysis. For instance, in my LTA of smoking, the low or no smoker trajectory is my comparison class. Is it possible to have one of the other trajectories set as the comparison? 


Yes, you can do this by adjusting the starting values so that the class you want for the reference class is the last class. 

Nan S. Park posted on Wednesday, April 02, 2003  7:53 am



I'm working on latent class and latent profile analyses. I was asked from one of my dissertation committee if there were any measures regarding "reliability" (of class membership) in the mixture modeling procedures. Can someone help me out? Thanks. 


Classification quality can be assessed by looking at entropy and the classification table that is printed in the output. One can also use auxiliary variable to investigate the interpretability and usefulness of the classes. 

Nan S. Park posted on Wednesday, April 02, 2003  12:12 pm



Thanks for your reply. I have an additional question. When different starting values are used, the sizes of class and of entropy fluctuate. I wonder if entropy can be used to evaluate the extent to which classification is true and consistent with the datasomething analogous to "reliability" measures in classical test theory. 


If you get different classes with different starting values, you should select the solution with the largest loglikelihood value. 


In my experience, the LCAs do seem to be sensitive to starting values. I've written a SAS job to generate random starting values within a range. My usual procedure is to generate 10 or 20 sets and run MPlus from a batch file. I then look for convergence on the best solution. If I get 10 or 20 solutions, I conclude the model is underidentified. Does this seem like a reasonable approach? 


Yes. 

Wim Beyers posted on Wednesday, April 16, 2003  11:30 pm



Classes with growth functions of a different order, is that possible in Growth Mixture Modeling? I mean, suppose I have 4 repeated measures of let's say delinquency in a sample of adolescents, and my theory says that I have to distinguish at least three trajectory classes: Class 1 (1st order model of growth) having a low intercept only, so no growth at all (steady low); Class 2 (2nd order growth function) having an intercept and some slope, indicating linear growth in delinquency with age; and finally Class 3 (3rd order growth function) having an intercept, a linear slope and a quadratic component too, indicating accelerated growth at the end of the study (for instance)... Can I test these hypotheses using Growth Mixture Modeling in Mplus? It's possible in the semiparametric approach of Nagin (1999). Thanks for your help. 

bmuthen posted on Thursday, April 17, 2003  6:19 am



Yes, this is possible. For example, you specify a quadratic function in %Overall% and then you fix the parts you don't need in a given class. So the low, flat, intercept only class would have the linear and quadratic means and variances fixed at zero (and corresponding covariances). 

Wim Beyers posted on Thursday, April 17, 2003  7:43 am



Thanks a lot! I guessed this was the case... I just teached a short session of advanced LGC modeling, including Growth Mixture Modeling and Nagin's approach, and this was one of the seemingly differences between the two (and a question of one of the participants). However, I told the participants that fixing to 0 the parameters you don't want indeed was the trick to do it in Mplus. Thanks, Wim 

bmuthen posted on Thursday, April 17, 2003  8:18 am



There are important differences between Nagin's approach and that in Mplus. For example, Nagin's approach does not allow withinclass variation, i.e. random effect variation of growth factors. This advantage of Mplus is important because you may arrive at the wrong classes if you postulate zero withinclass variation. Also, Mplus allows this variation to differ across classes which is also critical. If you want me to elaborate on this and other advantages of Mplus over Nagin's approach, please let me know. 

Anonymous posted on Monday, November 10, 2003  9:33 am



In a growth mixture model, I looked at continuous predictors of class membership. I computed odds ratios for two different continuous predictors, in separate models. Is there a way to standardize the odds ratios so that I could compare the effects of the two different predictors? 


You could standardize the raw coefficients by multiplying them by their standard deviations andthen compute the odds ratios. 

Anonymous posted on Monday, November 17, 2003  11:32 am



I understand the the estimates given in the output for these predictors (C#1 ON PREDICTOR) are given in terms of estimated value and standard error  do I get standard deviation by using the number of observations as n and the regular formula sd=SEM * square root(n) ??? 

bmuthen posted on Monday, November 17, 2003  11:45 am



The standard error (SE) is the term commonly used for the standard deviation (SD) of a parameter estimate. Perhaps you are thinking of the relationship between SE and SD for a sample mean, SE = SD/sqrt(n) ? That thinking should not be used here. For the parameter estimates SE=SD. 


I am running a GGMM Monte Carlo experiment. I want to compare model fit assessments averaged over the repetions. I noticed that tech11 and tech13 output fit information for each repetition. Is there a way to have Mplus summarize tech11? tech13? 


No, not currently. 

Anonymous posted on Tuesday, November 18, 2003  11:25 am



Back to standardizing odds ratios: Sorry to be so dense. I was looking somewhere else to understand standardizing these odds ratios and it seems that what I want is to standardize on the predictor  in that case, can I multiple the coefficient (printed in Mplus output following C#1 on PREDVAR) by the standard deviation of PREDVAR, that I get from SAS? Then I would think the interpretation would be for every one standard deviation change in PREDVAR, the change in class membership is equal to the calculated standardized odds ratio. 


The standardization sounds correct. The change in odds of being in a certain class relative to the last class is calculated by the odds using the standardized logit slope calculated by multiplying the raw logit slope by the s.d. of predvar. 

Anonymous posted on Thursday, March 04, 2004  8:57 am



Back to the classification table and entropy discussion. Forgive me if this sounds a bit redundant but I wanted to make sure that I was correctly interpreting this discussion. When you refer to “classification table” above, do you mean the portion of the output entitled “Classification of Individuals Based on Their Most Likely Class Membership,” the output entitled “Final Class Counts and Proportions of Total Sample Size,” or both? I understand that the more dissimilar the values are between these two, the poorer classification quality is and that entropy will be lower. If this is correct, is it necessary to interpret the classification table if I interpret entropy? If I do need to interpret the classification table, how much difference is cause for concern? Finally, can you clarify what you mean when you suggest that auxiliary variables be used to determine the interpretability and usefulness of the classes (starting with what they are)? I understand that there may be no hard and fast rules for some of these questions, but your insights would be appreciated. 

bmuthen posted on Thursday, March 04, 2004  6:16 pm



The classification table refers to the Classification of Individuals Based On Their Most Likely Class Membership. Entropy is a single number that summarizes the posterior probability infotmation of that table. The table gives additional information about which classes are less distinguishable. How high a posterior probability average in an offdiagonal cell is a cause for concern is subjective. 0.20 seems too high, while 0.05 might be ok. Also, the too high values may refer to classes that are not important to distinguish betweeen. The value of auxiliary variables is discussed in the Muthen 2003 article in Psych Methods given on the Mplus home page. 

Anonymous posted on Tuesday, August 16, 2005  8:19 am



Hi, my question concerns the loglikelihood H0 value in the Mplus outputfile. I used latent mixture modeling and ran it for several data samples. Shouldn´t the loglikelihood H0 value always increase (smaller negative value) with increasing number of classes? I am asking because in some instances the loglikelihood value is smaller (larger negative value) for a 4 class solution compared to the three class solution. Do you know of any such cases or does this indicate that something is wrong? How would I typically interpret this? Thanks for your input! 


I have a finite mixture regression model with 2 DVs. For example's sake, let's say that the three class solution is the best. My Model command set up looks something like: %OVERALL% Y1 Y2 = X1 X2 X3 X4 X5 C1 C2 c#1 ON C1 C2; c#2 ON C1 C2; %C#2% Y1 Y2 ON X1 X2 X3 X4 X5; Y1; Y2; Y1 WITH Y2; %C#3% Y1 Y2 on X1 X2 X3 X4 X5; Y1; Y2; Y1 WITH Y2;  If I want to test the difference in the slopes between classes using a chisquare difference test, what should I do? I've tried a couple different approaches that I thought made sense but keep getting different loglikelihood values, so I'm afraid I might be doing something wrong. I've tried to follow the example in the book, but having the second DV makes it a little confusing. If I split the regression command lines out and do something like: %C#2% Y1 ON X1 x2 x3 x4 x5; Y2 ON X1(1) X2 X3 X4 X5; %c#3% Y1 ON X1 X2 X3 X4 X5; Y2 ON X1(1) X2 X3 X4 X5; Is this constraining the slopes for y2 on x1 to be equal for classes 2 and 3? I've also tried removing X1 from the %C#2% regression equation ... %C#2% Y1 ON x2 x3 x4 x5; Y2 on x1 x2 x3 x4 x5; y1; y2; y1 with y2; Isn't this model now constraining the Y2>X1 slope for classes 1 and 2 to be equal? Isn't this effectively the same thing? Are the differences I'm seeing simply a matter of different starting values for each run or am I entering the wrong syntax? 


In the following construction, I believe that everything after (1) is ignored. %C#2% Y1 ON X1 x2 x3 x4 x5; Y2 ON X1(1) X2 X3 X4 X5; %c#3% Y1 ON X1 X2 X3 X4 X5; Y2 ON X1(1) X2 X3 X4 X5; It should be: %C#2% Y1 ON X1 x2 x3 x4 x5; Y2 ON X1(1) X2 X3 X4 X5; %c#3% Y1 ON X1 X2 X3 X4 X5; Y2 ON X1(1) X2 X3 X4 X5; If this does not solve your problem, send the outputs and your license number to support@statmodel.com. Include TECH1 in these outputs. 


I am conducting growth curve analyses and the predictors of the slopes and intercepts are all dichotomous variables. I want to examine interactions between the predictors, however, when I attempt to do this using a multigroup analysis, the covariance coverage is poor for one of the groups. My understanding is that for interactions with one or more dichotomous variables, the preferred approach is to use multigroup analysis. I think that I could use the difference between the 2LL in nested mixture models to examine interactions. Is there a detriment to using this approach? 

bmuthen posted on Tuesday, October 18, 2005  6:47 pm



You can simplify your model by using MIMIC  CFA with covariates  instead of multi group modeling. To capture the interaction, just multiply the x variables using DEFINE. In the MIMIC the low coverage doesn't hurt as much. 

Thomas Olino posted on Wednesday, October 19, 2005  4:50 am



If I were to use MIMICCFA with covariates and include the interaction in the model, how would I base the inclusion of the interaction? Would it be based on the significance of the association between the interaction and the slope and/or intercept? Or, would it be based on improvement of model fit? Although, they should be closely related. 


I think the most straightforward thing to look at is the z value for the interaction parameter, the ratio of the parameter estimate to its standard error. 

Kat posted on Thursday, January 12, 2006  5:07 am



HI I have carried out LCA with covariates which yielded 4 classes, but now wish to specify staring values so as to change the second class to be the reference class, i.e. the last class which i can then compare the other 3 classes to. However, I am somewhat unsure how to obtain and specify these starting values from the output. I would really appreciate any advice on this. 


You use the ending values for class 4 of the first run as starting values for class 2 of the second run. Example 7.8 shows an LCA with userspecified starting values. 


I am using a growth mixture model, based on number of attention problems in children at 4 time points. My model is that the latent trajectory class membership predicts a continuous outcome, number of alcohol problems (measured concurrently with the last time point in the growth model). I would also like to test whether the relationship of class membership and alcohol problems is mediated by another variable. Following a March 12, 2001 posting on this website, I thought that this would be the correct syntax : alcprb on ssrt; in the Overall part of the model [alcprb]; in each classspecific part of the model. I tested for significant differences of alcprb intercept by comparing nested models where I allowed [alcprb] to be different in each class and a model in which they are forced equal in each class. Does this seem right? Thanks! 


Yes. 


Checking my understanding of the mediation modeling. If I have [alcprb] in each class and run the model without "alcprb on ssrt", I look at the means of alcprb in each class and test for differences to test the direct effect of class membership on alcprb. When I put "alcprb on SSRT" in OVERALL, and [alcprb] in each class, now I have intercepts instead of means and if there are still significant differences between classes, that tells me that there isn't full mediation of the effect of class membership on alcprb by SSRT. Is there a way to test for partial mediation? I would like to compare alcprb in each class in the two models, but in one case this is a mean and in the other case it is an intercept, so I'm not sure how to compare these. Is there an example of using this in a paper? Thanks, Jennie 


In the model with [alcprb] in each class and alcprob on ssrt, the [alcprb] part is a "direct effect" from the latent class variable c to the distal (as you say it is also an "intercept", not a mean). I assume here that c also influences ssrt. I see full mediation as taking place if there is no direct effect and that is tested by classinvariance of [alcprob] in the model I stated. So that test seems like all you need. There are also possibilites in this model to also test for classinvariance means, expressing these as functions of model parameters, using Model constraint. 

Irene Biza posted on Friday, June 02, 2006  3:45 am



I am a PhD student and my research is in Education of Mathematics. I have a questionnaire of about 25 items labeled with 0 and 1 (as false and correct) that has been administered to 182 students. I made the following LCA with this data: classes = c(4); categorical= q32 q33 q34 q35 q36 q37 q38 q39 q310 q311 q312 q313 q314 q44 q45 q47 q48 q49 q410 q411 q412 q413 q415 q52 q53; ANALYSIS: TYPE IS mixture; The less BIC is at 3 classes, the less AIC, ABIC are at 8 classes and the less LoMendellRubin Adjusted LRT Test pvalue (= 0.0002) is at 3 classes (versus 2) and the biggest is at 8classes (versus 7) is 0.83 (what is the acceptable value for this pvalue?). The problem is that it is not so clear to me what indices I could trust to test if my model fits and of course if a can do LCA with this sample size and this number of items. I also did a confirmatory LCA with very well (according my theory) classification, but also I do not know how to support the fact that this model is better than others: USEVARIABLES ARE q32 q33 q36 q310 q311 q38 q314; classes = c2C(4) c4(2); categorical= q32 q33 q36 q310 q311 q38 q314; MODEL: %OVERALL% c4#1 with c2C#1; MODEL c2C: %c2C#1% [q33$1*15 q32$1*15 q314$1*3]; %c2C#2% [q33$1*15 q32$1*15 q314$1]; %c2C#3% [q33$1*15 q32$*1.2 q38$*2 q311$1]; %c2C#4% [q33$1*15 q32$*1.2 q38$*3 q311$1]; MODEL c4: %c4#1% [q310$1 q36$1]; %c4#2% [q310$1 q36$1]; ANALYSIS: TYPE IS mixture; PARAMETERIZATION = LOGLINEAR; Please if you think that this kind of analysis it is not adequate for my data I am open to any other ideas concerning data analysis. Thank you in advance! Irene 


The issue with a small sample size is power. You should not have computational problems in your situation. The pvalue to look for with LoMendellRubin is a value greater than .05. See the following paper for suggestions about how to decide on the number of classes: Muthén, B. (2004). Latent variable analysis: Growth mixture modeling and related techniques for longitudinal data. In D. Kaplan (ed.), Handbook of quantitative methodology for the social sciences (pp. 345368). Newbury Park, CA: Sage Publications. You can download this paper from the website. See Recent Papers. 


For Tech 14, I got the message: WARNING: THE BEST LOGLIKELIHOOD VALUE WAS NOT REPLICATED IN 2 OUT OF 2 BOOTSTRAP DRAWS. THE PVALUE MAY NOT BE TRUSTWORTHY DUE TO LOCAL MAXIMA. INCREASE THE NUMBER OF BOOTSTRAP LRT RANDOM STARTS. How do I do this? I already have 100 10 starts. 

Irene Biza posted on Monday, June 05, 2006  9:24 am



Thank you for the help but I really didn’t manage to understand which the best classification in my analysis is. I will be more exact regarding my results to help you to help me! My LCA (25 items and 182 individuals) gives the following results: 2 classes: AIC=4076, BIC=4239, ABIC=4078 3 classes: AIC=3763, BIC=4010, ABIC=3766, LRT Test pvalue=0,0002 4 classes: AIC=3683, BIC=4013, ABIC=3687, LRT Test pvalue=0,1640 5 classes: AIC=3601, BIC=4014, ABIC=3606, LRT Test pvalue=0,0648 6 classes: AIC=3572, BIC=4069, ABIC=3578, LRT Test pvalue=0,2585 7 classes: AIC=3549, BIC=4129, ABIC=3556, LRT Test pvalue=0,30 8 classes: AIC=3545, BIC=4209, ABIC=3553, LRT Test pvalue=0,83 9 classes: AIC=3589, BIC=4335, ABIC=3597, LRT Test pvalue=0,39 The classification quality (entropy>0.97) is very good in all cases. According to the indices and the LRT Test pvalue which do you think is the best classification? 


We have added some guidelines for using TECH14 and some new options to use with TECH14. These are described in the Version 4.1 Mplus User's Guide which is on the website. Check the index for TECH14 to find the guidelines and see also the LRTSTARTS and LRTBOOTSTRAP options. 


For Irene: You need to make the decision on the number of classes yourself. You should also consider which classes make sense theoretically and substantively. 

Irene Biza posted on Tuesday, June 06, 2006  2:28 am



That means that any number of classes is acceptable if it makes sense theoretically? For example, the 3 classes are great for me but the LRT Test pvalue is too low. Also the 4 classes are interpretable but I have neither the less AIC nor the less BIC. Is it valid to accept the one or the other classification just by saying that it makes sense and what will be my arguments from the statistical methodology point of view? 


No, there are guidelines that are discussed in the paper I referred you to and that I mentioned earlier. For example, a low BIC, a pvalue greater than .05 for the LRT test, a high loglikelihood, etc. I think you are interpreting the LRT pvalue incorrectly. For 4 classes, the pvalue is greater than .05. This points to the 3class solution. The interpretation of the pvalue for the LRT is described in the user's guide. In addition, the classes should make sense substantively. 

Irene Biza posted on Friday, June 09, 2006  4:31 am



Thank you, I think that I have started to understand. And one more question concerning Confirmatory Latent Class Analysis. I have decided about the number of classes for each one of my factors and I want to make my model better keeping constant the number of classes. What am I looking to understand if my model is getting better (except of course the fact that classes should make sense)? The bigger Loglikelihood is an adequate criterion or there is something more? 


If you are deciding on the number of classes, the same criteria are used: high loklikelihood, low BIC, TECH11, TECH14, etc. If you have settled on the number of classes and are testing nested models, you can do difference testing using the loglikelihood. See the section in Chapter 13 on testing measurement invariance. It also describes using the loglikelihood to test nested models. 


I am now doing multigroup analysis using mixture modelling. Enjoyed the workshop in Netherland this June very much! May I have the reference for this please? Many thanks. "Bengt O. Muthen posted on Monday, January 24, 2000  10:29 am In mixture models, a chisquare test is not provided and therefore the chisquare difference test is computed as 2*d where d is the difference between the loglikelihood values from the two models being compared. The degrees of freedom difference is computed as the difference in the number of parameters." 


You can use the book by McLachlan & Peel, listed in the reference section of your June Handout. 


Fantastic! Many thanks! 


I am conducting a CFA mixture model using customer data from two hotel chains. In hotel A, allowing means and variances to differ across classes, a four class solution emerged as optimal, with excellent interpretability. In trying to run the same model for the hotel B sample, I am having problems getting a 5class model to converge, even after increasing the number of starts (1000+) and stiterations (20). I've also tried specifying starting values with little success (although I admit I'm not 100% confident I am doing this correctly). Given this lack of convergence for the 5class model in the hotel B sample, can I safely draw any inferences regarding the superiority of the fourclass solution? If so, is their a published citation for this? Best Regards, George Deitz 


It sounds like a fiveclass solution with classvarying means and variances might be too much for the hotel B sample. I would try holding the variances equal as a first step. If you are unsure about starting values, I would get rid of them as bad starting values can contribute to convergence problems. 


The hotel B model for run 5classes with only means freed to vary, if I have a large number of starts. However, that begs the question what I should do with the Hotel A sample. Is a model with means and variances freed to vary across classes "better" than one in which only means are allowed to vary? The structure of the classes and the # of members in each class changes substantially, however the fourclass solution is optimal in either case. 


Why do you think that the same model should fit the data from the two different hotels? 


Hi Linda, Quick question on Tech 14 and PARAMETRIC BOOTSTRAPPED LIKELIHOOD RATIO TEST: If the bootstrapped LRT is < .05 but the VLMRLRT is > .05, which one should we consider for the GFI? I would assume that we need to consider this discrepancy in the context of the other GFIs (i.e., AIC, BIC, entropy, etc). Maybe I'm not running the LRTBOOTSTRAP correctly because I always end up with p values that are < .05 for the parametric boostrapped LRT even when the VLMRLRT is as high as .85. 


If you are not using Version 5, please download it from Support  Mplus Updates. There have been some changes. I would consider all fit information. TECH11 and TECH14 should not be that different. See the Nylund dissertation on the website. She found TECH14 performed better than TECH11 in some cases. 


I have conducted a CFA mixture model with 4 latent classes. I used the AUXILIARY command to test mean differences across the classes for covariates not included in the analysis. My understanding is that this command allows for equality tests using the posterior probability imputations. Is there a way to test the mean differences for these variables between pairs of the 4 classes? I want to know which classes are significantly different from one another for each varibiable (e.g., age, substance use, offending). 


You can't currently do this is Mplus but it will be added in the next update. 


I don't mean to be a pest, but do you have an estimated date when this update will be available? 


Sometime in April barring any unforeseen events. 


Thank you, Linda, for your promising words regarding the update you referenced in your 2/21/08, 10:18AM reply to Jennifer Wareham. We plan to hold up completion of our paper until early Aprilbarring any unforeseen events affecting this Mplus update. As ever, best wishes to you and Bengt!! Richard Dembo 

Julie Mount posted on Thursday, April 17, 2008  3:19 am



I have a 4 class LCA model and I'm interested in exploring the association between membership of each of the 4 classes and a large number of covariates. I'd like to use a stepwise method but don't think this is currently available for multinomial logistic regression within Mplus. I'd thought of using the probabilities of class membership for regression modelling outside of the LCA model but I'm not sure that this is valid (as would assume the same latent class structure across all levels of all covariates?). If it is valid to do this, I'm not keen to assign cases to the class for which they have highest probability for stepwise logistic regression analyses as would lose the uncertainty around class membership. Would it be reasonable to perform stepwise multiple linear regressions with probability of membership in class c as an outcome? Perhaps after transformation of the probabilities to adjust for nonnormal distribution? My sense is no but not entirely sure why. . . 


No, stepwise regression is not currently included in Mplus. You can use the fractional class membership in a regression analysis with a nominal observed dependent variable using a setup like Variable: names are u1u10 x cprob1 cprob2 d; usevar = x cprob1 cprob2; classes = c(2); training = cprob1 cprob2 (probabilities); Analysis: type = mixture; Model: %overall% c on x; With high entropy, this wouldn't be too bad in terms of point estimates for c on x. But the SEs will be a bit off (too low) given that c is treated as an observed rather than inferred variable. Version 5.1 will have a way to investigate potential covariates using c on x regression via "pseudoclass draws". 


Thank you for the helpful response. I'm planning use the extension for covariate analysis in version 5.1 but had a question about this. In version 5 when I examine the model structure by looking at the estimated probabilities of endorsing items the model structure seems to change when I include certain covariates. This could be because I drop cases with missing data but I've been advised that it could also be a more fundamental problem related to marginal homogeneity and the assumption that the measurement structure is similar across all levels of a covariate. Will the new method of investigating covariates be robust to these types of issues in that the covariate is not actually playing a part in the modelfitting process? Thanks for any advice you can give! 


If things change when you add covariates, it probably indicates the need for direct effects from the covariates to the latent class indicators which is related to measurement invariance. You won't see these issues when using the new feature to decide on a set of covariates but once you include them in the model you will. The new feature is meant to help determine which covariates to include. 


I have several questions regarding covariates in a mixture model (LCGA). First, does the auxiliary r option available in mplus 5.1 produce the same outcome as using the save=cprobabilities option and doing a multinomial logistic regression with my covariates and these saved class probabilites outside mplus (e. g. SPSS)? Second, in my model the structure is pretty looking the same with covariates, but nevertheless classes differ with regard to the number of people belonging to them. I had a hard time to solve this problem. starting values from the unconditional model didn't help. Then I fixed the means derived from the unconditional model in my condtional model and class sizes looked nearly the same compared to the uncondtional model. But I've also heard, that you don't recommend such a procedure, but can't find it here in the forum. Could you please state again why such an approach is not recommended? 


In Addition: The only solution I see at the moment is: to build up the best fitting class model with covariates where I have no missings (treatment and gender) instead of using an uncondtional model and then to save class probabilities and to compute multinomial logistic regressions in SPSS with imputed data i.e. with the rest of my covariates, since mplus isn't able to use auxiliary r in conjunction with imputation. Would that be o.k. in your opinion? 


Auxiliary r is not the same as using most likely class membership. The change in structure when covariates are added is most likely due to the need for direct effects from the covariates to the outcomes. Or you could just include the covariates in the model which is what you will ultimately do and add direct effects as needed. 


Thank's. And you wouldn't recommend using most likely class membership in further logistic regressions? There are so many possible direct effects in my model. How to decide on them? Is there any procedure? Using starting values from the unconditional model (means and thresholds) also stabilizes class memberships in the conditional model. Would that be o.k.? 


sorry,forgot that: why should one not fix the thresholds and means of the classes in the conditional model on the values derived from the unconditonal model? Class membership stabilizes even better as with using only starting values from the unconditional model. A short answer would be great! 


I would not use most likely class membership. I would look at modification indices (MODINDICES option of the OUTPUT command). To obtain the correct modification indices if you have four outcomes, y1y4, and three covriates, x1x3, add the following to the MODEL command: y1y4 ON x1x3@0; I do not think starting values will alleviate the problem. Fixing parameters to specified values does not allow the proper solution to be found. 


I also thought of that way but since I'm using numerical integration and imputation modindices are not available. What would you do, facing that conditions? 


Then do one dependent variable at a time, for example, y ON x1x5; 

Scott posted on Wednesday, May 21, 2008  5:11 am



Within growth mixture modeling with a binary mixture indicator (e.g., sexmale vs. female), how does one interpret the "LATENT CLASS ODDS RATIO RESULTS" in the output? For example, the following: Latent Class 1 Compared to Latent Class 2 SEX Category > 1 22.450 16.058 1.398 Does one interpret this as the odds of males (assuming females='1' & males='2') being in LC 1 is 22 times more likely than males being in LC2? If so, how does one acquire the odds ratio for females? 


The odds ratio 22 = [ P(male)/P(female)c1 ] / [P(male)/P(female)c2 ] so the male to female odds is 22 times higher in c1 than in c2. If you want the odds ratio for P(female)/P(male) you can either rescore gender as males=1, females=2, or you can use your output and compute by the formulas: P(u=1c) = P(malec) = 1/(1+exp(threshold)) and get P(femalec) = 1P(malec). Then insert into the odds ratio formula above where male and female have been switched. 

anonymous posted on Wednesday, July 02, 2008  4:36 pm



We’ve conducted LCA using survey data from high school and middle school students. In order to get meaningful classes, we stratified by sex and school level. We have different numbers of classes in each strata, but there are several classes that are parallel in each of the strata. We have been looking at emotional outcomes within strata and now we would like to compare the parallel classes between the different strata (e.g. high school boys vs middle school boys, high school girls vs high school boys) by constraining sex or school level. How can we do this when we have 4 classes in one strata and 6 classes in another? Thanks 


If you have 2 groups with different number of latent classes but you want to check if some of the classes are the same, you can let group be represented by a new latent class variable using the Knownclass option. So then you have 2 latent class variables  a grouping latent class variable and your substantive latent class variable. Your model can then constrain the thresholds for the similar classes of the substantive latent class variable across the 2 categories of the grouping latent class variable. The UG has examples of 2 latent class variables. 

F Lamers posted on Wednesday, August 06, 2008  7:42 am



I have some questions regarding LCA. I have a threeclass model with 6 binary and 4 nominal indicators. I am interested in the discriminative power of each indicator. Is it possible to get the explained variance or something similar for each indicator? Or should I just use the odd ratios? My second question is regarding the odds ratios. In the output, the odds ratios are followed by standard errors. I assume that these are not the logit SE’s for the log odds? Is there a way to get the logit SE for the log odds in the output? 


I would look at odds ratios. The standard errors following the odds ratios are the standard errors of the odds ratios. The standard errors of the log odds are found in the regular results where the log odds are found. 

linda beck posted on Thursday, August 07, 2008  4:42 am



finally I've found two classes (covariates included) in twopart mixture growth modeling. Unfortunately the entropy (on the output) looks not so good: .68, but the classification matrix seems o.k.: .88 .12 .09 .91 Would this be a sufficient classification quality from your point of view? Since entropy is often not so high, when having few groups. In other variations of the model with two groups I found a similar classification matrix (slightly better values) but a much higher entropy at .80. What could be a reason? regards linda 

F Lamers posted on Thursday, August 07, 2008  7:59 am



Linda, thanks for your quick response. I will use the odds ratios then. I have one more question. For the nominal indicators no odds ratios are given. I have calculated probabilities from the logits for the nominal variables. I noticed that the probabilities I calculated are exactly the same as in an LCA in which I insert the nominal indicators as categorical. Also, classification of cases and BIC values etcetera are exactly the same. Can I assume that the nominal indicators can be considered to be ordinal variables? And can I use the odds ratios + 95%CI intervals from the LCA with the indicators as categorical? It would save me a lot of time in calculating odd ratios... 


For Linda: The entropy is not that important if you are not planning to classify people using their most likely class membership. If you are working with the model and regressing c on x for example, it should not be a problem. Less wellfitting models can have better entropy because they may allow no within class variance. 


For Lamers: Please send your two outputs specifying the indicators as (1) nominal, and (2) categorical to support@statmodel.com, as well as your license number. 


I am running a LCA and would like to create an SPSS file that contains the class membership and case id number for each case in my file. I have two questions related to this: 1) I have used the following command : Savedata: save=cprob; However, when I open the file in SPSS two of my cases are unassigned to a class (which doesn't appear to be the case in MPLUS). What is going on? 2) I would also like to save the id number for each of the cases so that I can match files in SPSS. Is there some way to specify that I also want to save the case ID number in MPLUS? Thank you in advance for the assistance. 


To save the id number for each case, use the IDVARIABLE option of the VARIABLE command. You would need to contact SPSS to see why the data are not being read correctly in that program. The file that is saved is not an SPSS save file. It is an ASCII file. 


Happy inauguration Day! I am trying to do a split sample crossvalidation of a mixture model solution. How do I determine if the model replicated successfully in the validation sample (other than an eyeball test of the closeness of the point estimates)? I considered a multiple group model in which the split halves are the groups, holding the parameters equal across groups in one run and freely estimating them in the second run then calculating the 2*d test of significance. Is there another way? The original run had a *very* high estimation load due to covariates and Poisson and categorical distributions in the latent class indicator variables. I am afraid that adding the complexity of multiple groups on top of that will be too much. Thanks muchly! Allison 


I would not do the multiple group comparison. I would see if the results look the same as far as class profiles, relationships to covariates, and interpretation. 


Hi. I am running a LPA. With some of my models, the largest class ends up being first and I know this is a problem because that is the one that is excluded for k v. k1 class solutions. What function can I include in my model to ensure that my largest class is not the first class? 


You can use the ending values of the analysis as starting values for the last class in a subsequent analysis. 


Greetings. Thanks for your response. Is it necessary to include the K1STARTS function in my script in order to do this? Also, forgive my ignorance, but I don't think the ending values are provided in my output. Do I have to include a particular TECH to get them? Finally, I am using LRTSTARTS = 10 5 500 200; where do I specify the ending values? Many thanks for your help! 


No K1STARTS is not required. The ending values are under Model Results. You specify the ending values in the MODEL command. If you have further questions on this topic, please send them along with your license number to support@statmodel.com. 

lisa ibanez posted on Friday, February 27, 2009  11:32 am



Hi, I am currently running a CFA and Latent path analysis mixture model with two classes. I am confused by the fact that in the mixture output both classes have all the same loading values. I have pasted my syntax below. What should I do to figure out what the uniques values of each class are? CFA USEVARIABLES ARE CANX CSASC CMASC ; CLASSES = C(2); Missing are all(999); ANALYSIS: TYPE=MIXTURE MODEL: %OVERALL% Cpath BY CANX CSASC CMASC; %C#1% [Cpath*1]; Output: TECH8 TECH11 LVPA USEVARIABLES ARE POCD PDEP PANX CANX CSASC CMASC ; CLASSES = C(2); Missing are all(999); ANALYSIS: TYPE=MIXTURE MODEL: %OVERALL% Cpath BY CANX CSASC CMASC; Ppath BY POCD PANX PDEP; Cpath ON Ppath; %C#1% [Cpath*1 Ppath]; Cpath ON Ppath; Output: TECH8 TECH11 


The default is to hold the loadings equal across classes. Mention them in the classspecific part of the MODEL command to relax this constraint. 


The MPlus output does not provide G2 (Likelihood ratio chisquare) in the output. What function can be used to specify its inclusion? Thanks in advance! 


Mplus does give this chisquare where it is possible, namely for models where the means, variances and covariances are the sufficient statistics. So not for mixtures, categorical outcomes with ML, or multilevel random slopes models. 


I would like to compare the estimated conditional probability values for a given response on a multinomial categorical variable across latent classes. I tried doing this by comparing the confidence intervals for the threshold values across classes and found that the thresholds are significantly different from each other. However, when I convert the thresholds to probability scale, I get the same probability across classes. How do I calculate correct standard errors for the estimates in probability scale? This problem has the added wrinkle of having a covariate effect on the categorical class indicator. I intend to select meaningful values of the covariate in the calculation of the probability of response. 


You can use MODEL CONSTRAINT to specify new parameters that represent the probabilities and use MODEL TEST to test if they are the same. 


Hello, Concerning the auxiliary (r) option  would you suggest using it for a wide array of covariates, then including, in a LCA, only those that meet a certain stat. significance? My current large set of covariates is making it hard to obtain distinct classes with replicated log liks. Thank you 


I would take 3 steps. Using a large set of covariates based on substantive theory, I would in step 1 start with aux(e) to check that a candidate covariate has interesting mean differences across classes. In step 2 I would use the set of covariates found of interest in step 1 and use aux(r) to reduce that set. In step 3 I would include the further reduced set of covariates in the model. 

Sean F posted on Friday, November 06, 2009  10:36 am



I apologize in advance if this question has already been answered and I missed it. I have conducted a LCGA analysis that has yielded a 5 class solution. I have also included a grouping variable predicting class. In addition to the multinomial logistic regression output that Mplus provides (e.g., group predicting membership in Class 1 versus Class 2), is it possible to compare the overall effect of group assignment on a particular class versus all other classes combined (e.g.,group predicting membership in Class 1 versus membership in any other class)? Thank you in advance for your help. 


You can use Model Constraint to express the probability of any of the latent class categories. Which means that you can look at the estimated odds of being in one class relative to being in any of the other classes. 


I had a similar inquiry, however, extended to a model with a knownclass and latent class variable. I wanted to examine the association between a predictor variable and the latent class variable for each level of the knownclass variable. MODEL: %OVERALL% i s  y1@0 y2@1 y3@2 y4@3 y5@4 y6@5 c ON KC; c#1 c#2 c#3 ON x1x4; MODEL KC: %KC#1% c#1 c#2 c#3 ON x1x4; %KC#2% c#1 c#2 c#3 ON x1x4; I thought this would produce some gender specific output, however, I didn't see it. Any thoughts would be greatly appreciated! 


Please send the full output and your license number to support@statmodel.com. 

Anonymous posted on Friday, April 23, 2010  10:50 am



I recently came across an article referring to latent growth mixture models using a zeroinflated Poisson. If you have count data with several zeros do you need to use ZIP? I was under the impression these individuals would be collapsed into 1 class so this would not be necessary, am I wrong? 


You don't necessarily need inflation. You can run the model both ways and see if including inflation improves to model fit by looking at BIC for example. 


I am performing an LCA with 7 continuous indicators representing unique (but potentially correlated) personality domains. I also have a binary covariate (sample). The BIC suggests a 2class solution is best. When examining this solution, I noticed a few strange things in the output that I cannot explain: 1. The output provides an odds ratio examining the effect of 'sample' on class membership. In my solution, class 1 consists of subjects from both samples, but class 2 contains subjects from sample 2 only. Why did it provide me with an OR instead of a warning/error message? What does it mean in this case? 2. I want to know whether the classes differ in their mean scores across the 7 indicators. I used the MODEL TEST command to fix the mean personality score of class 1 to the mean of class 2 for each of the 7 domains one at a time. This worked for 6 of them, but provided no results whatsoever for the 7th one. I'm not sure why. Of the 6 that did work, the results were highly significant (p<0.0001 in each case). However plots suggest that the groups are quite similar across 3 of the 7 dimensions. I then tried MODEL CONSTRAINT instead. I compared these results to the unrestricted model using LRTs and these findings made more sense. I am not sure why these two sets of findings differ so dramatically and I do not know which set of results I should trust. Any help you can provide is greatly appreciated! 


Please send the outputs and your license number to support@statmodel.com. It is not clear what you are seeing. Note that MODEL TEST is not used to constrain parameters. It computes a Wald test. MODEL CONSTRAINT is. 


Hello: I have recently read that an index of dissimilarity (D) provides an additional indicator of model fit for comparing various class solutions in LCA in addition to other model selection criteria. Is it possible to request this in Mplus? Or calculate it from the output? Many thanks. 


I am not familiar with the index. It is not available in Mplus. 

Chester Kam posted on Thursday, July 08, 2010  2:53 pm



When I read the Mplus manual (p.654), it says that TECH14 (Bootstrapping) "compares the estimated model to a model with one less class than the estimated model... The model with one less class is obtained by deleting the FIRST(capitalization added) class in the estimated model. Because of this... it is recommended when using starting values that they be chosen so that the last class is the largest class." Let's say I am comparing a 5class solution with a 6class solution. I wonder if I need to specify the first class as the new class found in the 6class solution, so that TECH14 can compare whether the addition of that particular new class is necessary? Thanks so much! Chester 

Chester Kam posted on Thursday, July 08, 2010  3:02 pm



Just to supplement my previuos post: Do I need to do anything extra, besides putting "TECH14" in the output option, to ask Mplus to conduct bootstrapping model comparison? Thanks again! Chester 


No, just put TECH14 in the OUTPUT command. 


Hi Linda and Bengt, I'm modeling an LCA of continuousish health indicators and want to use cluster to predict a hazard of death. I'm also controlling on age: cluster membership and hazard. Age is assumed to be constant in its effects on death across classes. My code looks like this: USEVARIABLES ARE disg82 disg84 disg89 disg94 disg99 mortw2 mortw3 mortw4 mortw5 age82; CATEGORICAL ARE mortw2 mortw3 mortw4 mortw5; MISSING IS .; CLASSES = c (6); ANALYSIS: TYPE = MIXTURE MISSING; ALGORITHM = INTEGRATION; STARTS = 200 5; STITERATIONS = 20; MODEL: %OVERALL% f BY mortw2mortw5@1; f ON age82 (1); c#1 c#2 c#3 c#4 c#5 ON age82; f ON c#1 c#2 c#3 c#4 c#5; f@0 My first question is (1) whether my code is correct and in particular regarding the clusters predicting the hazard. I do not get effects of f on c#1, etc. in the output but rather an intercept of f for each cluster except the referrent (c#6). Do I treat these intercepts as effects of each c on f? When I exponentiate them they produce viable values for hazard odds ratios but I want to make sure I haven't interpreted these or coded them incorrectly. 


My second question is clarification on how Mplus treats the clusters as outcomes. In my output I get effects listed as "c#1 ON age82", etc. Am I correct that this is a logistic regression coefficient that refers to age's effect on c#1, etc. with the last cluster (c#6) as the reference group? I'm used to working with another software and I want to make sure I'm correct. Thanks! Miles 


1. You are correct. 2. You are correct. Just remove f ON c#1 c#2 c#3 c#4 c#5; from the MODEL command. 


Thanks Linda! Miles 


Hello! I am trying to estimate a latent class analysis with one continous covariate. Now I want to investiage whether there is differential item functioning. Can I can do this using Mplus? The model is: Variable: Names=u1 u2 u3 u4 age; Categorical=u1 u2 u3 u4; Classes= c(2); Analysis:Type=Mixture missing; Algorithm=Integration; Starts = 50 10; Model: %overall% c#1 on age; 


Yes, differential item functioning can be seen by regressing a latent class indicator on a covariate. 


Thank you very much for your fast answer! I have another question regarding the same model, now with 4 classes. I added another couple of covariates and I am investigating if they have an influence on the definition of the latent classes. The result is that some covariates are only significant predictors for one class, some for more than one and some for none. How do I determine the covariates which should stay in the model. Can I remove only those which do not have an influence in any class? Should I use backward selection? 


I would keep all of them  at least all that are significant for some class  and simply report the results, some significant and some not. 


Hello: I am performing an LCA with 7 binary indicators. I also have a related continuous variable that I have the option of including as a latent class predictor. I realize this may be a very basic question but is there a way to determine whether the addition of the continuous indicator improves a given group solution over only the 7 binary indicator model? Would this simply involve a comparison of the BIC values for each model? Thank you. 


You cannot compare BIC when you have a different set of variables. You can see if classification quality improves by looking the the classification table and entropy. 


I am doing a factor mixture analysis and have a question. If I simulate the data internally and specify 2 classes, for example, how does Mplus separate or differentiate those two classes? Is it by factor means? Thank you. 


Any parameter that differs between the classes will be involved. The major parameters are the means of the categorical latent variable which are logits related to class probabilities. 


Good afternoon, when doing a mixture model, like a growth mixture model, one can have many comparisons among the groups. Does Mplus automatically adjust the pvalue for multiple comparisons to maintain some overall pvalue like .05? 


No. You would need to be conservative in your interpretation of the results to take this into account. 


Thank you 


Sorry for such a simplistic question. During the short course videos and in several discussion posts it is mentioned that, when using the LMR or Bootstrap LMR, one should put the largest class last. Specifically it is mentioned that you can reorder classes by using the ending values as starting values. So if you want Class 2 to be Class 1, use the ending values of Class 2 as starting values for Class 1. Where do I find these values in the output and how would they be included in the input that would allow me to reorder the classes? 


They are in the results after the heading MODEL ESTIMATION TERMINATED NORMALLY. An easy way to do this is to use the SVALUES option of the OUTPUT command. This provides input statements with starting values. You can just change the class labels and use this as input. 

EFried posted on Sunday, February 26, 2012  8:39 am



Adding covariates into my GMM, the Intercept and Slope Growth Factor means aren't displayed in the model results where they are usually displayed. So ... where are they? The model is y0@0 y1@1 y2@2 etc, so the intercept growth factor mean should be the starting point on the yaxis of the plot at x=0, right? I find values in the model result under "Intercepts", but the values there have no connection to the observed or estimated intercepts of the classes that the plots show. Thank you! 


When you regress the intercept and slope growth factors on a set of covariates, intercepts, not means, are estimated. If you want to see what the means are, ask for TECH4 in the OUTPUT command. 


Hi! I am rerunning my solutions (18 class solutions, LVMM with categorical and continuous indicators) to ensure that my LMRLRT and BLRT are comparing the K to K1 solutions that are correct. A few times now, it has been apparent that class 1 is not the new class (i.e., I would need to go in and use start values to change the order) but, the H0 loglikelihood in the tech output is the same value as from the correct k1 model. Is there any reason to expect this? I was under the impression that I could use this as a check regarding the correct K1 class model. Could it be indicative of a different problem? The models appear stable and are warningfree. Thank you so much. 


It's enough that the loglikelihoods agree. The classes do not need to be in the same order. 


Is it possible to specify that auxiliary variables are categorical in the context of mixture models? Or, are all comparisons made on auxiliary variables based on assuming that they are continuous? Thanks! 


They are treated as continuous. Usually these variables are covariates which are treated as continuous in regression. 


Hi there, In LCA, is there a difference for the conditional item probabilities estimates between classes based on posterior probabilities compared to classes based on most likely class membership? Or, are the probabilities the same regardless? Thank you. 


The conditional item probabilities are based on the model estimates (the logit estimates), not on posterior probs and most likely class. 


could I ask you seemingly basic question? I am reading a tutorial material on LCA with Mplus, and at the end it says "The file saved with Savedata command contains the score of each observation on each indicator, the identification number, I opened this file in a text editor and dropped all the variables except the identification number and the class, C. I repeated this analysis for wave 4 and did the same. I then merged these two datasets with the data for the growth curve analysis. " The "growth curve analysis" s/he refers here is not LCGM/GMM.. right? While I do not seem to think it is the same approach, then I wonder how exaclty it would be different.. thank you SO much! 


It is not clear what the author means by that paragraph. You should ask the author. 


This is probably going to seem like a very basic question but here goes: I am trying to run a 3 group moderation analysis using the KNOWNCLASS option due to a censored dependent variable. Using the %Overall% command I seem to get the constrained model. I need to free each group so I can compute a likelihoodratio chisquare difference test to see if there are group differences. What additional codes do I need to do this and am I even doing this correctly? Thanks in advance! Variable: Names are id FB FB2 Ethn EthGrp Tx Gen Study FC1 PFR1 AB1 SU1 Trisk1 FC2 PFR2 AB2 SU2 Trisk2 FC3 PFR3 AB3 SU3 Trisk3 FC4 PFR4 AB4 SU4 Trisk4; Usevariables are Tx Gen Study SU1 SU4; Missing are all (999.00); KNOWNCLASS = EthGrp (EthGrp = 1 EthGrp = 2 EthGrp = 3); USEOBSERVATIONS = EthGrp NE 4; CENSORED ARE SU4(a); CLASSES = EthGrp (3); Analysis: Estimator = ml; INTEGRATION = MONTECARLO; ALGORITHM = INTEGRATION; TYPE = MIXTURE; Model: %OVERALL% SU4 on SU1;!(a); SU4 on Tx;!(b); SU1 with Tx;!(c); SU4 on Gen;!(d); SU1 with Gen;!(e); SU1 with Study;!(f); SU4 on Study;!(g); Output: sampstat standardized; 


You should not label the ON statements in the overall part of the MODEL command. This holds them equal across classes which is the default. You want to mention the ON statements in the classspecific parts of the MODEL command, for example, %EthGrp#1% SU4 on SU1 (p1); etc. Give different labels in each class and use MODEL TEST to do a Wald test. In mixture modeling, you don't want to use equal versus unequal analyses to do difference testing. This can change class membership. 

J.D. Smith posted on Tuesday, August 14, 2012  8:00 am



Thank you Linda. A quick follow up question: The Wald test was found to be significant and now we need to determine the path(s) that differ between the classes. How do we free up individual parameters within each group? 


They are free when you mention them in the classspecific parts of the MODEL command as shown above. 

Lucy posted on Tuesday, November 13, 2012  5:16 pm



Hi, I am running an LPA model on four items. I wish to compare a number of different k to determine what the optimal number of classes is. When I run the bootstrap LRT, it says that the results are not replicated and to increase the number of starts using LRTSARTS. I have done this (progressively increasing the number of starts), and I still cannot get the bootstrap LRT to be replicated in all runs. Is it OK to just go by the LMR from TECH11 instead? Or does the failurr to replicate the Bootstrap LRT indicate a more serious problem with the model? Thanks. 


See Web Note 14 on the website for information on how to use TECH11 and TECH14. If this does not help, using TECH11 alone is fine. Having a problem with TECH14 does not indicate a serious problem for the model. 


When using AUXILIARY with the (R) option in a LCA, are the covariates tested one at a time or simultaneously? 


They are tested simultaneously. 


You might want to consider the new R3STEP option in Version 7. It supercedes the R option. 


I am running an LTA model with auxiliary variables included to assess mean differences across transitional classes. Previously, I was able to run this model and obtain output. However, in attempting to rerun these models I now get a warning indicating "Auxiliary variables with E, R, R3STEP, DU3STEP, or DE3STEP are not available with TYPE=MIXTURE with more than one categorical latent variable." This occurs even when I try to rerun a copy of a previously working model. Two questions: 1) has something been altered to prevent this type of model? 2) Is the alternative to setup Wald tests? 


As far as we know, these AUXILIARY options have never been available for more than one categorical latent variable. Please send the output where you did this and your license number to support@statmodel.com. 


I am comparing 6class model to a 7class model using TECH 11 (N=2471). Following Webnote 14, I first ran each model without TECH 11 to ensure the best log likelihood is replicated. For the 6class model, the best log likelihood was replicated with 'starts=500 100' and 'starts=1000 200.' For the 7class model, the best log likelihood replicated with 'starts=20000 5000.' When I ran the 7class model with TECH 11 (using OPTSEED), the K1 log likelihood (39267.167) was much larger than for the 6class model I had previously run (39523.778). I reran the 6class model with starts=20000 5000 and got these log likelihoods and seeds: 39283.697 463270 5675 39523.778 831086 10102 (39523.778 continues) Then with starts=40000 10000: 39241.994 549625 26815 39283.697 463270 5675 39523.778 804903 5305 (39523.778 LL continues) My questions are 1) Should I keep trying more starting values for the 6class model to see if the log likelihood replicates 39267.167? Or should I assume that extracting 6 classes from the data is too much? 2) If the latter is true, can I conclude that the 5class model is best? (Models 25 have a significant LMR and VLMR.) 


You should first increase Starts in your 6class model to see if you can replicate the best 6class LL so far: 39241.994. 


Thank you. I ran starts=200000 50000 and got this: 39241.994 549625 26815 39267.167 353583 114407 39283.697 463270 5675 39523.778 831086 10102 (39523.778 continues) This model took 15 hours to run. How do I know when to stop increasing the number of starts and accepting an answer? When I do stop, what is the correct way to compare other models to the 6class model to determine best number of classes? 


The fact that you are having this much trouble replicating the best loglikelihood is in itself an indication that maybe you are trying to extract too many classes. I tend to first look at BIC and see for how many classes it has a minimum, and only then look at Tech11 and Tech14 for number of classes around that number. 

LJ posted on Friday, August 16, 2013  8:41 pm



I am trying to examine how latent class membership could moderate people's evaluations of regime. I have four binary indicators for the latent membership and four binary indicators for regime evaluations (modeled as a latent factor). I have also three continuous covariates for the latent factor. Here is the syntax: VARIABLE: NAMES ARE uid wt sid psuid pt1pt6 rt1rt4 enow eret epro; USEVAR = pt1pt3 pt5 rt1rt4 enow eret epro; CLASSES = c(2); IDVARIABLE = uid; MISSING = All (999); WEIGHT is wt; CLUSTER is psuid; STRATIFICATION is sid; CATEGORICAL ARE pt1pt3 pt5 rt1rt4; Analysis: TYPE=mixture complex; ALGORITHM=Integration; Model: %overall% f1 by rt1* rt2rt4; f1@1; f1 on enow eret epro; %c#1% [f1]; [rt1$1rt4$1](1); f1 on enow eret epro; %c#2% [f1]; [rt1$1rt4$1](1); f1 on enow eret epro; My questions are: 1) Is the model specification correct in testing different intercepts for "f1" between the two groups? 2) Is the model specification correct in testing the varying associations between "f1" and "enow eret epro"? 3) In addition to "p1p3 p5", are other variables also involved in the classification of latent membership? 


1. Yes except in class one change [f1]; to [f1@0]; Factor means must be zero in one class for identification. 2. Yes. 3. Yes, all observed variables are involved. 


Dear Dr. Muthen, I ran a latent class and found that 3 classes fit the data best. Now I'd like to compare the means of the 7 items used to run the latent classes. That is, a pairwise comparison between the means on item 1 across the 3 groups (class 1 vs. 2, 2 vs. 3, and 1 vs. 3). And the same for each of the 7 items. Is there a way to do this in MPlus or should I read out the file to another software (like SPSS) and run a MANOVA ? Thank you! 


Use MODEL TEST. 


Thank you Dr. Muthen. However, using the MODEL TEST command seems to add the significances of the item value, but not in comparison across classes...or have I missed something? thanks you. MODEL RESULTS TwoTailed Estimate S.E. Est./S.E. PValue Latent Class 1 Means ZQ911A1 1.303 0.254 5.122 0.000 ZQ911A3 0.681 0.101 6.731 0.000 ZQ911A4 1.254 0.172 7.306 0.000 ZQ946A1 0.783 0.084 9.305 0.000 


You are showing MODEL RESULTS. Instead, look up MODEL TEST in the UG Index. 


I'm sorry, I don't know what UG Index refers to...couldn't find it in the manual.thank you 


The Index starts on page 835 of the Mplus User's Guide. 

þeyma posted on Monday, July 07, 2014  2:49 am



Dear Muthen, I did a multilevel mixture item response analysis in mplus. I estimate the item diffuculties) across levels and classes. But I want to detect DIF across school and class levels. How can I use the parameters for this reason? The parameters are across 11;12;21 and 22 classes. When I want to detect school DIF I subtract the parameters from 11 and 12 for guessing the "school 1" parameters. Is it right or should I use another way for detect DIF? I generate the data in another program and I know which items include DIF across classes. My input file is so: VARIABLE:NAMES ARE M1M20 G C L School; USEVARIABLES = M1M20; CATEGORICAL = M1M20; CLASSES = C(2) L(2); BETWEEN = C; CLUSTER = School; DATA: FILE = 10.run1.koþul.dat; ANALYSIS: TYPE = TWOLEVEL MIXTURE; ALGORITHM = INTEGRATION; PROCESSORS = 2; MODEL: %WITHIN% %OVERALL% f BY M1M20* (1); f@1; [f@0]; %BETWEEN% %OVERALL% %C#1.L#1% [M1$1M20$1]; %C#1.L#2% [M1$1M20$1]; %C#2.L#1% [M1$1M20$1]; %C#2.L#2% [M1$1M20$1]; MODEL L: %WITHIN% %L#1% f; %L#2% f; OUTPUT: TECH1 TECH8; 


For each item you have 4 thresholds the way your model is specified. That is, you have main effects of C and of L as well as effects of their interactions. By labeling, any threshold difference that you are interested in can be expressed in Model Constraint so that you get the SE of this difference. If you don't want interaction effects you should use Model C: and Model L: to express the thresholds  or impose the appropriate equality restrictions in your "dot" setup. 


Dear Professors, I am running a LPA with 8 dependent variables (continuous on a 10point scale), and I have found 4 profiles. Now I am interested in comparing the 4 profiles on the 8 dependent variables, but I am not sure how can I run a formal test. Thank you, Andrea 


You can use Model Test. For instance, you may want to test that the 8 means for class 1 are the same as the 8 means for class 2. 

xybi2006 posted on Tuesday, January 20, 2015  2:23 pm



Dear Dr. Muthen, I ran a growth mixture model using 4wave data and got 3 classes. Can I compare the mean for each class by each time point in MPLUS? If so, how? Or should I export the data and then do the ANOVA test to compare the mean of the 3 class for each time point? If so, how? I tried to use the SAVEDATA, but it did not give me the estimated values for individuals for all time points, only the estimated values for class intercepts and slopes. Thank you, 


You can use Model Constraint. You use model parameter labels to express the outcome means at each time point and each class. Then you create differences between these means and this will give you a test of whether these differences are zero. 

xybi2006 posted on Tuesday, January 20, 2015  11:48 pm



Thanks much! Not sure whether my codes follow your instruction above. Here are my codes for the constraint model. Do they look right to constrain "med" at T1 to be equal between class 1 and class 2? Also, compare with the freely estimated model, do the class sizes change in the constraint model? %overall% I S  med1@0 med2@1 med3@2 med4@3; %c#1% [med1] (1); %c#2% [med1] (1); %c#3% One more question: The plot that Mplus created for growth mixture model is based on the posterior probabilities or not. 


It looks like you didn't understand what I suggested. First, you need to be able to express means of outcomes in growth models. For that, see Topic 3 of our course video and handout. Second, you need to be able to use Model Constraint. For that, see for instance UG ex 5.20. The [med1] parameters in your input are intercepts of the outcomes and are fixed at zero in a growth model. They are not the means of the outcomes. The growth mixture plot is based on the estimated model, not the posterior probabilities. 

xybi2006 posted on Thursday, January 22, 2015  2:33 pm



Dear Dr. Muthen, Thanks much for your information. Now, I understand how to do that in MPLUS. If I export the graph data of the growth mixture model (based on the estimated model) and then use ANOVA in other statistical package (e.g., SAS) to compare the mean difference among classes, is it still OK? Thanks again, 


No, that won't give you the correct tests because the standard error computations in that approach will be built on the wrong assumptions. So Model Constraint is the way to go  you'll find it useful to have mastered it. 


Dear M&M, After using an LGCA to examine the number of classes of patients who change in symptoms during treatment, followed by logistic regression in SPSS to predict a distal outcome (selfinjury yes/no)the difference between the classes with the highest and lowest number of selfinjury incidents was statistically significant. However, when using GMM including a covariate and the distal outcome (selfinjury), while the differences in occurrence of selfinjury between most classes were significant (based on ODDS RATIOS), the difference in selfinjury rates between the classes with the highest and lowest number of selfinjury incidents was not significant. Any suggestions why this might be? Thanks, Shraddha 


Just as a follow up and to check if my question makes sense, these are the stats that I am referring to, am I interpreting them correctly? (INC_YN = selfinjury yes/no) LATENT CLASS ODDS RATIO RESULTS Latent Class 1 Compared to Latent Class 2 INC_YN Category > 1 13.804 11.433 1.207 0.227 Latent Class 1 Compared to Latent Class 3 INC_YN Category > 1 0.241 0.069 3.496 0.000 Latent Class 1 Compared to Latent Class 4 INC_YN Category > 1 1.868 0.592 3.153 0.002 etc.... Thanks! 

xybi2006 posted on Friday, January 23, 2015  9:15 am



Dear Dr. Muthen, Thanks for your help! I did the model constraint to test whether the means are different across latent classes. Below is my code. Am I in the right track? Should I constrain the parameters as equal beginning with 0= (for my example, 0 = meanc1t1  meanc2t1)? If so, then should I do the deviance test to compare the freely estimated model with the constrained model? Thanks much for your time! %c#1% [I] (Ic1); [S] (Sc1); %c#2% [I] (Ic2); [S] (Sc2); model constraint: new(meanc1t1 meanc1t2 meanc1t3 meanc1t4 meanc2t1 meanc2t2 meanc2t3 meanc2t4); ! class 1: meanc1t1 = Ic1; meanc1t2 = Ic1 + Sc1*1; meanc1t3 = Ic1 + Sc1*2; meanc1t4 = Ic1 + Sc1*3; ! class 2: meanc2t1 = Ic2; meanc2t2 = Ic2 + Sc2*1; meanc2t3 = Ic2 + Sc2*2; meanc2t4 = Ic2 + Sc2*3; 0 = meanc1t1  meanc2t1; !0 = meanc1t2  meanc2t2; !0 = meanc1t3  meanc2t3; !0 = meanc1t4  meanc2t4; 


Answer to Kashyap: LCGA and GMM give quite different class formations. You should decide on which one you want based on BIC and substantive interpretations. Also, for your LCGA you use a 3step approach whereas for GMM you use a 1step approach  plus you add a covariate. 


Answer to xybi2006: This looks correct, except instead of saying 0 = meanc1t1  meanc2t1; you want to say diff = meanc1t1  meanc2t1; where diff is listed within NEW. You don't need deviance testing in this case because diff will be given a ztest. 


Hi. In the following input I would like the latent profiles to be based on the indicators u1u7. Will it correctly obtain the mean of ywv2 for each %CW#n%? Or, does it cause ywv2 to be an indicator for each profile? (Which is not what I want.) Thanks. DATA: ; VARIABLE: NAMES = ; USEVARIABLES = ywv1 ywv2 u1 u2 u3 u4 u5 u6 u7 w1 w2 wgtwv2; MISSING = . ; WEIGHT = wgtwv2; CLUSTER = nbrhds; CLASSES = CB(2) CW(4); BETWEEN = CB w1 w2; WITHIN = ywv1 ywv2 u1 u2 u3 u4 u5 u6 u7 ; ANALYSIS: TYPE = MIXTURE TWOLEVEL; STARTS 20 10; MODEL: %WITHIN% %OVERALL% CW ON ywv1 ; %BETWEEN% %OVERALL% CW ON CB ; CW ON w1 w2; MODEL CW: %WITHIN% %CW#1% [u1 u2 u3 u4 u5 u6 u7]; [ywv2] (TMS1); %CW#2% [u1 u2 u3 u4 u5 u6 u7]; [ywv2] (TMS2); %CW#3% [u1 u2 u3 u4 u5 u6 u7]; [ywv2] (TMS3); %CW#4% [u1 u2 u3 u4 u5 u6 u7]; [ywv2] (TMS4); MODEL CONSTRAINT: NEW onetwo onethree onefour twothree twofour threefour ; onetwo = TMS1  TMS2; onethree = TMS1  TMS3; etc. 


The classes will be based on the ywv2 means as well unless you hold these equal across classes. If you don't want them equal, you need 3step technology, which hasn't been developed for twolevel. 


Ok, thanks! 

Katrin Mägi posted on Tuesday, March 03, 2015  4:13 am



Dear Dr Muthen, In step 3 of mixture modelling I want to compare the intercepts of several continuous distal outcome variables (while adjusting for several predictor variables) across 5 latent profile groups. Should I use %C#1% [Distal1](m1); %C#1% [Distal1](m2); MODEL TEST: 0=m1m2; or MODEL CONSTRAINT: NEW (diff); diff=m1m2; I see that the results are essentially the same and Model test gives Wald test, but what is the difference between the two? Thank you! 


The test of diff in MODEL CONSTRAINT is a ztest. The Wald test and ztest are asymptotically equivalent. 


Thank you, Linda! I have one more question regarding my group comparisons. I have 4 continuous and 1 categorical (gender; 0=boys, 1 = girls) predictor variables. I understand the intercept of the distal y variable is mean of y while all the x variables are 0. As 0 of my categorical variable represents boys, does it mean that the differences in y intercepts across the latent profile groups represent difference between boys mean scores on y while all the other x are 0 (which is at mean level as I've standardized the continuous x variables). If this is the case, would it make sense to reverse my categorical variable then, to get differences also for girls? Thank you! 


I think your predictor variables influence only the latent class variable, right?. If so, the y intercepts are in a different regression relationship (y on c, essentially, no c on x), so those y intercept differences across classes are for everyone, not just boys or girls. This is a reflection of the measurement invariance that you specify when you don't have direct effects from the predictors to the latent class indicators. 


That's correct that I don't have direct effects from predictors to the latent class indicators. However, I do have direct effects from predictors to distal outcomes. I'll try to be more specific about my goal. I have found 5 selfregulation profiles. Now I would like to investigate: 1) if academic preskills and gender predict class membership 2) if the five selfregulation profile groups differ in their later academic skill level while preskills are controlled for (and since two of the later academic skill variables show gender differences I've also included y on gender). But I'm unsure if the model I've specified makes sense and how should I interpret the intercept of y variables. I have specified: MODEL: %OVERALL% c on gender x1 x2 x3 x4; y1 on gender x1 x2 x3 x4; y2 on gender x1 x2 x3 x4; ... %C#1% [n#1@3.108]; [n#2@6.399]; [n#3@3.748]; [n#4@0.868]; y1 on gender x1 x2 x3 x4; y2 on gender x1 x2 x3 x4; [y1](m1); [y2](m10); ... %C#2% ... y1 on gender x1 x2 x3 x4; y2 on gender x1 x2 x3 x4; [y1](m2); [y2](m20); ... MODEL TEST: 0=m1m2; Thank you again! 


Ok, so your y's are later academic skill level variables and gender influences those. So then your y intercepts are for boys and to get them for girls you simply use Model Constraint: new(girlint11); girlint11 = boyint11+b11; where boyint11 is the label for [y1] in class1 and b11 is the slope for y1 on gender (girl) in class 1. Etc for the other classes and the other y's. Note also that y on gender x1x4 in the Overall is not identified along with the same regressions in each class. So you can say in the Overall y on gender@0 x1x4@0; 


I tried to run a two level growth mixture model with the auxiliary option, and I received the following error: Auxiliary variables with R3STEP, DU3STEP, DE3STEP, DCATEGORICAL, DCONTINUOUS, or BCH are not available with TYPE=MIXTURE TWOLEVEL. Is there a workaround possible? I am seeking evidence for validity of classes by testing if class membership predicts a distal outcome. Thank you. 


The 3 step and BCH methods have not been developed and used yet for TYPE=TWOLEVEL MIXTURE. 


Thank you for your quick reply, and I have a clarifying question. Does your reply mean that this has not been developed for Mplus or that that mathematics has not yet been developed to use latent class to predict distal outcomes in a multilevel GMM? 


As far as I know the mathematics has not yet been developed yet for multilevel mixture models. 


I am conducting a multigroup LCA using complex survey data and trying to decide between a 5class and 4class model. Tech11 and Tech14 won't run. Aside from AIC/BIC and interpretability, how would you suggest I compare the models? Thank you! 


If you have categorical outcomes you can also check TECH10 bivariate fit statistics. 


Although Auxiliary=Variable(E) works with multilevel Growth Mixture Models, Webnote 21 states that it is no longer recommended except for methodological research. What other choices are available using Mplus to examine the strength of class as a predictor of a categorical distal outcome? I may use logistic regression with the output from savedata, but I have not found research that suggests whether it is best to use most likely class or class probability as the predictor. Could you suggest studies or information on Statmodel that would provide some insight here? Thank you. 


WN 21 Table 6 recommends DCAT. 


Thank you. Unfortunately, it does not appear that DCAT works with multilevel based upon the following error message. *** ERROR in VARIABLE command Auxiliary variables with R3STEP, DU3STEP, DE3STEP, DCATEGORICAL, DCONTINUOUS, or BCH are not available with TYPE=MIXTURE TWOLEVEL. Are there other options? Thank you. 


Sorry; 3step hasn't been developed for multilevel. 


Yes, thank you Dr. Muthen. Dr. Asparouhov advised me of this earlier. My question of May 6th concerns what other options I might have. I will likely use Auxiliary E and also logistic regression using the most likely class and compare results. My concern was that your WN21 stated that E should no longer be used except for methodological studies. 


Auxiliary E would be ok if the entropy is fairly large such as above 0.85. I would recommend using the 1step approach, meaning include the binary variable in the model. Auxiliary = x(e); is based on pseudo class draws. Regarding the performance of the most likely class as the predictor take a look at https://www.statmodel.com/download/relatinglca.pdf 

andy supple posted on Wednesday, June 24, 2015  9:33 am



I wanted to compare continuous outcomes across classes and control for covariates (their association with the outcomes). The original model had entropy = .86 so I hard classified and saved out the file. I then, rather than doing mixture modeling, just ran MG analyses by using grouping to treat the classes as 4 groups. Then I have a model command for the covariates MODEL: DCON MCON ON SAT DSAT CESDM CESDD then MODEL GROUP1: [dcon];[mcon]; MODEL GROUP2: [dcon];[mcon]; etc. Does this seem like an appropriate way to test mean/intercept differences across classes after partialling out covariates? 


You are comparing the intercepts across classes. This seems reasonable. You can do this using MODEL TEST or chisquare difference testing. See pages 486487 and 697 of the user's guide. 

Back to top 