Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Not concave of Latent Class Analysis (LCA) Calculation in Stata 15

    Hi everyone,

    After reading posts on this forum about how to overcome the un-concave situation in LCA model, I noticed we could either apply constrains to set the _cons of problematic variables at -15 or +15, or specify -nonrtolerance- following -gsem- command. These methods are helpful in terms of helping model reach a conclusion. But anyone knows: 1) why _cons need to be set at -15/+15 rather than other values? 2) is it correct to understand the meaning of "_cons" as those shown up in regression models?

    Thank you for your inputs on my questions.

    Best,
    Mengmeng

  • #2
    Originally posted by Mengmeng Li View Post
    Hi everyone,

    After reading posts on this forum about how to overcome the un-concave situation in LCA model, I noticed we could either apply constrains to set the _cons of problematic variables at -15 or +15, or specify -nonrtolerance- following -gsem- command. These methods are helpful in terms of helping model reach a conclusion. But anyone knows: 1) why _cons need to be set at -15/+15 rather than other values? 2) is it correct to understand the meaning of "_cons" as those shown up in regression models?

    Thank you for your inputs on my questions.

    Best,
    Mengmeng
    The recommendation to consider constraining the constants applies to latent class analysis with binary items.

    In a regular logistic regression, we say that the probability of a positive outcome is exp(Ij) / [1 + exp(Ij)], where Ij is the linear predictor for the j-th observation.

    In a regular latent class model, we are entering no covariates into that logistic regression. So, in each class, the probability of each indicator variable being 1 is given by just the logit intercept. Probabilities that are just below 1 correspond to logit intercepts that are large and positive (say, 15 or higher), and probabilities just above 0 correspond to logit intercepts that are large and negative numbers (e.g., -15 or lower). You can verify this by typing

    Code:
    display invlogit(15)
    display invlogit(-15)
    I suppose you could choose slightly higher constraints. However, it seems that MPlus and the PSU Stata LCA package both choose to constrain parameters at +/- 15 in this case.

    Mind you, I prefer to estimate a model with the -nonrtolerance- option first, then inspect the results and standard errors. If any logit intercepts are over +/- 15, then I constrain them accordingly and re-run the model with the usual tolerance options. In my experience, if there are at least two logit intercepts that are over this threshold, the model usually won't converge without -nonrtolerance-. This means that the maximizer reaches an apparent maximum in a non-concave space; Stata's usual convergence criteria won't let the maximizer declare convergence in this case.

    As far as I know, Stata's maximization criteria are there to maximize the chances that the maximization routine hits a global maximum as opposed to a local one. If you change up the maximization criteria during an initial search for a solution, I would strongly recommend re-enabling them to confirm your suspected solution. You can save the parameter estimates from one run, then instruct Stata to start from them in another run, e.g.

    Code:
    gsem (x1 x2 x3 x4 x5 <- _cons), logit lclass(7) nonrtolerance
    matrix b = e(b)
    gsem (x1 x2 x3 x4 x5 <- _cons), logit lclass(7) from(b)
    If you're interested in learning more, you need to delve more into maximum likelihood theory. To be honest, this is the limit of my own understanding. However, this illustrates that latent class models can be tricky for applied statisticians to fit successfully, so do exercise caution.
    Last edited by Weiwen Ng; 02 Jun 2018, 15:28.
    Be aware that it can be very hard to answer a question without sample data. You can use the dataex command for this. Type help dataex at the command line.

    When presenting code or results, please use the code delimiters format them. Use the # button on the formatting toolbar, between the " (double quote) and <> buttons.

    Comment

    Working...
    X