Message/Author 


Hi, i'm new to MPlus and have a question. I have data where we tracked patients with heart disease for 1 year and have physical activity measurements at baseline, 3, 6, 9, and 12 months. I performed a growthmixture model to identify the number of classes for two intensities (i.e., light and moderate) controlling for age and gender. I identified two classes for each intensity. Now that I have this information, I want to know the probability of a patient transitioning from a light intensity trajectory into a moderate intensity trajectory (and vice versa). I believe this can be done via dual trajectory analysis, but I'm not sure this can be done in MPlus. If it is, can someone direct me to an example. Thanks very much, chris 


Is "intensity" a dichotomous covariate? What are the two processes in the dual trajectory analysis you have in mind? 


No. I ran a separate growth mixture model for light intensity and one for moderate intensity (syntax for light is below). USEV ARE age gender light1 light2 light3 light4 light5; IDVARIABLE = id; CATEGORICAL = gender; CLASSES = c(2); ANALYSIS: TYPE = MIXTURE; STARTS 20 2; MITERATION = 300; ALGORITHM=INTEGRATION; MODEL: %OVERALL% i s  light2@0 light3@1 light4@2 light5@3; i s on light1; i s on age; i s on gender; [light1]; [age]; is this syntax correct? If so, i'm hopoing to show that as time goes on, patients transition into doing more moderate intensity PA...from reading the lit., i thought i had to do a dual trajectory analysis, but perhaps there is another type of analysis I could do? Thanks for your help in advance! chris 


There is no transitioning in the GMM. Perhaps you want to use Latent Transition Analysis and include both light and moderate. 


Thank you! Final question, if I run a growth mixture model with 2 classes for light intensity and 2 classes for moderate intensity, will the output be able to provide me with the probabilities of being in class 1 for light intensity conditional on the moderate classes and vice versa? In speaking with my collegue, he also wants to identify the most at risk group. I think this is a dual trajectory analysis approach. I apologize if I confused the issue...chris 


Hmm. I understood the light and moderate intensities to correspond to different groups of subjects, in which case one cannot talk about conditional probabilities of one given the other. But perhaps I am misunderstanding. A dual process would be 2 different types of outcomes observed on the same individual. 


They are actually the same participants. The questionnaire asked them about light intensity and moderate intensity. I ran the growth mixture models separately and identified 2 classes for each intensity. I was hoping to then combine them into a dual trajectorytype analysis to establish the probability of a participant being in class 1 for light intensity conditional on the moderate intensity classes...is this possible to do? Sorry about the confusion. chris 


You can do that by using 2 latent class variables in a dual process model, one latent class variable for each process. You can relate the 2 latent class variables to each other. To do this you say in the Overall part of the mixture model: c1 with c2 (or c2 on c1) And then Model c1: %c1#1% where you mention the growth factor means for process 1 in latent class 1 %c1#2% where you mention the growth factor means for process 1 in latent class 2 Model c2: where analogously you mention the growth factor mean for process 2 in the different proc 2 classes 


thank you very much! I've pasted part of my syntax below and was wondering if a) it is correct, and b) if I interpret the latent transition probabilities based on the estimated model output to determine the probabilities of being in light class 1 condition on mvpa class 1, etc...or do I have to save the probabilities and get this information from the saved data file. Sorry, that is my last MPLUS newbie question! MODEL: %OVERALL% ilight slight  mild_m2@0 mild_m3@1 mild_m4@2 mild_m5@3; imvpa smvpa  mvpa_m2@0 mvpa_m3@1 mvpa_m4@2 mvpa_m5@3; ilight slight on mild_m1; imvpa smvpa on mvpa_m1; ilight slight on age; imvpa smvpa on age; ilight slight on gender; imvpa smvpa on gender; [mild_m1]; [mvpa_m1]; [age]; c2 on c1; MODEL c1: %c1#1% [ilight slight]; %c1#2% [ilight slight]; MODEL c2: %c2#1% [imvpa smvpa]; %c2#2% [imvpa smvpa]; 


This looks correct. 


Hi there, in redoing the analyses, I decided to do a simple latent class growth analysis for light intensity (identified 2 classes: class 1 = 177; class 2 = 46) and moderate intensity (identified 2 classes: class 1 = 186; class 2 = 37). Then, when I run the dual trajectory analysis to obtain the latent transition probabilities, the class membership get's flipped for light intensity (class 1 = 46; class 2 = 177), but not moderate intensity. Unfortunately, this is confusing me because the demographic makeup of the trajectories also get reversed when I examine them in SPSS. Below is my syntax, am I doing something wrong? MODEL: %OVERALL% il sl  mild_m1@0 mild_m2@1 mild_m3@2 mild_m4@3 mild_m5@4; im sm  mvpa_m1@0 mvpa_m2@1 mvpa_m3@2 mvpa_m4@3 mvpa_m5@4; ilsl@0; imsm@0; c2 ON c1; MODEL c1: %c1#1% [il sl]; %c1#2% [il sl]; MODEL c2: %c2#1% [im sm]; %c2#2% [im sm]; 


