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

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?

Thanks,
Jen
 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 support@statmodel.com.
 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:

MODEL CONSTRAINT:

NEW(PROB);
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 support@statmodel.com.
 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
Hi,

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!

Eric
 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
Hello,

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!
Diana
 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,
Diana
 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:

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

Errors:
*** ERROR
EXP(CLASS#1) /(1 + EXP(CLASS#1) + EXP(CLASS#2) )
^
ERROR (this is actually placed after the first closing paren)
*** ERROR
EXP(CLASS#1) /(1 + EXP(CLASS#1) + EXP(CLASS#2) )
^
ERROR (this is placed after the second closing paren)
*** ERROR
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,
Diana
 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
Hi
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:


......

VARIABLE: NAMES = .....;

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


USEVARIABLES ARE

Y_anxdep
Y_wthdep
Y_soma
MAYS_SUI
MAYS_Trf
att_anx
att_avoi
AQ_ang
ARC_dys
ARC_sup
AQ_phy
Y_attn
YLS_edu
YLS_sub
PID_tot
M_ATV
YLS_ass
PCL_tot
RSES;

CLASSES = c (3);
Idvariable = idno;


Analysis: Type = Mixture;
Estimator=MLR;
!STARTS = 0;
!OPTSEED = 991329;
!PROCESSORS = 4 (STARTS)
!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.
 Jessica Smith posted on Thursday, April 25, 2019 - 10:19 pm
Hello, I am running a 3 step LPA.

I requested CINTERVAL to get the CI of odds ratios. I calculated the odds ratio by using " parameter +/- 1.96*SE. However, the calculated CI is different from what Mplus provides. The lower bound is the same. but my upper 5% bound is your upper 2.5% bound. I calculated two CIs, and both of my upper 5% is your upper 2.5%.

Because Mplus uses the last group as reference group to provide log ratios, I might need to calculate other CIs that I do not have the output to check against. So I just want to ask why my upper 5% is your upper 2.5%?

Thank you very much,
 Bengt O. Muthen posted on Saturday, April 27, 2019 - 6:30 am
Without seeing your output, maybe you are comparing symmetric CIs with non-symmetric CIs. Perhaps this FAQ is helpful:

Odds ratio confidence interval from logOR estimate and SE
 Nicholas Barr posted on Tuesday, September 17, 2019 - 4:29 pm
Hello,

I have a latent class model with 4 categorical class predictors in the auxiliary statement. I have requested bootstrapped confidence intervals.

However, I notice that the p-values for the odds ratios supplied are inconsistent with the confidence intervals generated. Where the p-value shows a nonsignificant result, the CI does not cross zero.

For example

Odds ratios for the 3-step procedure:
Class 3 reference category

Class 1
Variable
MALE
Estimate= 4.976
S.E. = 2.102
Est.-1/S.E.=1.892
Two-tailed p-value: 0.059

Confidence intervals of odds ratios
Class 3 reference category

Class1
Variable
MALE
CIs = 1.676 2.175 2.484 4.976 9.970 11.389 14.772

These appear to be inconsistent results, as the 95% confidence interval does not cross zero but the p-value is non-significant

Can you please advise on how to resolve this? Thanks very much
 Bengt O. Muthen posted on Tuesday, September 17, 2019 - 5:26 pm
The CI for the odds ratio is a non-symmetric CI which is what is generally preferred for odds ratios. In contrast, the p-value assumes a symmetric/normal distribution. So I would report the odds ratio results (neutral point is 1 here, not 0).
 Nicholas Barr posted on Wednesday, September 18, 2019 - 12:36 pm
Great, thank you very much Dr. Muthen.
 Trevor Peckham posted on Thursday, March 19, 2020 - 11:19 am
Hello,
I am running a lca w/ covariates using r3step and am also getting discordance in inference between p-values calculated in the logit space and exponentiated OR CIs. I have never had these disagree before, and I'm trying to understand how these are not a function of one another.

Can you expand upon how this can happen?

Is it credible to base inference on OR CIs, if hypothesis testing is done in the logit space but doesn't agree?
 Bengt O. Muthen posted on Thursday, March 19, 2020 - 1:56 pm
I assume you are saying that the logit CI covering or not covering zero disagrees with the OR CI covering or not covering 1. The latter CI is obtained as you imply by the approach of the FAQ:

Odds ratio confidence interval from logOR estimate and SE
 Trevor Peckham posted on Thursday, March 19, 2020 - 3:25 pm
I apologize for the poor phrasing above.

I'm basically trying to understand why inference on what is "significant" can disagree between the information provided by the logit CIs / p-values and the OR CIs / p-values. Perhaps this is clarifying:

I have been interpreting p-values given in the section of the output dedicated to OR estimates. These in several cases do not agree with p-values in the logit output. For example, here are two estimates that have different inference across logit and OR information [estimate, (95% CI), p-value]:

Estimate1
Logit: -1.248, (-3.22, 0.72), 0.214
OR: 0.287, (0.04, 2.06), 0.013
(the OR p-value shouldn't be significant but is)

Estimate2
Logit: 0.703, (0.07, 1.34), 0.03
OR: 2.02, (1.07, 3.81), 0.119
(the OR p-value should be significant but isn't)

In both cases, the logit p-values seem to line up with what I would expect based on the OR CIs. So a more specific question might be: how are the p-values given in the OR output calculated, and (how) should they be interpreted?

Thanks
 Bengt O. Muthen posted on Thursday, March 19, 2020 - 4:59 pm
For ORs, we give the column (OR-1)/SE(OR) which is a rough approximation of a z-score if one makes the simplifying assumption that the OR is symmetrically distributed. To the right of that column comes a p-value referring to that approx. z-score. This should not be what you report - instead request cinterval in the output and use those - they allow for the non-symmetric distribution of the ORs.

I hope I am understanding you correctly.
 Trevor Peckham posted on Thursday, March 19, 2020 - 5:30 pm
Yes, this is clear to me now. Thank you very much!
Back to top
Add Your Message Here
Post:
Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Password:
Options: Enable HTML code in message
Automatically activate URLs in message
Action: