Latent class odds ratios and confiden... PreviousNext
Mplus Discussion > Latent Variable Mixture Modeling >
 Jen Rose posted on Wednesday, March 12, 2014 - 8:34 am

I have a 3 class latent class analysis model with categorical observed variables, several categorical covariates and a categorical distal outcome.

When I look at the latent class odds ratios results comparing Class 1 to Class 2, I see that for a couple of my categorical observed variables, the odds ratios are not significant based on the p value. I'm interpreting this as meaning that there are no significant differences in the logits between the two classes for these variables. However, when I look at the 95% confidence intervals for the latent class odds ratio results (using CINTERVAL), the confidence intervals do not cross 1.0, which suggests to me that the difference between the 2 classes is significant.

Can you tell me what might be causing the discrepancy between the p values for the latent class odds ratio results and the corresponding confidence intervals?

 Linda K. Muthen posted on Wednesday, March 12, 2014 - 11:35 am
The z-scores and confidence interval will agree only for the symmetric confidence interval. If this is not the issue, please send your output and license number to
 CB posted on Wednesday, June 03, 2015 - 12:39 pm
Hello Drs. Muthen,

I'm running an LCA with 3 classes and I'm interested in obtaining 95% confidence intervals for the item-response probabilities and latent class probabilities. I have added the CINTERVAL option to the output.

Are these the equations used to estimate the latent class probabilities for a 3-class model?
class 1: EXP(C#1)/(1+EXP(C#1)+EXP(C#2))
class 2: EXP(C#2)/(1+EXP(C#1)+EXP(C#2))
class 3: 1/(1+EXP(C#1)+EXP(C#2))

If so, do I then just plug in the lower estimates for both C#1 and C#2 into each equation to obtain the lower confidence limit? And then plug in the upper estimates for the upper limit?

I have tried this, but I have found that these confidence limits are not symmetric and sometimes do not contain the actual estimate. Thanks in advance for your help!
 Bengt O. Muthen posted on Wednesday, June 03, 2015 - 1:19 pm
Q1. Yes.

Q2. I don't think that approach works when there isn't a 1-1 relation between the logit and probability. Try bootstrapping to capture any non-symmetry in the probability estimate distribution. Or, Bayes.
 CB posted on Thursday, June 04, 2015 - 6:22 am
Thank you for your quick response!

Based on your suggestion, I performed bootstrapping to obtain confidence intervals by adding cinterval(bootstrap) and setting the number of bootstrap iterations to perform. Here is some of my output.

Estimate, Std. Error, Lower 2.5%, Upper 2.5%
C#1: 0.587, 0.449, -0.293, 1.467
C#2: -3.503, 0.488, -4.459, -2.547

Even with these bootstrapped results, I still run into the problem of not being able to apply an equation to somehow exponentiate the upper and lower limits. Is there another equation I can use to exponentiate this output and obtain reportable confidence intervals?

Alternatively, is there another way to obtain confidence intervals for latent class probabilities for a 3-class LCA? Thanks again for your help!
 Bengt O. Muthen posted on Friday, June 05, 2015 - 9:13 am
You want to consider your probability expressions like

Prob = EXP(C#1)/(1+EXP(C#1)+EXP(C#2))

When you ask for Cinterval(bcbootstrap) you get a 95% CI for Prob. That's what you want to use. It is a non-symmetric CI.
 CB posted on Friday, June 05, 2015 - 12:45 pm
Thanks! In the output, I do get the confidence intervals in probability scale for categorical variables. However, I donít get confidence intervals in the probability scale for the latent class probabilities because I have 3 latent classes - I only get confidence intervals of model results for the latent class probabilities. How can I these model results to obtain the confidence intervals in the probability scale for the latent class probabilities?
 Bengt O. Muthen posted on Friday, June 05, 2015 - 4:01 pm
But when you put

Prob = EXP(C#1)/(1+EXP(C#1)+EXP(C#2))

in Model Constraint you would get the bcbootstrap cintervalas.
 CB posted on Monday, June 08, 2015 - 9:12 am
I apologize for all of the follow-up questions - I'm still relatively new to Mplus.

This is the code I added to obtain the bcbootstrap cintervals:


PROB = EXP(C#2) / (1 + EXP(C#1) + EXP(C#2));

However, there are 3 errors and no indication of what is incorrect. The indicated errors immediately follow the second parentheses for each term - EXP(C#2) just before the division sign, EXP(C#1) just before the addition sign, and EXP(C#2) just before the second parentheses - in the formula.

How do I fix this error and is the code correct? Additionally, the output for the PROB estimate and its upper and lower limits is the same single estimate. I assume this is because of the error in the formula? If this error is fixed, would I obtain bcbootstrap cintervals?

Finally, C#1 and C#2 are the latent classes, so I haven't defined them in the input - do I need to somehow define them in order to obtain the cintervals? If so, how do I code that? Thanks again!!
 Linda K. Muthen posted on Monday, June 08, 2015 - 9:28 am
Please send the output and your license number to
 CB posted on Monday, June 08, 2015 - 10:04 am
Unfortunately, my license number was purchased more than a year ago.

Do you have any thoughts as to why I'm getting this error and/or how I can fix it? Or any resources that could help with this matter?
 Linda K. Muthen posted on Monday, June 08, 2015 - 10:11 am
Read MODEL CONSTRAINT in the user's guide to see how to label the parameters you want to refer to in MODEL CONSTRAINT. you can use latent class labels in this way.
 Eric Thibodeau posted on Monday, February 08, 2016 - 6:34 pm

What is considered large latent class odds ratios with ordinal variables? I'm running a LCA with four ordinal variables, each with 6 categories. I've heard that latent class ORs greater than 5 or less than .2 for binary variables are large. Is the same true for ordinal variables? Seems like the ORs should be expected to be smaller. Thanks!

 Bengt O. Muthen posted on Tuesday, February 09, 2016 - 6:31 pm
I'm afraid I am not aware of such standards.
 Diana P posted on Sunday, June 05, 2016 - 9:43 am

I have a similar question to CB above (June 3 2015).

I would like confidence intervals around estimated class prevalences from a GMM.

When I apply the formulas given in CB's June 3rd post by hand, I am able to get from the logit estimates back to the prevalence estimates. But when I use the lower and upper limits of the logits (from the cinterval command) in those formulas, the limits do not always contain the prevalence estimate.

I cannot use cinterval(bootstrap) because my data are weighted so I am using MLR.

Do you know of a solution to this?

Thank you!
 Bengt O. Muthen posted on Sunday, June 05, 2016 - 12:50 pm
It sounds like you want a non-symmetric interval for the prevalence estimate (you get the symmetric one). If you have several logit estimates that are used to create the prevalence I don't think using their limits works. I'm not sure how to go about this given your weights.
 Diana P posted on Sunday, June 05, 2016 - 1:05 pm
Dr. Muthen,
Thank you for your response. Where is the symmetrical interval given?
Thank you,
 Bengt O. Muthen posted on Sunday, June 05, 2016 - 1:54 pm
If you ask for Cinterval in the Output command, you will get the symmetric interval also for a quantity that you have defined in Model Constraint (where you get the prevalence).
 Diana P posted on Sunday, June 05, 2016 - 3:19 pm
Dr. Muthen,

I attempted this using this statement, but received errors that I had trouble understanding:

Model Constraint:

PROB1 = EXP(Class#1) / (1 + EXP(Class#1) + EXP(Class#2));

EXP(CLASS#1) /(1 + EXP(CLASS#1) + EXP(CLASS#2) )
ERROR (this is actually placed after the first closing paren)
EXP(CLASS#1) /(1 + EXP(CLASS#1) + EXP(CLASS#2) )
ERROR (this is placed after the second closing paren)
EXP(CLASS#1) /(1 + EXP(CLASS#1) + EXP(CLASS#2) )
ERROR (this is placed after the third closing paren)

In addition, the estimate I got did not match the estimated prevalence of class #1. Also, it listed that value for all of the cinterval results ( i.e. the lower .5%, lower 2.5%, etc. results were all the same).

I imagine I must have written the statement incorrectly. Any advice would be greatly appreciated.

Thank you,
 Bengt O. Muthen posted on Sunday, June 05, 2016 - 4:54 pm
Please send your output to Support so they can help.
 Nicole S posted on Wednesday, May 09, 2018 - 7:22 pm
I am working on an analysis in which we present predicted transition probabilities using a 3 level categorical variable, measured at two time points. Our syntax is based on that covered in the LTA in Mplus webnote. There are a couple of issues we would appreciate clarification on.

An example of our syntax for estimating probabilities (for low values of our focal covariate) is as follows:

probL11 = exp(logL11)/(exp(logL11)+(exp(logL21))+1);
probL21 = exp(logL21)/(exp(logL11)+(exp(logL21))+1);
probL31 = 1/(exp(logL11)+(exp(logL21))+1);

1. A reviewer has requested confidence intervals for the transition probabilities, but we are unclear on the most appropriate way to obtain these. Is it appropriate to simply present the upper and lower intervals obtained using CINTERVAL? In an above response to another post bootstrapping is suggested, but we are unable to use bootstrapping with our estimation method.

2. We also compared our probabilities generated with the above syntax to those obtained with the LTA calculator. Most probabilities were identical, but for some specified values of our focal covariate, one probability will differ by .001. This means the transition probabilities for C1#2 sum to .999 rather than 1. Is it safe to assume that this is just a result of rounding errors?
 Bengt O. Muthen posted on Thursday, May 10, 2018 - 3:18 pm
1. You can use a symmetric CI based on +- 1.96*SE, but probabilities don't have a symmetric sampling distribution. You could try Bayes which allows non-symmetric CIs.

2. Yes.
 Shelley Brown posted on Monday, July 16, 2018 - 10:12 am
question #1: I am running an LPA using the R3step approach but I can't seem to locate the odds ratio in the output.

question #2: I can't seem to output the cprobabilities using the savedata command; I should only have 24 variables in the resulting saved data file but SPSS is reading 173.

note. I am running the latest version of Mplus (version 8; 1.6 (1);

My abbreviated syntax looks like this:



Missing are all (-999, 999);
Auxiliary = sex (R3step) age_2 (R3step);



CLASSES = c (3);
Idvariable = idno;

Analysis: Type = Mixture;
!STARTS = 0;
!OPTSEED = 991329;
!LRTSTARTS = 0 0 100 20;

Model: %Overall%
Output: Entropy Sampstat Tech11 STDY
CINTERVAL; !exclude Tech14 for now

Savedata: file is LPA_3_clusters.dat;
save = Cprobabilities;
 Bengt O. Muthen posted on Monday, July 16, 2018 - 2:47 pm
Q1: Version 8.1 gives it.

Q2: Send output and data 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