You can use the results of the two prior analyses as starting values in the current analysis to keep the classes straight. 

Andrea Mata posted on Wednesday, March 09, 2011  2:14 pm



Hello. I am familiar with running LCGAs and GMM's in mplus, however, I need to run a dual trajectory model using LCGA. I was hoping you could provide references for examples of syntax to guide me in this task. Thank you in advance. 


Use the UG to combine an LCGA setup and a parallel process setup and you have what you want. Check to be sure that your growth factor variances are zero since you want LCGA. One question is if you want one latent class variable for both processes or one for each. I can't think of a reference off hand. 


We separately ran latent class growth analyses (LCGA) for our two constructs: PYD (continuous) and SU (count). Three classes were found for PYD; two classes were found for SU (we used a zeroinflated poisson model for SU). Then we wanted to run a dual trajectory analysis to obtain latent transition probabilities, so we conducted a latent transition analysis. WWe used the below model specifications we got a class breakdown for PYD that closely resembles our original LCGA breakdown, but the class breakdown for SU is very different from our original LCGA (i.e., 4852 split vs. 1090 split). We could not find sample syntax for conducting LTA with a ZIP model, and we suspect that we have misspecified the ZIP (SU) portion of the model. Is below correct? If it isn't, how should it be changed? MODEL: %OVERALL% ipyd spyd  PYD1@0 PYD2@1 PYD3@6; isu ssu  SU1@0 SU2@1 SU3@6; iisu sisu  SU1#1@0 SU2#1@1 SU3#1@6; ipydspyd@0; c2 ON c1; MODEL c1: %c1#1% [ipyd spyd]; %c1#2% [ipyd spyd]; %c1#3% [ipyd spyd]; MODEL c2: %c2#1% [isu ssu iisu sisu]; %c2#2% [isu ssu iisu sisu]; 


It looks like you are setting it up correctly. I wonder if the model assumption is what causes the discrepancy  your model says that the PYD items influence the SU items only through their latent class variables. For instance, some of the PYD items may have direct effects on some of the SU items (which I think could be handled but leads to a more complex model). If you instead said c1 ON c2, you might similarly see the PYDS classes shift. Another possibility is to use 3step LTA analysis, locking down the class formations from the LCGAs. See our web note 14. Although this would then mask the potential model misfit matter that I mentioned. 


Hello: I just wanted to followup on this thread with an additional question: When deriving conditional probabilities using TECH 15 (i.e., in a dual trajectory analyses) is it necessary to have separate runs where you condition c1 on c2 and c2 on c1 (which is what I have done to get the full set of conditional probabilities) or can this be done in a single run? Apologies if I have been unclear in what I am asking. 


It has to be done in two runs. The setup was mainly intended for LTA where the influence goes one way. 


Thank you. One other question: When saving the class probabilities and classes from a dual trajectory model, is there any way (other than running frequencies on the exported class variable) to tell which class is which (i.e., classes 1, 2, ...x) don't necessarily map onto latent transition patterns 1, 2, ...x). In my case, I ran a dual trajectory model resulting in a 2x2 or 4 class output. Regards 


The top of the output that gives the modelestimated probabilities for the 4 classes shows the order of the classes. I hope that's what you are asking. 


Thanks much! This clarifies it. 


Hello, I am back running joint trajectory models and I have a few questions I am unclear on. My setup is that I am modeling the joint probabilities of 5group and 6group constructs (i.e., 30 total possible joint groups). In specifying the joint models, I am setting the intercept and growth parameters of process 1 and 2 classes to their respective estimates obtained in the univariate models. Is this OK? or should simply starting values at these estimates be used instead? Secondly, as is expected with 30 possible combinations, a few of the posterior probabilities are quite low. I read a paper (Fanti & Henrich, 2010) where the authors omitted the intercept and growth terms representing such low probability classes and reran the joint trajectory model. Since I am not specifying the intercept and growth terms for the joint trajectories in the input, how precisely is what they did accomplished? In other words, I would like to rerun the joint trajectories omitting these combinations. Thank you. 


