I am approaching to Latent Class Analysis to identify "classes" of patients based on some variables.

Question 1: diagnostics of the results. I already gone through the discussion on whether it is better to use BIC, cAIC, etc.: I reach the conclusion that evaluating several metrics, along with entropy and clinical judgment, probably is the best approach to choose the number of classes.

Now, several sources report that a "good entropy" is when entropy >0.8. But I have also found some other people saying that even a lower entropy (around 0.5) could be acceptable, if the classes makes sense, given that in certain areas reaching such high values of entropy (i.e., >0.8) may not be feasible. As the entropy for my latent class model is around 0.45, I want to ask whether "relaxing" the demand for high entropy is acceptable or not.

Question 2: I am wondering whether I can use the classes allocation according to modal posterior probability as a covariate into a Cox-regression model, to analyse hazards across different class? To me, this sound like a suitable approach, but I would like a confirmation that this approach is ok, as I can't find much on this site.

Let's say (with R):

data <- whatever # Whatever dataset
form <- as.formula(cbind(X1, X2, X3 ...) ~ 1) 
  # Where X1, X2, X3 etc. are the variables used to run the latent 
  # class analysis
lc <- poLCA(form, data=data, nclass=3, nrep=5, maxiter=3000) 
  # Let's assume I have already evaluated BIC, entropy etc. and 
  #  found 3 as the best number of classes
data$class <- lc$predclass 
  # I use the class membership assigned by modal posterior probability
coxph(Surv(time, event) ~ class + Y1 + Y2 + Y3 ..., data=data) 
 # Where Y1, Y2, Y3 are other covariates I want to use in the 
 # Cox regression model.

Would this approach be sound?

  • 3
    $\begingroup$ Technically you can have a model that is a mixture of other models, e.g. regression, so it should be possible. $\endgroup$
    – Tim
    Feb 11, 2023 at 17:27
  • $\begingroup$ I think we're all curious why you're using M-Plus for a simple factor analysis. Are you saying that your X1, X2, ... are 100s of responses on a survey instrument? $\endgroup$
    – AdamO
    Mar 28, 2023 at 16:32
  • $\begingroup$ @AdamO Well I am not using Mplus at all - X1, X2, X3 are all clinical characteristics which I think tend to aggregate in some sort of "subpopulations". $\endgroup$ Mar 29, 2023 at 10:14

1 Answer 1


I want to ask whether "relaxing" the demand for high entropy is acceptable or not.

Your purpose in identifying the classes provides the best answer to that question.

Decide on a measure of model performance that makes the most sense for your application. There's a potential problem with entropy, as that term seems to get used in different ways among implementations of latent class analysis (LCA). The poLCA package you use reports the standard Shannon definition of entropy calculated over the cells $c$ of the cross-classification table, $-\sum_c p_c \ln p_c$, with an upper limit equal to the log of the number of cells. The cutoffs you cite seem to be based on values re-scaled into a range of 0 to 1 like Mplus reports. I'm not an expert in LCA, but I suspect that there might be a better measure of model performance than entropy.

It would seem that a measure of the stability of class assignments among resampled data sets would be most useful for a clinical application. I don't think that you can get that from your single model fit, but you could get that by repeating your entire modeling process on multiple bootstrapped samples of your data. That mimics the process of taking your original sample from the underlying population. A process that tends to co-identify the same cases into the same classes would be most reliable.

Save the predictions of each bootstrap-based model on the full data set. See how well the multiple models tend to match the same cases into the same classes. Then decide if that performance is good enough for your purpose. If so, report the results of your original model along with your measure of model-process performance.

In terms of application to survival analysis, LCA might provide a type of data reduction, unsupervised with respect to survival outcomes, to convert a large number of X categorical variables into a smaller number of predictors for modeling an event-limited survival data set. Frank Harrell discusses similar data-reduction approaches in Section 4.7 of Regression Modeling Strategies. Using the modal class assignment would seem to be the most appropriate choice. If you have enough events to include all of your variables into the model, however, the pre-assignment to classes would seem to lead to a loss of precision.

  • $\begingroup$ thanks for this reply. Would you think that the coxph fit reported in my example would provide a reliable estimate of the association between latent classes and risk of outcomes? As previously stated in another comment, the aim here is to identify subpopulations of individuals (i.e., the latent classes) among a more heterogenous cohort - therefore it would provide a different meaning than including all covariates into a regression model. $\endgroup$ Apr 1, 2023 at 21:10
  • 1
    $\begingroup$ @user89547235 you could check the reliability by including the survival model within the bootstrap-based evaluation of modeling performance. Build the latent-class model on each bootstrap sample, assign latent classes to all cases in the data set, then see how much the latent classes add to the predictive value of the Cox model on the whole data set. Repeat for multiple bootstrap samples. That way you don't have to depend on an opinion about reliability; the data can tell you directly. $\endgroup$
    – EdM
    Apr 2, 2023 at 7:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.