Confidence Intervals around Growth Cu... PreviousNext
Mplus Discussion > Growth Modeling of Longitudinal Data >
 Anonymous posted on Monday, November 19, 2001 - 8:08 am
Dear Linda & Bengt,

I am wondering about the best approach to compute confidence intervals around the estimated growth trajectories. I have tried to used the estimates produced by the cinterval option. The intervals become very wide towards the end and take values which are outside the range of possible values. Is this the only approach available right now and/or am I missing something? Thanks.


 bmuthen posted on Wednesday, November 21, 2001 - 8:24 am
The cinterval option is helpful when you want a confidence interval for a single parameter estimate. But you are interested in the confidence interval for each time point for the estimated mean growth trajectory. The estimated mean growth value for a given time point for a linear model is the sum of the estimated intercept mean plus the estimated slope mean times the time score. The estimated variance around this is the sum of variances of the two parts and the covariance, where you use (co-) variance estimates from Tech3. Alternatively, you can get your confidence interval easily for a given time point by centering at this time point so that the estimated growth curve mean is simply the estimated intercept mean - the confidence interval given for this estimate is then what you want.
 Pierre posted on Thursday, October 07, 2010 - 7:49 am
Dear Linda & Bengt,

Partly in relation to this, I would have 3 questions.

1. If I follow Bengt's advice above for the level 2 intercept factor -- in effect a mean variance I am therefore calculating the confidence interval of a variance. The problem is, if this mean value is constrained to 0, then the lower confidence interval is negative. Since variances can't be negative, can I consider this a valid result?

2. In the same model (one class, two levels GMM, with categorical observed variables at 5 time points with 6 covariates at the within level, and 1 at the between level), I get the 'non positive first order derivative product matrix' error, since the number of clusters is 20 and the estimated parameters 22. In order to reduce the number of parameter , I was thinking of constraining the threshold in the full model to the estimated values of the model with 20 parameters, that does not yield the NPD error. Would you recommend this?

3.In another variant of the same model, with one and two latent classes, I have been trying to estimate the intercept mean of the growth curve(s) by setting the first thresholds to 0, and the following ones to match as far as possible the cumulative frequencies of the observed categorical variables. My question is: does this remain valid if I introduce independent variables?

Thank you very much in advance.

 Linda K. Muthen posted on Thursday, October 07, 2010 - 10:19 am
1. It is not clear what you are putting a confidence interval around.

2-3. It is not a good idea to fix parameters unless it is part of the model parameterization.
 Pierre posted on Friday, October 08, 2010 - 2:53 am
Thank you for your reply, and sorry if I was not clear.
I have:

IW SW | nw1 nw2 nw3 nw4 nw5

IB SB | nw1 nw2 nw3 nw4 nw5

[IB@0]; [SB@0];

I want to graph the predicted values of IB for each level 2 unit (as provided by the SAVEFILE command), together with the confidence interval for its mean value, which I have set to 0. I though I could compute a confidence interval for [IB] using 0 +/- 1.96 (SQRT(IB)/SQRT(n)). Since [IB] represents the mean level 2 variance, is there not a problem with the lower boundary of its confidence interval being negative? Sorry if this is a basic question.

Re 2. Fix the thresholds at that particular value is not part of my design , but I thought I might be allowed to do this since the value of their estimated value did not seem to differ much in versions of the models with less parameters, and the one returning the NPD error. Do you mean that doing this introduces a bias in the estimation of the remaining parameters?

Thank you again for your time.
 Linda K. Muthen posted on Friday, October 08, 2010 - 8:41 am
You can get factor scores and their standard errors for the growth factors by using the FSCORES option of the SAVEDATA command.

I would never fix values unless they are part of the model parameterization. The message is related to having more parameters than clusters. I would ignore this message.
 Geoffrey Hammond posted on Monday, October 18, 2010 - 3:09 am