Q1. I would not fix the parameters of the joint analysis to the values from the separate analyses. Using them as starting values while still using Starts is ok. Q2. If you specify the model so that the growth parameters (means,variances, covariances) for each process are only varying across the latent classes of that process, the small cell sizes in the 5 x 6 latent class table don't hurt. What hurts is if cell sizes are small among the 5 and 6 classes, respectively, because that is what supports the estimation of those growth parameters. 


Thank you. What is troubling me is that when I use the growth parameter estimates from the separate univariate runs as starting values (rather than fixed) for the process portions of the dual model, the resultant latent class memberships for each process are hard to link back to the latent classes from the original univariate runs. How is it possible to map the classes of the process portion of the dual model back to their original univariate classes? 


The fact that the joint model for the two processes gives different results for each process than when they are analyzed separately indicates that the joint model is not well specified. That is, the relationship between the two processes is not well captured. 


Thank you! It seems to me that there is no 'best practice' in the developmental psychopathology literature re: dual trajectory modeling. In virtually every paper I have examined, the authors state something to this effect: "...the intercept and growth parameters from the individual class memberships for construct x and construct y were used to predict the probability of multiple class membership in a joint statistical model." I read this as they simply fixed those values in the dual run and just wanted the conditional probabilities (rather than capturing the relationship between the two processes). In a more technical paper, Xie et al., note that in the dual run "the number of optimal trajectory groups in the dual model is *usually consistent* with those id'd in the univariate models." In this paper they also note that they fit a number of different dual models with varying classes for each construct, determining the one with the best fit. I guess it depends on the research question and how you frame the dual approach? 


Right. I would still want to see the same "marginal" model for each process remain essentially unchanged when doing the joint analysis. But it is not always easy to find the right joint model that produces that. 


In a similar vein to the questions in this thread posted above, I had a question regarding what it suggests when, in a joint model, a parameter needs fixed and a resultant joint group has 0 members. 1) Can this model still be interpreted despite the presence of a zero member joint group and 2) Does such a result necessarily indicate that the model is not well specified and, if so, is it necessary to return to the univariate runs to determine where to specify k... less classes for its associated process in the dual model? In the current case, I am a evaluating a joint model with 8 groups (4 x 2). Univariate model estimates (4 and 2 class) are used as starting value estimates. Thanks! 


Just wanted to bump this thread to see if anyone might have any thoughts on the post above. Thank you! 


I think such an outcome is ok  because the zero joint group may be a process1process2 combination that is unlikely. Others? 

John Woo posted on Thursday, June 25, 2015  8:42 am



Hi, I am using Mplus to conduct joint trajectory analysis. I have two sets of trajectories cx and cy, each of which is assumed to be distinct but related. The basic command I am using is as follows: Usevariables are x1x5 y1y5; Classes = cx(2) cy(2); Analysis: Type = mixture ; parameterization = loglinear; Starts = 500 10; Model: %OVERALL% cx with cy; MODEL cx: %cx#1% [x1x5]; %ch#2% [x1x5]; MODEL cy: %cy#1% [y1y5]; %cv#2% [y1y5]; I have three questions. 1. Where do I find in the output the joint probabilities and conditional probabilities? Am I to construct the 2x2 table using the most likely class membership? 2. If the model fit (e.g., BIC) is better without correlating cx and cv, does it mean that I should run the univariate models separately and construct 2x2 table using the most likely membership for joint prob? Is there any benefit to running the joint model with restricted correlation vs. the separate univariate models? 3. If I assume just one set of trajectory based on (x,y)'s rather than two sets of related trajectories of x and y, does it make sense to run the following model? Usevariables are x1x5 y1y5; Classes = c(2); Analysis: Type = mixture ; Starts = 100 10; Thank you for your help. 

John Woo posted on Thursday, June 25, 2015  2:10 pm



Sorry, I made some typos in the question above. Here is the correct version. I have two sets of trajectories cx and cy, each of which is assumed to be distinct but related. The basic command I use is: Usevariables are x1x5 y1y5; Classes = cx(2) cy(2); Analysis: Type = mixture ; parameterization = loglinear; Starts = 500 10; Model: %OVERALL% cx with cy; MODEL cx: %cx#1% [x1x5]; %cx#2% [x1x5]; MODEL cy: %cy#1% [y1y5]; %cy#2% [y1y5]; I have three questions. 1. Where do I find in the output the joint probabilities and conditional probabilities? Am I to construct the 2x2 table using the most likely class membership? 2. If the model fit (e.g., BIC) is better without correlating cx and cy, does it mean that I should run the univariate models separately and construct 2x2 table using the most likely membership for joint prob? Is there any benefit to running the joint model with restricted correlation vs. the separate univariate models? 3. If I assume just one set of trajectory based on (x,y)'s rather than two sets of related trajectories of x and y, does it make sense to run the following model? Usevariables are x1x5 y1y5; Classes = c(2); Analysis: Type = mixture ; Starts = 100 10; Thank you for your help. 


