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... 

Back to top 