I was looking for clarification with regard to the trajectory confidence intervals. I have estimated a five timepoint LGM in which tere are 21 seperate groups (sample sizes vary from around 50 to over 300 in each group; its a large sample!) I would like to develop confidence intervals around each trajectory. I have estimates the model as a multiple group LGM and the fit is ok(ish) (CFI:0.95).

Despite the fit, I should be able to calculate the 95% CIs. From the information above, I should be able to use the covariance estimates produced by TECH3.

I have used a quadratic parameterisation, but have fixed the variance of the quadratic parameter to zero (fixing the population to the same quadratic shape)

According to the first post in this thread, my variance should be the (co-)variance (from tech 3) of the Intercept, Slope, and the Covariance of the two (the variance of Q has been fixed, so that is done).

However, when looking at the covariance, I'm getting number like (I Var: 1.897, S var: 7.63, IS var: 34.177). these values seem incredibly high to simply sum and produce my variance.

Any ideas what i might be doing wrong?
 Linda K. Muthen posted on Monday, October 18, 2010 - 9:39 am
You can get the model estimated variances from the RESIDUAL option. You can express the means in MODEL CONSTRAINT using the NEW option and obtain standard errors in that way.
 IYH Boon posted on Friday, March 02, 2012 - 2:28 pm
Quick question about Bengt's 2001 comment: How do you center at a given time point? I want to put confidence intervals around my estimated growth trajectories, but I'm having trouble following the advice that's given above.
 Linda K. Muthen posted on Friday, March 02, 2012 - 4:28 pm
You center at a given time point by having the time score of zero at that time point. For example, if you have linear model:

i s | y1@0 y2@1 y3@2 y4@3;

it is centered at timepoint one. If you want it to be centered at timepoint 4, say:

i s | y1@-3 y2@-2 y3@-1 y4@0
 Sara Payne posted on Friday, July 06, 2012 - 12:22 pm
Hi Linda and Bengt

I am using a parallel process model to evaluate the relationship between two behaviours. I know the data is not normally distributed, so I have elected to use and report bias-corrected 99% confidence intervals to minimize any bias in parameter estimates that may occur. However, I have notice conflicting results between my model results and BCBOOTSTRAP output. In the model output section, several covariances are significant (p<0.001). However the 99% bias-corrected confidence intervals contain 0.000 suggesting that the covariances are not significant. I am wondering why I get conflicting results.

I'm guessing that in the model results, the standard errors that are used to calculate the p-values are not corrected for non-normality, while the confidence intervals are corrected for non-normality. Is this correct? If this is the case, I should forget what the p-value in the model results tells me and concentrate on the confidence intervals.

The only other explanation that I can think of is that my covarainces are small (0.001). Therefore, perhaps the confidence interval is not actually 0, but gets cutoff at 0.000 in the output. Would this be a possibility?
 Linda K. Muthen posted on Friday, July 06, 2012 - 1:37 pm
Please send your output and license number to
 Jon Heron posted on Thursday, April 18, 2013 - 5:36 am
Hi Bengt/Linda,

I'm deriving the confidence interval for a growth curve and have been using the suggestion made above to derive values at a number of time points using the wonderful model-constraint function.

I'm now moving from a 1st order to a 2nd order model and considering the same exercise. However a second order model has zero intercept so there is no term to make a contribution to the variance.

Any ideas what I can do?

thanks, Jon
 Bengt O. Muthen posted on Thursday, April 18, 2013 - 9:15 am
Do you mean multiple-indicator growth modeling? There the mean of the intercept growth factor is instead picked up in an intercept of the indicators and the growth curve for the factor wouldn't involve that parameter.
 Jon Heron posted on Thursday, April 18, 2013 - 9:24 am
Thanks Bengt,

yes, that's what I mean

the width of my confidence interval around the growth curve is then zero at baseline.

I'm puzzled
 Jon Heron posted on Thursday, April 18, 2013 - 10:04 am