1. Look for FINAL CLASS COUNTS AND PROPORTIONS FOR THE LATENT CLASSES BASED ON THE ESTIMATED MODEL 2. Yes, run them separately in that case; no advantage to doing it jointly. Don't use most likely class membership. 3. Yes. But I don't know why you call it trajectories since you don't impose a growth structure. 

John Woo posted on Friday, June 26, 2015  8:38 am



Thank you, Dr. Muthen. I have just one followup question (to your answer to #3). I know that for univariate models, many studies have used LCA or LPA to conduct 'trajectory' analyses, in which the focus is not on specific functional growth form or predictions across time. In this sense, I am comfortable using LPA to conduct my current study and use the term 'trajectory.' My question was whether using LCA or LPA for this kind of purpose is still appropriate for a bivariate trajectory (x,y)'s (which is distinct from separate but related trajectories of univariate x's and y's). When I run this bivariate model for one class, I get a marginal trajectory of x and a marginal trajectory of y, which are simply mean values of each variable for each time period  as expected. The question is, if I run this model for two classes, can I still interpret the mean values that I obtain as constituting a set of marginal trajectories of x and a set of marginal trajectories y for the set of bivariate trajectories for (x,y)s? 


Last question: Yes, if you assume that the same, single latent class variable is relevant for both processes. 

Eva Guerin posted on Wednesday, June 08, 2016  11:43 am



Hi there Dr. Muthen, I am fairly new to Mplus. Basically, I am hoping to find examples of syntax for dual trajectory and/or multitrajectory latent class growth analyses. I have figured out how to find single variable trajectories in my 5year cohort study data, but now I want to see if people also follow specific trajectories for a combination of variables (i.e., for some people depression goes up and vigour goes down over 5 years, for others depression and vigour stay consistently high, etc. So far, I can only do depression and vigour seperately). Any resources or sample syntaxes you could provide would be immensely helpful. I just need a starting point! I have read articles where results are presented (using Mplus or SAS) but what I really need is how to write in my variables in Mplus.. 


Have a look at slide 92 odf our Topic 9 handout for our short courses on our website. That shows 2 processes, each with its own latent class variable  c1 and c2. Use parameterization = loglinear; so that you can say c1 WITH c2. Also, use Model c1: Model c2: to define which latent class indicators are influenced by which latent class variable. See UG for related examples using 2 c variables. 


I know this has been discussed previously but I wanted to refresh my memory: I'm running a dual traj model where I set starting values of both traj processes using their univariate traj final estimates. In this particular analyses, I see that the order of the univariate classes is not well preserved in the dual run (based on inspection of the latent class pattern means) and I am wondering why that is since I used the final estimates as starting values... 


Perhaps you are using 2 latent class variables, one for each process, and you don't correlate them. 


I regress C2 on C1 and vice versa (in two runs) to get the conditional probabilities so I guess that is similar to correlating them. Regarding the class order change following the run, I know this because using the latent class patterns I can inspect the traj means and see that, for example, class 1 for process 1, say, is now class 3 for process 1 in the latent class pattern matrix in the output. 


Question on formal comparisons of conditional probabilities obtained in Mplus in a dual traj setup: Let's say we have three processes, X, Y, and Z. In one analyses, I get the conditional probability of X on Z and in another (separate) analyses (same sample) I get the conditional probability of Y on Z. Is it OK to compare those two conditional probabilities using the standard formula for calculation the OR and CI? This of course would be done manually since the two conditional probabilities are not obtained in the same run. 


If you calculate two ORs on the same sample they are not independent. You can do a joint analysis of the processes and then express any ORs and OR differences you want in Model Constraint and get CIs. 


Thank you! Since the conditional probabilities are obtained in separate runs on the same sample (i.e., C2 on C1 and C1 on C2) is there any formal way to compare those conditional probabilities? That is, I don't think model constraint would work since they are obtained in separate runs... 


No, you would have to do it in one run. 


Thanks again as this was my inclination. This brings to mind the following question: If I use WITH to associate the two processes (LOGLINEAR parameterization) rather than ON to associate the two processes (LOGIT parameterization) could I transform the class association estimates from the LOGLINEAR run to obtain the probabilities that are provided by the TECH14 output in the LOGIT parameterization? I'm not sure if the two approaches to associating the processes are, in fact, identical is essentially what I am asking. 


I think you might mean TECH15, not 14. Check if the logL values for the two models are the same. 


Yessorry I meant TECH15. Will check the LogL values. Conceptually, however, both WITH and ON models should provide the same information? In other words, they are just different ways of parameterizing the unfolding of the joint processes? 


LogL values are identical between the two runs using the different parameterizations. 


Then you can go ahead and transform as you suggested. 


One observation I have made I am looking to understand: All of the estimates in the categorical latent variables section of the output are identical whether I use WITH or ON to associate the two parallel processes with 3 classes each except for: The means for the first two classes of my c1 process. Intuitively I feel there is probably a good reason for this, but I am missing it. Using the means for the first 2 classes of each process I was able to calculate conditional probabilities which matched those in TECH15 for the ON case (so I am able to see the relationships between the logits and conditional probabilities), but I'm still puzzled by the above WITH run. What is different between associating the two processes using ON (logit) vs. WITH (loglinear). Apologies if I am not clear. 


The logits produced by the two parameterizations are shown in the tables on pages 501 and 502 in the V7 UG. You see there that for instance the 1,1 cell is expressed by 2 parameters in the Logit parameterization and by 3 parameters in the Loglinear parameterization. Therefore, for example [c1#] plays different roles in the two versions. 


Thanks very much Bengt this clears it up for me. One last pointabove you mentioned that to obtain c1 conditioned on c2 and vice versa it was necessary to do it in two runs as LTA was intended for oneway effects. Intuitively I thought that using 'WITH' rather than 'ON' might get around this as a correlation doesn't imply a directional effect per se. However, even using "WITH" to associate the two traj processes one would not get both sets of conditional (probability) effects. Is my observation here correct? 


Right. 


I'm new to this message board, so hopefully this is the right place to post this. I'm running a dual LCGA with a distal outcome, but when I try to estimate a mean for each class, I only get mean estimates based on the second latent class variable. Is there something wrong with my code? It was too large to paste, but I'll try to describe it here. Under MODEL, I have the two quadratic growth models (holding variances at 0) and the mean and variance of the outcome. Then, for each class of both latent class variables I constrain growth parameters and class sizes based on parameters from univariate models, to obtain the same results. I also mention the mean and the variance of the outcome for each class, for each variable. Is there something else I'm missing? 


Hard to answer without seeing your full output  send to Support along with your license number. 

Almar Kok posted on Thursday, June 07, 2018  6:38 am



Dear all, in a previous post Linda indicated that "You can use the results of the two prior analyses as starting values in the current analysis to keep the classes straight." Could anyone explain how to do this, e.g. by posting a syntax? Many thanks in advance! 


In the prior analysis you can use the SVALUES option of the Output command to save the final estimates which can then be copied and used as starting values. 

Almar Kok posted on Friday, June 08, 2018  5:26 am



Many thanks! This worked, but it led to a new question: I now use the final estimates of the two prior separate LCGAs as starting values (SVs) in a dual process LCGA. Both prior models contained five latent classes. My question is whether it is still necessary to run the dual LCGA with random SVs to make sure that the model with predefined SVs is replicated? I am asking because I also estimated the model with predefined SVs with up to 3200 random starts. The best LL was obtained with the predefined SVs, but it did not replicate. In contrast, the random starts resulted in a model that fitted far worse and the results made no sense (all individuals were assigned to the same pattern): LL with model with predefined SVs: 20827.607 unperturbed 0 [no replications] LL with random starts: 25317.598 845036 145 [many replications] In sum, this model seems to run well with predefined starting values obtained from prior analyses, but I can't get it to replicate using random starts. Would it still be ok to accept the model with predefined SVs? 


Q1: Yes because the joint model also models the relationships between the 2 processes. Be sure to have your 2 latent class variables correlated (using WITH). 

Almar Kok posted on Monday, June 11, 2018  1:23 am



Many thanks again. I did correlate the two latent classes. Some thoughts and questions: Could the estimation problem with the 5x5 dual process model be caused by the fact that the two processes are quite strongly correlated (r=0.60), such that when the relationships between the processes are modelled using WITH, a different number of latent classes than in the separate prior models would fit to the data? If so, could this indicate that the best fitting number of classes in a dual process model should be tested in a similar fashion as with a separate LCGA? e.g., starting with a 2x1 model, then 1x2, 2x2, 2x3 etc. until the best fitting model is found? 


Q1: Perhaps you need to correlate the 2 process outcomes directly at each time point to capture all their correlation. Q2: Perhaps. But if a wellspecified joint model is found, its 2 parts should probably not deviate much from the 2 separate models. 

Back to top 