Dual Trajectory Analysis
Message/Author
 Chris Blanchard posted on Thursday, November 18, 2010 - 4:55 am
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 growth-mixture 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
 Bengt O. Muthen posted on Thursday, November 18, 2010 - 7:46 am
Is "intensity" a dichotomous covariate?

What are the two processes in the dual trajectory analysis you have in mind?
 Chris Blanchard posted on Thursday, November 18, 2010 - 7:58 am
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
 Bengt O. Muthen posted on Thursday, November 18, 2010 - 5:30 pm
There is no transitioning in the GMM. Perhaps you want to use Latent Transition Analysis and include both light and moderate.
 Chris Blanchard posted on Friday, November 19, 2010 - 4:19 am
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
 Bengt O. Muthen posted on Friday, November 19, 2010 - 10:21 am
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.
 Chris Blanchard posted on Friday, November 19, 2010 - 2:52 pm
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 trajectory-type 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
 Bengt O. Muthen posted on Saturday, November 20, 2010 - 7:29 am
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
 Chris Blanchard posted on Wednesday, November 24, 2010 - 11:01 am
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];
 Bengt O. Muthen posted on Thursday, November 25, 2010 - 8:26 am
This looks correct.
 Chris Blanchard posted on Friday, December 03, 2010 - 11:18 am
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 make-up 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;
il-sl@0;
im-sm@0;
c2 ON c1;
MODEL c1:
%c1#1%
[il sl];
%c1#2%
[il sl];
MODEL c2:
%c2#1%
[im sm];
%c2#2%
[im sm];
 Linda K. Muthen posted on Sunday, December 05, 2010 - 11:14 am
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.
 Bengt O. Muthen posted on Wednesday, March 09, 2011 - 6:10 pm
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.
 Laura Wray-Lake posted on Thursday, January 24, 2013 - 9:17 pm
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 zero-inflated 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., 48-52 split vs. 10-90 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;
ipyd-spyd@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];
 Bengt O. Muthen posted on Friday, January 25, 2013 - 4:39 pm
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 3-step 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.
 J.D. Haltigan posted on Thursday, November 14, 2013 - 9:03 pm
Hello:

I just wanted to follow-up 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.
 Bengt O. Muthen posted on Friday, November 15, 2013 - 4:45 pm
It has to be done in two runs. The setup was mainly intended for LTA where the influence goes one way.
 J.D. Haltigan posted on Friday, November 15, 2013 - 7:25 pm
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
 Bengt O. Muthen posted on Saturday, November 16, 2013 - 6:02 pm
The top of the output that gives the model-estimated probabilities for the 4 classes shows the order of the classes. I hope that's what you are asking.
 J.D. Haltigan posted on Saturday, November 16, 2013 - 10:22 pm
Thanks much! This clarifies it.
 J.D. Haltigan posted on Saturday, June 07, 2014 - 1:15 pm
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 5-group and 6-group 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 re-ran 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 re-run the joint trajectories omitting these combinations.

Thank you.
 Bengt O. Muthen posted on Saturday, June 07, 2014 - 5:45 pm
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.
 J.D. Haltigan posted on Saturday, June 07, 2014 - 11:11 pm
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?
 Bengt O. Muthen posted on Sunday, June 08, 2014 - 4:10 pm
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.
 J.D. Haltigan posted on Wednesday, June 25, 2014 - 10:03 pm
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?
 Bengt O. Muthen posted on Thursday, June 26, 2014 - 2:32 pm
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.
 J.D. Haltigan posted on Tuesday, October 21, 2014 - 9:43 pm
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!
 J.D. Haltigan posted on Wednesday, January 07, 2015 - 2:43 pm
Just wanted to bump this thread to see if anyone might have any thoughts on the post above.

Thank you!
 Bengt O. Muthen posted on Wednesday, January 07, 2015 - 5:44 pm
I think such an outcome is ok - because the zero joint group may be a process1-process2 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 x1-x5 y1-y5;
Classes = cx(2) cy(2);
Analysis:
Type = mixture ;
parameterization = loglinear;
Starts = 500 10;
Model:
%OVERALL%
cx with cy;

MODEL cx:
%cx#1%
[x1-x5];
%ch#2%
[x1-x5];

MODEL cy:
%cy#1%
[y1-y5];
%cv#2%
[y1-y5];

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 x1-x5 y1-y5;
Classes = c(2);
Analysis:
Type = mixture ;
Starts = 100 10;

 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 x1-x5 y1-y5;
Classes = cx(2) cy(2);

Analysis:
Type = mixture ;
parameterization = loglinear;
Starts = 500 10;

Model:
%OVERALL%
cx with cy;

MODEL cx:
%cx#1%
[x1-x5];
%cx#2%
[x1-x5];

MODEL cy:
%cy#1%
[y1-y5];
%cy#2%
[y1-y5];

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 x1-x5 y1-y5;
Classes = c(2);
Analysis:
Type = mixture ;
Starts = 100 10;

 Bengt O. Muthen posted on Thursday, June 25, 2015 - 6:32 pm
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 follow-up 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?
 Bengt O. Muthen posted on Saturday, June 27, 2015 - 4:37 pm
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 5-year 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..
 Bengt O. Muthen posted on Wednesday, June 08, 2016 - 12:54 pm
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.
 J.D. Haltigan posted on Monday, September 12, 2016 - 11:48 am
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...
 Bengt O. Muthen posted on Monday, September 12, 2016 - 2:50 pm
Perhaps you are using 2 latent class variables, one for each process, and you don't correlate them.
 J.D. Haltigan posted on Monday, September 12, 2016 - 3:12 pm
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.
 J.D. Haltigan posted on Tuesday, October 18, 2016 - 10:18 pm
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.
 Bengt O. Muthen posted on Wednesday, October 19, 2016 - 5:42 pm
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.
 J.D. Haltigan posted on Friday, October 21, 2016 - 7:32 pm
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...
 Bengt O. Muthen posted on Saturday, October 22, 2016 - 8:33 am
No, you would have to do it in one run.
 J.D. Haltigan posted on Saturday, October 22, 2016 - 10:11 am
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.
 Bengt O. Muthen posted on Monday, October 24, 2016 - 2:48 pm
I think you might mean TECH15, not 14.

Check if the logL values for the two models are the same.
 J.D. Haltigan posted on Monday, October 24, 2016 - 3:11 pm
Yes--sorry 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?
 J.D. Haltigan posted on Monday, October 24, 2016 - 8:41 pm
LogL values are identical between the two runs using the different parameterizations.
 Bengt O. Muthen posted on Tuesday, October 25, 2016 - 10:07 am
Then you can go ahead and transform as you suggested.
 J.D. Haltigan posted on Thursday, October 27, 2016 - 11:24 pm
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.
 Bengt O. Muthen posted on Friday, October 28, 2016 - 12:29 pm
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.
 J.D. Haltigan posted on Friday, October 28, 2016 - 6:41 pm
Thanks very much Bengt this clears it up for me. One last point--above 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 one-way 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?
 Bengt O. Muthen posted on Saturday, October 29, 2016 - 3:38 pm
Right.
 Meagan Docherty posted on Tuesday, January 09, 2018 - 2:44 pm
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?
 Bengt O. Muthen posted on Tuesday, January 09, 2018 - 3:00 pm