Did I say "puzzled"? I meant "stupid".
I guess I can just go grab that mean of the first indicator and use it instead
 Bengt O. Muthen posted on Thursday, April 18, 2013 - 11:46 am
I guess if E(f_t)=0 for t at the first time point (which is the standard setup we use), then the predicted value is 0 and should have no interval around it.

Moving an indicator intercept into the intercept factor mean makes it dependent on the choice of indicator.

You can also show expected indicator growth with confidence bands, one for each indicator.
 Jon Heron posted on Thursday, April 18, 2013 - 11:44 pm
Thanks Bengt,

I've just knocked together a lovely graph for my single indicator growth model which combines estimated growth under the model with the mean values of the manifest sumscore at each time point. Much clearer than the growth factor parameter estimates themselves as this is a quadratic model with constant Q.

I was hoping for a figure for the multi-indicator model to illustrate the similarities. Perhaps showing the population growth overlayed with the first order factor means.

I'll continue pondering

all the best, Jon
 Jonathan Larson posted on Wednesday, July 10, 2013 - 3:32 pm
We have a growth mixture model with three latent trajectories. One of them has growth factor means of 49.063 (I), 9.496 (S), and -3.432 (Q). Using these point estimates, the peak of the trajectory occurs at 1.383 on the x-axis. Is there any way to come up with a confidence interval for this value?
 Bengt O. Muthen posted on Thursday, July 11, 2013 - 7:29 am
See the new FAQ on our website

GMM estimated means confidence intervals
 Jonathan Larson posted on Thursday, July 11, 2013 - 12:09 pm
Thank you!
 Jamie Vaske posted on Wednesday, September 17, 2014 - 10:34 am
Hi, I see the method of calculating the confidence intervals for a GMM where you use the variance and covariance of the intercepts and slopes. My colleagues and I were wondering how to create confidence intervals for trajectories when using a latent class growth model, where the variances around the intercept and slopes are constrained to zero. Is there a modification to the pdf posted from July 11, 2013? Thanks!
 Bengt O. Muthen posted on Wednesday, September 17, 2014 - 3:28 pm
It's the same because only the growth factor means are involved in the formulas.
 Becky Naumann posted on Tuesday, March 21, 2017 - 11:21 am

I'm wondering if there is a way to extend the formulas shown within the Model Constraint section in following document ( to obtain confidence intervals around piecewise trajectories. I'm having a hard time extending the formula for this situation.

Thanks for any advice you can provide!
 Bengt O. Muthen posted on Tuesday, March 21, 2017 - 6:02 pm
Generally speaking you would use similar expressions for each piece. The confidence interval are just the estimate for the estimated outcome mean + - 1.96 * SE, where Model Constraint provides the estimate and the SE. We can't provide more help than that but perhaps you can check with a statistical consultant.
 Bastien Perrot posted on Monday, October 01, 2018 - 2:57 am
Dear Linda & Bengt,

I used the code in this document ( in order to compute and plot confidence intervals with the LOOP option.

1) When I specify "CINTERVAL(bootstrap)" in the OUTPUT section and modify the ANALYSIS section by specifying "bootstrap=500; estimator=ML;", confidence intervals are well computed but only the one corresponding to the last class (here class2) is showed in the plot (the other confidence interval is plot at zero).

2) In order to plot the confidence interval for class1, I tried to "switch" the two classes by specifying start values (for I and S) for class1 based on the final estimated values for class2, and vice versa. But the two classes are still "the same" (unless I write for instance STARTS = 5 5; instead of STARTS = 40 8; but I am not sure why this works).

 Bengt O. Muthen posted on Tuesday, October 02, 2018 - 5:51 am
1) Send your output and gh5 file to Support along with your license number so we can see what you mean.

2) Use Starts=0, making sure that you get the same best log likelihood value.
 Martin Wetzel posted on Thursday, September 05, 2019 - 4:45 am
Dear Linda and Bengt,

we estimated a latent class trajectory (analysis type = mixture) model with piecewise trajectories and would like to plot confidence intervals for them. Our 2 class model looks like this:

I S1 | ls0@0 ls1@1 ls2@0 ls3@0 ls4@0;
I S2 | ls0@0 ls1@0 ls2@1 ls3@0 ls4@0;
I S3 | ls0@0 ls1@0 ls2@0 ls3@1 ls4@0;
I S4 | ls0@0 ls1@0 ls2@0 ls3@0 ls4@1;

[I-S4] (a1-a5);
[I-S4] (b1-b5);

However, we were uncertain how to specify the model constraints.
We started with the instructions from

PLOT(class1 class2);
class1 = a1+time1*a2+time2*a3+time3*a4+time4*a5;
class2 = b1+time1*b2+time2*b3+time3*b4+time4*b5;

We thought about inserting the different "time"-parameters (dummy variables) for different timepoints in the model constraints, but were not sure how this can be accomplished.

Thanks for any advice you can provide!
 Bengt O. Muthen posted on Saturday, September 07, 2019 - 4:24 pm
Looks like this would fit the sample means. Note also that the s variances cannot be identified because each piece is too short.

But to answer your question, why not simply write out the means for each class and time point and then plot those by a Series option

c1t1 = a1;
c1t2 = a1 + a2;
c1t3 = a1 + a3;
c1t4 = a1 + a4;

etc for the other classes.
 Martin Wetzel posted on Tuesday, September 10, 2019 - 1:59 am
Thank you very much, Bengt!

We managed to estimate the parameters as additional parameters in the constraints section using the SERIES-option, however, we have difficulties to initialize the plot.

We looked for the "time series"-plot of TYPE=PLOT3 but we cannot find it. Is this the one we would like to use and how can we initialize it?

SERIES = ls0-ls4 (*);
Type = Plot3;

PLOT(c1t1-c1t5 c2t1-c2t5);

c1t1 = a1;
c1t2 = a1+a2;
c1t3 = a1+a3;
c1t4 = a1+a4;
c1t5 = a1+a5;

c2t1 = b1;
c2t2 = b1+b2;
c2t3 = b1+b3;
c2t4 = b1+b4;
c2t5 = b1+b5;
 Bengt O. Muthen posted on Wednesday, September 11, 2019 - 11:37 am
Series = c1t1 c1t2 c1t3 c1t4 c1t5;
Type = plot3;
 Martin Wetzel posted on Thursday, September 12, 2019 - 9:57 am
We tried but when we use
> Series = c1t1 c1t2 c1t3 c1t4 c1t5;
then we get
*** ERROR in PLOT command
Missing x-values in the SERIES option for the process:
c1t1 c1t2 c1t3 c1t4 c1t5

When we add (*)
> Series = c1t1 c1t2 c1t3 c1t4 c1t5 (*);
then we get
*** ERROR in PLOT command
Unknown variable in SERIES option: C1T1

It seems that MPlus can't identify the specified variables from the model constraint section.
 Bengt O. Muthen posted on Thursday, September 12, 2019 - 4:04 pm
Sorry - Series can take only observed or latent variables. Seems like it is easiest to do the plotting outside Mplus.
 Jia posted on Saturday, February 15, 2020 - 9:18 pm
Dear Linda & Bengt,

When I tried the Loop plot in the pdf using Ex 8.1 dat (, the loop plot in the first model is different with the model that do not have model constraint.

In the later model, ind file just have
i s | y1@0 y2@1 y3@2 y4@3;

The results for the estimated mean for each class by TECH4 is same for both models. However, the loop plot from the first example is different from the estimated mean plot from the second model (e.g. estimated mean at time 0 is different).

I'm not sure why is that? Can I still use the loop plot? What if the lower confidence interval is below 0?

Thank you so much!
 Bengt O. Muthen posted on Sunday, February 16, 2020 - 11:40 am
We need to see your full outputs - send to Support along with your license number.
Back to top
Add Your Message Here
Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Options: Enable HTML code in message
Automatically activate URLs in message