Message/Author 

anonymous posted on Monday, October 20, 2014  8:35 pm



In reading about the new BCH method in web note 21 (October 7, 2014), I'm wondering if there is a variant of the method demonstrated in 3.2 that predicts the distal outcome(s) from the latent classes while controlling for the effect of the covariates on the distal outcomes. 


That's what's shown in the Section 3.2 input. 

anonymous posted on Tuesday, October 21, 2014  11:33 am



Perhaps I'm misunderstanding, but when I run that syntax the output shows the distal outcome regressed on my covariates and the classes regressed on my covariates, but I don't see anything in the syntax or output about the classes predicting the distal outcome. 


You get classspecific intercepts/thresholds for the distal outcome. That is the same information as in a regression of the distal on the latent class variable. You can test for differences in these parameters when using Model Constraint. 

Anne Chan posted on Friday, January 09, 2015  1:20 pm



I noticed that the missing cases (in distal outcome) are handled by listwise in the 3step approach. I am wondering how the missing data (in distal outcome) are handled by new BCH method? 


Same way. If you run DCON you will see how many cases are used (same as for BCH). 


Dear Dr. Muthén, I´m trying to fit a mixture model using BCH, but when I include a second predictor (educ) of the latent class variable (SC), Mplus asks me to use Alorithm=integration which is not available for bch (according to an error message) . Could you help me with that please? Here´s my input: Analysis: Type is mixture; Starts=0; Estimator=MLR; Model: %overall% SC on ISEIH Educ; ISEIR on Educ ISEIH; Educ on ISEIH; %sc#1% [ISEIR] (m1); %sc#2% [ISEIR] (m2); %sc#3% [ISEIR] (m3); %sc#4% [ISEIR] (m4); %sc#5% [ISEIR] (m5); Model test: m1=m2; m1=m3; m1=m4; m1=m5; Thanks. 


Integration is needed if your Educ variable has missing data. You can delete those cases. 


Thank you for your answer Dr. Muthén, but I tried taking out missing values and got the same error message(that I need to use integration algorithm). Could it be that when I regress Educ on ISEIH, Educ variable becomes a distal outcome of the latent class and that is why I cannot also regress the latent class(SC) on Educ? If so, is there a way not to consider Educ as distal outcome (I'm only interested in ISEIR as distal outcome), to be able to regress it on ISEIH? And another question, I get an Entropy of 1.140 in the second BCH step, is that because of the use of the weights or I'm I doing something wrong? Thanks 


I recommend that you remove Educ ON ISEIH. That statement does not change the mixture model. If you still have entropy >1, please send your output, and data if possible, along with your license number to support. 


Hello, I have the same issue as Valentina with regard to entropy > 1 when I run a regression auxiliary/latent class model along the lines of section 3.2 in webnote 21v2. The input code is:  Variable: Names are ofcan ofecs ofcok ofgas truant schyear w1 w2 w3 ; Usevariables are truant schyear w1 w2 w3 ; Classes are c (3) ; Training are w1 w2 w3 (bch) ; Analysis: Type = Mixture ; Starts = 0 ; Model: %overall% [schyear] ; schyear on truant ; %c#1% [schyear] ; schyear on truant ; %c#2% [schyear] ; schyear on truant ;  The model fits three latent class to explain school pupils' exposure to four drug exposure variables. The latent classes, and whether the pupil ever truants from school, are then used to predict school year. The model estimates look fine, but the classification quality output looks wrong (entropy >1, classification probabilities > 1). I wonder, is this something to do with the class membership uncertainty being known quantities represented already by the bch weights? Thanks, Nick 


There is a glitch in the entropy when BCH weights are used. Ignore the entropy printed. 


hello I am trying to use BCH for an LCA with a continuous distal outcome and have no problem with the first step. When I run the final step I get this error message Invalid symbol in data file: "*" at record #: 1, field #: 23 and when I open the file in either Mplus editor or textedit, I can see that there are several *'s scattered throughout the file. Any idea on why this is and how it can be fixed? Is it related to missing data? I have specified missing =all (99) thank you 


When you read data that you have saved, you need to read it according the the information at the end of the output where it was saved. The * is a missing value flag that requires MISSING = *; 

Dina Dajani posted on Saturday, December 05, 2015  11:28 am



Hi Dr. Muthen, When manually doing the BCH method for the first step I indicate to SAVE=bchweights; But the file does not have the bchweights, just has my indicators and auxiliary variables. Do you know what the problem might be? USEVARIABLES are DCNID BrfPInhT BrfPShfT BrfPEmCT BrfPIntT BrfPWMT BrfPPOrgT BrfPOgMT BrfPMonT WISCDigB StatuTot; MISSING ARE ALL (999); CLASSES = c(3); IDVARIABLE = DCNID; AUXILIARY = AnxDepT PriDx1 PriDx2; ANALYSIS: TYPE = Mixture; Starts = 0; OUTPUT: SAMPSTAT; SAVEDATA: FILE IS "\datastore01.psy.miami.edu\Groups\LUddin_Lab\Dina Dajani\Projects\KKI\latentprofileanalysis\bch\bch.dat" SAVE= bchweights; 


Please send output to Support along with your license number. 


Hello I have a question about interpreting the model results. I have a 3 class model with a continuous distal outcome, 5 categorical covariates and 2 continuous. How are the Y on X estimates to be interpreted? as beta coefficients? Are the intercepts for Y the class specific means? thank you 


Q1Q2: Yes, as for regular linear regression. Q3: No, they are classspecific intercepts. 


Hello Can someone explain how to interpret the class specific intercepts mentioned in the above post. 


They show the influence of the latent class variable on Y beyond the influence of the covariates. Think of the latent class variable as a dummy covariate in linear regression  it changes the intercepts. 

Dina Dajani posted on Saturday, April 23, 2016  11:15 am



If I am not mistaken, the class specific intercepts represent the classspecific means of Y 


If Y is regressed on something, the intercept is estimated instead of the mean. 


Thankyou! 

Ryan Grimm posted on Friday, May 06, 2016  2:43 pm



I've used the BCH with 3 distal outcomes, one of which is continuous and 2 are binary. I also used DCAT & DCON with the same distals. There is a lot of missing data on each of the three distals, and this was reported in the output for DCAT & DCON. But, with the BCH, I received the following messages: PROBLEMS OCCURRED DURING THE ESTIMATION FOR THE DISTAL OUTCOME KMTHIRT. PROBLEMS OCCURRED DURING THE ESTIMATION FOR THE DISTAL OUTCOME LAMAJOR2. The results said 999 for all of the estimates for these 2 distals. However, the 3rd distal, which was binary, ran fine. Any ideas as to why this may have occurred? Just to confirm, does the BCH assume MAR for the distal outcomes? Thank you very much! 


BCH uses listwise for the distal outcome so if you have a lot of missing on it, this is problematic. Regarding your problematic run, send output to Support along with your license number. 


Hello I've used the manual BCH with several continuous distal outcomes but I am not sure how to do the same for categorical outcomes. I want to examine the effect of latent class membership on a categorical outcome (DCF_MALT) after controlling for three variables which are ces_t1, T1_FINAN, and HISPANIC. To this end, I wrote the following input code: Usevar are DCF_MALT ces_t1 T1_FINAN HISPANIC BCHW1BCHW4; Categorical =DCF_MALT; Classes = c(4); Training=BCHW1BCHW4(bch); Analysis: Type = Mixture; Starts=0; Estimator=mlr; Model: %overall% DCF_MALT on ces_t1; DCF_MALT on T1_FINAN; DCF_MALT on HISPANIC; c on ces_t1; c on T1_FINAN; c on HISPANIC; When I added the same regressions into the class specific part of the model, I received an error notification that those statements were ignored: The following MODEL statements are ignored: * Statements in Class 1: C#1 ON CES_T1 C#1 ON T1_FINAN C#1 ON HISPANIC C#2 ON CES_T1 C#2 ON T1_FINAN C#2 ON HISPANIC C#3 ON CES_T1 C#3 ON T1_FINAN C#3 ON HISPANIC I wonder if my input until the class specific part of the model is correct and how should I revise the input re: the class specific part of the model. Thanks! 


Is there a variant of the BCH method where I can predict the distal outcome while controlling for previous levels of that same outcome? (so, predicting change over time in a distal outcome) Thanks! 


Coskun: Use DCAT instead when distal is categorical. 


Mack: See Section 3.2 of the BCH paper (web note 21). 


Hi Dr. Muthen, Thanks for your advice re: using DCAT for categorical variables. However, I have a set of control variables which I'd used for continuous distal outcomes and I'd like to be able to control for the same variables while examining the categorical outcomes. It is my impression that you can't add controls into the model while using DCAT. Am I mistaken? 


With control variables you can use the manual approach. 


Hi Dr. Muthen, I tried the manual BCH for categorical outcomes but the code I wrote did not quite work out. I want to examine the effect of latent class membership on a categorical outcome (DCF_MALT) after controlling for three variables which are ces_t1, T1_FINAN, and HISPANIC. I'm attaching here the input I used in the second step of manual BCH. I'll greatly appreciate if you could tell me which part of the input was incorrect or needs to be revised. Usevar are DCF_MALT ces_t1 T1_FINAN HISPANIC BCHW1BCHW4; Categorical = DCF_MALT; Classes = c(4); Training=BCHW1BCHW4(bch); Analysis: Type = Mixture; Starts=0; Estimator=mlr; Model: %overall% DCF_MALT on ces_t1; DCF_MALT on T1_FINAN; DCF_MALT on HISPANIC; c on ces_t1; c on T1_FINAN; c on HISPANIC; %c#1% DCF_MALT on ces_t1; DCF_MALT on T1_FINAN; DCF_MALT on HISPANIC; c on ces_t1; c on T1_FINAN; c on HISPANIC; %c#2% DCF_MALT on ces_t1; DCF_MALT on T1_FINAN; DCF_MALT on HISPANIC; c on ces_t1; c on T1_FINAN; c on HISPANIC; %c#3% DCF_MALT on ces_t1; DCF_MALT on T1_FINAN; DCF_MALT on HISPANIC; c on ces_t1; c on T1_FINAN; c on HISPANIC; %c#4% DCF_MALT on ces_t1; DCF_MALT on T1_FINAN; DCF_MALT on HISPANIC; c on ces_t1; c on T1_FINAN; c on HISPANIC; 


Please send the output and your license number to support@statmodel.com. 


I will! Thanks! 

Daniel Lee posted on Tuesday, November 01, 2016  4:33 pm



Hi Dr. Muthen, I used Model Test command (e.g., intercept from class1 vs. intercept from class2) to conduct Wald's Chisquare test (taking into account several covariates). I would essentially constrain the intercept of an outcome (alcohol) in class 1 to equal the intercept of an outcome in class 2) using the model test command. For example: Model: %OVERALL% C ON SEX HSYE; ALC MARIJ NICT ON SEX HSYE; %C#1% [ALC](m1); [MARIJ](m2); [NICT](m3); %C#2% [ALC](m4); [MARIJ](m5); [NICT](m6); %C#3% [ALC](m7); [MARIJ](m8); [NICT](m9); Output: SAMPSTAT TECH4 TECH7; Model Test: m2 = m8; Is this the Model Constraint method you were talking about to examine whether intercepts in classes are significantly different, when using BCH method? I tried following the Mplus manual on the Model Constraint command, and I had trouble understanding how I would actually implement this for the BCH method. But the Model Test command appears to constrain parameters to test whether the difference is significant (although this method may not be suitable). If I am on the right track, please let me know. If I should change my analysis, and actually use the model constraint command, I would appreciate any guidance (e.g., video tutorial, article). Thank you!! 


This use of Model Test is correct. 

Jin Qu posted on Wednesday, November 30, 2016  9:28 am



1.First, I used manual 3step BCH approach. Model: %overall% ZIN on Race; %C#1% ZIN on Race; %C#2% ZIN on Race; Output: Estimate S.E. Est./S.E. PValue Class 1 ZINT ON RACE 0.127 0.271 0.466 0.641 Intercepts ZINT 0.123 0.249 0.495 0.621 Class 2 ZINT ON RACE 0.542 0.374 1.448 0.148 Intercepts ZINT 0.483 0.330 1.463 0.143 However, the results changed when I include the model testing. The estimate of race for every class now is .329 and the ZINT intercept changed too. Is there something wrong in the codes? model: %overall% ZINTER4 on RaceDi; %C#1% [ZINTER4] (m1); %C#2% [ZINTER4] (m2); model test: m1=m2; Output: TwoTailed Estimate S.E. Est./S.E. PValue Class 1 ZINT ON RACE 0.329 0.174 1.887 0.059 Intercepts ZINTER4 0.243 0.184 1.319 0.187 Class 2 ZINT ON RACE 0.329 0.174 1.887 0.059 Intercepts ZINT 0.352 0.222 1.587 0.113 

Jin Qu posted on Wednesday, November 30, 2016  9:31 am



Dr. Muthen, Hi. Please see above for my first question. My second question is can I include 2 covariates in the BCH approach? Thank you! E.g., DATA: file= manBCH2.dat; VARIABLE: usevariables are ZINTER4 RaceDi W1W4 gender C1C4; classes = c(4); training=W1W4 (bch) C1C4 (bch); analysis: Type=Mixture; starts=0; estimator=mlr; model: %overall% ZINTER4 on RaceDi gender; 


We ask that postings be made in one window only. For long postings like this, please send the relevant outputs and questions to Support along with your license number. 

Chris Giebe posted on Thursday, December 08, 2016  9:24 am



Hello, I am having the same problem as Dina, where I'm trying to run the first step of a manual BCH, but the bchweights do not show up in the generated .dat file. SAVEDATA: File = manual_BCH_est.dat; Save = bchweights; Looking at the output, it seems to have saved CPROBS instead. Thanks for your help. Chris 


Please send output and saved file to Support along with your license number. 

S Elaine posted on Wednesday, January 04, 2017  12:01 pm



I'm following web note 21 v. 2 (example 3.2) to use the BCH method to run a regression aux model combined with latent class regression. I've followed steps 1 and 2 and not had any issues; now, I'd like to test whether there are sig differences between the classes on the DV (ALCHPRB). I've found several examples of how to do this online, all seem to be different. Could you let me know if this is the proper way to use the model constraint option? If so, I continuously get the following message and don't know how to resolve this: WALD'S TEST COULD NOT BE COMPUTED BECAUSE OF A SINGULAR COVARIANCE MATRIX. Model: %Overall% C on Age Gender minority Chldses PAP PRALCHL BSI_GSI; Alchlprb on Age Gender minority Chldses PAP PRALCHL BSI_GSI; %c#1% Alchlprb on Age Gender minority Chldses PAP PRALCHL BSI_GSI(p1); %c#2% Alchlprb on Age Gender minority Chldses PAP PRALCHL BSI_GSI(p2); %c#3% Alchlprb on Age Gender minority Chldses PAP PRALCHL BSI_GSI(p3); %c#4% Alchlprb on Age Gender minority Chldses PAP PRALCHL BSI_GSI (p4); MODEL TEST: 0 = p1 p2; 0= p1p3; 0=p1p4; 0=p2p3; 0=p2p4; 0=p4p3; 

Daniel Lee posted on Wednesday, January 04, 2017  12:48 pm



Hi, I know BCH method uses listwise deletion to handle missing data. Is there a way to treat missing data differently, like multiple imputation or FIML, when using BCH method? Thank you! 


Answer for Elaine: Say MODEL TEST: 0 = p1 p2; 0= p1p3; 0=p1p4; The last 3 statements that you have are redundant (if 2, 3, and 4 are the same as 1, then 2, 3, and 4 are also the same). 


Answer for Daniel: No. 

S Elaine posted on Thursday, January 05, 2017  8:43 am



Thank you for you response. This produced the following under model fit information: Wald Test of Parameter Constraints Value 1.123 Degrees of Freedom 3 PValue 0.7715 I see many studies reporting Chisq and/or Wald statistics for each class comparison (unique stats when comparing class 4 vs. 1, 4 vs. 2...3. 3 vs. 2, etc) on the DV. However, I've only been able to produce one value, and cannot find guidelines for how this information is obtained using the lasted BCH recommendations. I saw your recommendation 10/21/2014 here re: class specific intercepts: http://www.statmodel.com/discussion/messages/13/20479.html?1465244548 I'm trying to locate recent papers that use the recommendations from web note 21 version 2 (3.2). I'm interested in reviewing examples that reporting findings using this approach, but have not been successful in locating any in the social sciences... any guidance, references, or suggestions would be appreciated! 


For comparing e.g. 4 vs 1, you need to do several runs, each with only that comparison. Regarding your last question, if you don't find it among our latent class papers under Papers, you may want to ask on SEMNET. 

Jamie Taxer posted on Tuesday, January 24, 2017  4:31 pm



I am trying to use the manual BCH approach to examine if an auxiliary variable is a significant predictor of latent class membership. I used the syntax given in Web Note 21 section 3.2, step 2 and as suggested removed the y's. However, when I just include an auxiliary variable that is predicting latent class membership, I keep getting the message "One or more variables in the data set have no nonmissing values. Check your data and format statement." According to the warnings there are 249 cases of missing on all variables other than xvariables. This is however, not the case. There should only be around 20 cases of missing values. I have tried the syntax below with two different data sets and get the same error message. Can you please tell me where I am going wrong? Data: File = manBCHStep1_HS.dat; Variable: Names = ZENTH3 ZENTH5 ZENTH6 ZENTH7 ZJOY1 ZJOY4 ZJOY5 ZJOY3 SE ANG AX EMOEX MH PH JOBSAT MOT ACH DIS SOCDES B5EX BCHW1 BCHW2 BCHW3 BCHW4; Missing are *; Usevariables = socdes b5EX BCHW1BCHW4; Classes = c (4); Training = BCHW1BCHW4(bch); Analysis: type = mixture; Starts =0; Model: %overall% c on b5EX socdes; 


Please send the input, output, data and license number to Support so we can check what's going on.. 

Xinyi He posted on Monday, February 20, 2017  6:37 am



what kind of statistic test does Mplus use in the bch method or dcat method£¿chisquare test or wald test£¿ 


The Wald chisquare test. 


Hello, I am having the same problem that others have had using the BCH weights, they are not showing up in the file. Has there been any solution to this? thanks! 


We know of no such problem  send your relevant files to Support along with your license number. 

Daniel Lee posted on Monday, May 22, 2017  9:50 am



Hi Dr. Muthen, I have submitted a paper using the BCH method and the reviewer recommended that I use expectationmaximization (via SPSS) first and then rerun BCH analysis. A large proportion of the sample (almost half) was dropped because of missing data on exogeneous variables. Would this be a plausible solution (Expectation Maximization) for handling missing data when using the BCH method? Thank you! 


Sounds like the reviewer is suggesting dealing with missing data. But it doesn't make sense to me because the usual EM algorithm only produces a mean vector and covariance matrix which is not sufficient information for mixture modeling  plus the wrong (nonmixture model) is used. Missing on exogenous variables not in the first step is tricky to handle. Multiple imputation can be used but limits what can be done. Changing from 3step to 1step where the exogenous variables are included in the model is computationally demanding. Perhaps the best that can be done is to check if the subsample with no missing is different in important ways and if not rely on the results from the subsample. 

Daniel Lee posted on Wednesday, May 24, 2017  6:47 am



That is very helpful! As followup, in addition to mean vector and covariance matrix, what other information is used in mixture model that EM imputation does not produce? Thank you!! 

Daniel Lee posted on Wednesday, May 24, 2017  12:43 pm



I apologize for asking a second string of questions in a separate post: 1) If I include a predictor (e.g., gender) as a withinclass predictor in my BCH model (2 trajectory classes), and sex differences in Y were observed in one trajectory class (e.g., Class 1; with males higher than females on Y), but not in the other class (e.g., Class 2; males and females not significantly different on Y), would I be able to compare mean differences in the following way: Males in Class 1 vs. Members of Class 2 Females in Class 1 vs. Members of Class 2 2) Although I'm not looking at an interaction effect specifically, as one typically would in a regression model, would I be able to say that sex modified the effect of the latent class variable on Y IF males in Class 1 had the highest value of Y compared to females in their own class, and males/females in Class 2? Thank you again! 


Post 1: Higherorder moments (skew, kurtosis, etc all the way up to working with raw data  that is, mixture modeling needs raw data. Post 2: When you say "withinclass predictor", do you mean in the first or the last BCH step? When you say you want to compare means, do you mean in the first or the last BCH step? 

Daniel Lee posted on Thursday, May 25, 2017  8:00 am



Hi Dr. Muthen, I meant the last step. For example, I might regress Y on sex for each class to examine the unique influence of sex on Y for each class. I would then do a wald chisquare test. So for example, if the effect of sex (female = 0) was .123 in CLASS 1, I would add .123 to the intercept and write: Model Test: 0 = (INT1 + .123)  (INT2) *Intercept2 is the mean of Y for class 2 (no sexeffect in this class). So this is essentially, at least in my head, males in class 1 vs. males/females in class 2. 

lisa Car posted on Thursday, May 25, 2017  2:55 pm



Hello I am wondering what are the advantages of using the BCH method for association of classes with outcomes, compared to regular linear regression i.e. not in a joint model? Also, if running the BCH, is it possible to get explained variance in the output? thank you! 


Lee post: A quick check suggests that this seems ok. 


Car post: Q1: By regular linear regression perhaps you mean regressing the outcome on a set of dummy variables representing most likely class membership. If so, you would be ignoring measurement error in the classification. Q2: Not auto from Mplus but you can express it yourself. 

Daniel Lee posted on Thursday, June 01, 2017  8:19 am



Hi Dr. Muthen, is there a way to compare a BCH model (last step) with gender included as a between class predictor vs. the same model except, this time, gender is a between & withingroup predictor? The model has a distal outcome & there are three classes. Thank you! 

Daniel Lee posted on Thursday, June 01, 2017  8:21 am



Sorry, as a point of clarification, by compare I mean model fit comparison (e.g., BIC). 


BIC works because the different models have the same set of DVs 

Daniel Lee posted on Wednesday, June 07, 2017  8:05 am



Thank you. If I may ask one more question  is a multigroup analysis possible for BCH model at step 2? 


Not sure if you can get Knownclass to do that  haven't tried. 

Jin Qu posted on Sunday, June 18, 2017  11:01 am



I am using the BCH method for my paper. What is the full name of the BCH method? I searched Asparouhov & Muthen (2014) webnote, but did not find it. 

Wendy Rote posted on Monday, June 19, 2017  3:15 pm



Hi, I'd like to use the manual BCH method to estimate profile differences (From an LPA on Wave 1 variables) in Wave 2 outcomes controlling for levels of those same outcomes at wave 1. I've done this in the step 2 syntax by regressing each w2 outcome variable on its w1 equivalent, requesting the means of the w2 variables in each profile, and using model constraint to compare them. This seems to run fine but I'm not sure whether I should model the autoregessive paths for each profile separately (as is done in webnote 21 when controlling for demographic predictors in an LPA modeling mean class differences) or for just for the model overall (as I assume would more similarly replicate a classic autoregressive path model with a categorical variable predicting autoregressive change over time). The results differ quite a lot depending on the choice. Any feedback would be really helpful. Thank you! 


The BCH comes from the first letters of the authors Bolck, A., Croon M. A., & Hagenaars, J. A. (2004) Estimating latent structure models with categorical variables: Onestep versus threestep estimators. Political Analysis, 12, 327. 


Wendy I would recommend Section 4 http://statmodel.com/download/webnotes/webnote15.pdf I would not be regressing indicator on indicator, rather regress latent class on latent class (otherwise you change the measurement model), i.e., if it gets too confusing stick the the standard latent transition analysis. Using BCH with 2 latent class variables is not very easy. I would use one at a time and possibly run a joint analysis (single step standard ML) with all measurement model parameters fixed to the BCH estimates. 


I'm using the BCH method to examine differences in distal outcomes across latent profiles. Is it possible to determine the group specific standard deviations for my distal outcomes? 

Wendy Rote posted on Thursday, June 22, 2017  8:04 am



Thank you Tihomir, I think I incorrectly described what I'm trying to do. I am not regressing indicator on indicator, but distal outcomes on themselves at an earlier wave. There is only one LPA, derived from indicators at W1.  Here is my Step 2 BCH syntax for regressing the distal outcome upon itself overall: USEVARIABLES ARE W1Tpsycm W3Tpsycm BCHW1BCHW3; MISSING IS All (999); Classes = c(3); Training = BCHW1BCHW3(bch); Analysis: Type = Mixture; Starts = 0; Estimator = MLR; Model: %Overall% W3Tpsycm on W1Tpsycm; %c#1% [w3Tpsycm] (b1); %c#2% [w3Tpsycm] (b2); %c#3% [w3Tpsycm] (b3); Model Constraint: New (b12 b13 b23); b12 = b1b2; b13 = b1b3; b23 = b2b3;  Here's the model section with class specific autoregressive paths: Model: %Overall% W3Tpsycm on W1Tpsycm; %c#1% W3Tpsycm on W1Tpsycm; [w3Tpsycm] (b1); %c#2% W3Tpsycm on W1Tpsycm; [w3Tpsycm] (b2); %c#3% W3Tpsycm on W1Tpsycm; [w3Tpsycm] (b3);  I'm trying to determine which model is more appropriate. I hope this clarifies my question. Thank you!! 


I would recommend this Model: %Overall% W3Tpsycm on W1Tpsycm; %c#1% W3Tpsycm on W1Tpsycm (c1); [w3Tpsycm] (b1); %c#2% W3Tpsycm on W1Tpsycm (c2); [w3Tpsycm] (b2); %c#3% W3Tpsycm on W1Tpsycm (c3); [w3Tpsycm] (b3); Model Constraint: New (c12 c13 c23); c12 = c1c2; c13 = c1c3; c23 = c2c3; If any of these new parameters is significant you should use the class specific autoregressive model. 


Jamie You can use a model like this to get the class specific variance. Model: %Overall% distal; [distal]; %c#1% distal; [distal]; %c#2% distal; [distal]; 


Hi, I'm using the BCH method to assess potential differences in distal outcomes across four latent classes per syntax in section 3.2 of Web Note 21. I have a set of covariates (12+) that influence my distal Ys and the latent class variable. I'm using classspecific models for the distal Ys. I'm wondering if there's a way to get the fitted means for my distal outcomes at the centroid? When I include my model for C on my included covariates, I get the classspecific intercepts/thresholds for my distal outcomes but am unable to label the covariate means that I would then use in Model constraint to get the classspecific centroid means for my distal outcomes. Mplus assumes that I’m trying to bring the covariates into the model and gives me the error message that I need to use ALGORITHM = INTEGRATION (FIML estimation which cannot be used with BCH weights). Is there another way to work around this so that I can get the necessary model parameters and use Model constraint (or some other procedure?) to compute and test for differences for the centroid means by class for my distal outcomes? Thank you for your assistance! 


You can instead use the actual sample means. That won't give you the exactly right SEs but they will be close. 

Jin Qu posted on Sunday, September 03, 2017  7:39 am



I am using the BCH method to include covariates for my latent profile analysis. Can I include more than 1 covariate at one time? for example, the outcome is "ZAGGR", while controlling for "crace" and "educati". classes = c(4); auxiliary= ZAGGR crace_D; analysis: Type=Mixture; OPTSEED=945065; savedata: File=manBCH2_AGG.dat; save=bchweights; PLOT: type = plot3; series = sfe_t6 (1) sf_t6 (2) sfr_t6 (3) sfERS (4) sfRS (5) sfRRS (6); 

Jin Qu posted on Sunday, September 03, 2017  7:41 am



Sorry I forgot to include the variable "educati" in my previous message. classes = c(4); auxiliary= ZAGGR crace_D educati; analysis: Type=Mixture; OPTSEED=945065; savedata: File=manBCH2_AGG.dat; save=bchweights; PLOT: type = plot3; series = sfe_t6 (1) sf_t6 (2) sfr_t6 (3) sfERS (4) sfRS (5) sfRRS (6); 


BCH is for a distal outcome, not covariates. If you want both, use the method described in Section 3.2 of our BCH paper. 

RuoShui posted on Wednesday, September 06, 2017  5:32 pm



Dear Drs. Muthen, I am using the manual BCH method to estimate how the latent classes are different on the outcome variable, controlling a range of covariates. From the above postings, I understand that when covariates are included, the intercepts of the outcome were estimated across latent classes. But I am still unsure how to compare the means across classes. In your response to "Sharon" above, you said, that actual sample means can be used. Can you please explain a little more what do you mean by that and how to do this within the BCH manual approach? Thank you! 


Try using TECH4. 

RuoShui posted on Thursday, September 07, 2017  4:05 pm



Thank you Dr. Muthen! I did TECH4 and obtained the estimated latent means. I am wondering if there is a way to test the differences of the estimated latent means across the classes? Thanks again! 


The model you are describing is focused on the conditional expectation E(YC,X) and not E(YC). Realize that it is somewhat of a mute question to ask if E(YC) is class invariant if E(YC,X) is not. It can happen in some strange/particular distribution of the [XC], however, if E(YC,X) is not classinvariant one generally should conclude that E(YC) is not classinvariant. If your question is regarding E[YC] you should remove the covariates from the the BCH estimation and get a direct answer to that. You can also write out in model test E(YC) as a function of the mean of X and the regression coefficient (you would need to include in the model the distribution of X) thereby directly test the quantities of tech4. 


Dear Drs Muthen, I'm using the manual BCH method to assess potential differences in a continuous distal outcome Y across four latent classes. I have a set of covariates that I would like to adjust for by regressing Y on the covariates under the %overall% command. However, I receive an error message stating that the sample variance of one of the covariates is negative in class 1 and that the standard errors of the model parameters cannot be computed. Is there a way to prevent this error message without making this covariate endogenous and fixing its variance to equality across latent classes? Thank you. 


No, except deleting the covariate or the class. I would investigate why and if it makes sense that the covariate doesn't have variance in that class, perhaps using Most Likely Class. 


Thank you for your previous response. I am now considering different approaches to address missing data when using the manual BCH method. My continuous distal outcome is the intercept from a latent growth curve model for alcohol use, therefore I am using FIML estimation to include those with at least 1 of 4 repeated alcohol measures. I would also like to use inverse probability weighting to address potential bias from missing data on the latent class exposure and covariates. However, when I include the inverse probability weight in the model, the latent class distribution changes from the unweighted model (including the final class counts based on their most likely latent class pattern). Is this because inverse probability weighting should not be combined with using the BCH weights? Thank you. 


From your description it looks to me that the change in the latent class distribution has nothing to do with BCH. In principle you can use sampling weight with BCH, but using sampling weights to adjust for missing data in the covariates is not something we would recommend. I think we generally would recommend that you convert the missing variables to endogenous variable or impute the missing data from an imputation model. 


Thank you Tihomir. Can I just check why you would not recommend using sampling weights to adjust for missing data in the covariates? 


It is not a proper technique to deal with missing data. Using multivariate full information modeling or multiple imputation are the two most well established missing data methods. Sampling weights should be used when the observations were not sampled at random, and they should not be used for other purposes. Using poststratification is a common method for calibrating the sample covariate distribution to population totals. That is not however a way to deal with missing values. It is also irrelevant if you are estimating a model [YX] rather than [Y,X]. 

Jin Qu posted on Tuesday, February 20, 2018  1:50 pm



I am using the BCH method described in Section 3.2 in Webnote 21 to predict distal outcomes (internalizing) from latent profiles while controlling for covariates (racedi). Then, I calculated means based on the intercepts, slopes, predictor means that I obtained from the output. I wonder if I could obtain standard deviation for the means of the distal outcomes? See below for my model. Thanks! model: %overall% ZINTER4 on RaceDi; c on RaceDi; %C#1% ZINTER4 on RaceDi; [ZINTER4] (m1); %C#2% ZINTER4 on RaceDi; [ZINTER4] (m2); %C#3% ZINTER4 on RaceDi; [ZINTER4] (m3); %C#4% ZINTER4 on RaceDi; [ZINTER4] (m4); model test: m2=m4; 


You can do something like that %C#1% ZINTER4 on RaceDi (beta1); [ZINTER4] (m1); ZINTER4 (rv1); [RaceDi]; RaceDi (v1); model constraints: new(sd1); sd1=sqrt(rv1+beta1*beta1*v1); You can also get these using output:residual without modifying the model 


I'm using the bch method to run some analyses and I am running into some issues. Using the syntax below, I am getting this message: " *** ERROR in ANALYSIS command TYPE=MIXTURE is not available for multiple group analysis." I am following the example 3.1 of webnote 21 (p.8). Can you please advise? syntax: IDVARIABLE IS famid; MISSING ARE ALL (999); USEVARIABLES ARE icethnic icsex groupid YTOTEXT3 YTOTINT3 ICTOTINT4 ICEXT4 TOTINT5 TOTEXT5 bchw1 bchw2 bchw3; classes=c(3); Training=bchw1bchw3(bch); DATA:file=manbch2; ANALYSIS: TYPE=mixture; starts=0; estimator=mlr; MODEL: %overall% totint5 on icethnic icsex groupid YTOTINT3 ICTOTINT4; %c#1% totint5 on icethnic icsex groupid YTOTINT3 ICTOTINT4; %c#2% totint5 on icethnic icsex groupid YTOTINT3 ICTOTINT4; %c#3% totint5 on icethnic icsex groupid YTOTINT3 ICTOTINT4; 


We need to see our full output  send to Support along with your license number. 


I want to determine whether classes show different mean levels of dep2 after controlling for sex and dep1 (syntax below). I have 2 questions: 1. Does a significant intercept indicate that c2 predicts dep2 after controlling for sex and dep1? 2. How can I determine whether the intercepts of each class for dep2 are different from each other? Latent Class 1 Dep2 ON sex 0.866 0.891 0.423 0.672 dep1 0.651 0.703 0.927 0.354 Intercepts Dep2 0.765 1.222 2.263 0.224 Latent Class 2 Dep 2 ON sex .287 1.891 0.423 0.490 dep1 .674 0.124 0.927 0.203 Intercepts Dep2 3.649 1.066 3.422 0.001 


You want to look at the difference between the class 1 and class 2 intercepts to see if class influences the DV controlling for the IVs. You do that using the Model Test command with parameter labels defined in the Model command, e.g. Model Test: New(diff); diff = inter2  inter1; where inter1 and inter2 are intercept parameter labels. 


Thank you, Dr. Muthen. Does this look about right? MODEL: %overall% Dep 2 on sex dep1; %c#1% Dep 2 on sex dep1; [dep2](inter1); %c#2% Dep 2 on sex dep1; [dep2](inter2); MODEL TEST: New(diff); Diff =inter2 – inter1; 


Good Afternoon, I am using the bch approach as outlined in webnote 21. I identified 3 profiles (n's = 126, 545, and 124). I entered the covariates and DVs and saved the bch weights. When I ran analyses looking at the effect of the covariates on the DV, the profile n's shifted (n's = 59, 670, and 40). I thought the class n's were not supposed to shift using the bch approach. Can you please clarify? Thanks! 


Answer to Peterman: Looks fine. 


Answer to Fowler: Send outputs from your first and last steps to Support along with your license number. 


I'm having the same issue as Jill above. I am trying to use the automatic BCH method with LPA. I keep getting the following error message: *** ERROR in ANALYSIS command TYPE=MIXTURE is not available for multiple group analysis. Here is the input: variable: names=id common serious gender eth major femin genid value identity; usevariables = common serious; idvariable = id; classes=c(3); auxiliary = value(bch); missing = all(99); data: file=a1.dat; analysis: type=mixture; 


Please send your full example to support@statmodel.com We can't replicate the problem. 


Hello I'm using the manual BCH method to assess potential differences in a continuous distal outcome Y across three latent classes (my indicators are four 3level ordinal variables). I would like to incorporate residual association between 23 indicators using PARAMETERIZATION=RESCOVARIANCES command. I have a set of covariates that influence Y and/or latent class variables. However, I receive an error message stating SAVE=BCHWEIGHTS is not available with ALGORITHM=INTEGRATION. Is there a way to incorporate the residual association in latent class for 2step BCH model? Thank you! 


It is not available. You can use the 3step approach as an alternative. 


Dear Sir/Madam, I have used the BCH method to compare the mean of a continuous auxiliary outcome across 4 classes. The output provides the Wald chisquare statistic and accompanying pvalue. Most journals ask to report effect sizes and CI. I'm struggling how to infer these from the output. Would it be correct to just calculate the standardized mean difference and its CI from the estimated means of the classes? I'm in doubt because in one of the cases the Wald test is significant (p=0.036), but the CI around the SMD contains the zero, indicating that the differences in means are not significantly different. Could you please clarify this? Thank you in advance. 


Using the example on page 6 http://statmodel.com/examples/webnotes/webnote21.pdf and the forth class as the reference class you can compute the effect size as Effect=1.0630.295=1.358 Then you can use the Class 1 vs. 4 chisquare value to get the Zvalue by taking the square root Zvalue=sqrt(99.557)=9.9778 now you can get the standard error for the effect SE=ABS(Effect/Zvalue)=ABS(1.358/9.9778)=0.1361 The confidence bound for the Effect is [Effect1.96*SE,Effect+1.96*SE]= [1.624759528, 1.091240472] 


Thank you very much for the very helpful answer. One additional question: if I would like to report the standardized mean difference, is it correct to take the following steps? 1. Convert the SE of the class mean into a SD by SE*(square root(n)) 2. Calculate the SMD by dividing the raw mean difference between two classes by the pooled SD of the two classes 3. Get the SE of the SMD by SMD/zvalue (square root of chisquare) 4. Compute the 95% CI as above 


For that purpose I would recommend using the manual BCH approach. You can form the standardize mean differences in model constraint to obtain the proper SE and confidence intervals. See Section 3 in http://statmodel.com/examples/webnotes/webnote21.pdf to see how the manual BCH is conducted. The model constraint is illustrated in User's Guide example 3.10. You provide labels for the model parameters and then use them to form whatever difference you want. 

Scot Seitz posted on Friday, January 18, 2019  7:38 am



Based on the post in this forum on Friday, June 22, 2018 at 4:33 pm, it seems that the PARAMETERIZATION=RESCOVARIANCES command is not available for BCH. When using the manual BCH method, can residual covariances be included if the indicators are continuous? Thank you! 


I think so  try it. 


Hello, I'm using the manual BCH method to examine the potential relation between latent class membership and an outcome (Y), controlling for a set of covariates (X1X4). I completed the first step and decided on a model with 4 latent classes. I am now on the second step and would like to know if latent class membership significantly predicts the outcome variable, controlling for my covariates. Based on the messages on this discussion board, I've noticed two ways of doing this. I'm wondering which approach is correct. Model 1: MODEL: %overall% CL ON X1 X2 X3 X4; Y on X1 X2 X3 X4; %cl#1% [OB_ES] (m1); %cl#2% [OB_ES] (m2); %cl#3% [OB_ES] (m3); %cl#4% [OB_ES] (m4); MODEL TEST: m1 = m2; m1 = m3; m1 = m4; Model 2: MODEL: %overall% CL ON X1 X2 X3 X4; Y on X1 X2 X3 X4; %cl#1% Y on X1 X2 X3 X4; [OB_ES] (m1); %cl#2% Y on X1 X2 X3 X4; [OB_ES] (m2); %cl#3% Y on X1 X2 X3 X4; [OB_ES] (m3); %cl#4% Y on X1 X2 X3 X4; [OB_ES] (m4); MODEL TEST: m1 = m2; m1 = m3; m1 = m4; Thank you! 


Sorry, just want to clarify that in the above syntax OB_ES is the same as Y. Thanks. 


Either approach is fine. The second approach implies that the Y on X slope varies across the classes  that is, you have an interaction between the latent class variable and X in their influence on Y. 

Scot Seitz posted on Saturday, February 23, 2019  2:56 pm



Can sample weights be used during the second step of the manual BCH method? Thank you! 


The sampling weight should be used during the first and the second stage. 


Hello, When running the second step of the BCH approach I get the following error message: WARNING: THE SAMPLE COVARIANCE OF THE INDEPENDENT VARIABLES IN CLASS 2 IS SINGULAR. PROBLEM INVOLVING VARIABLE OB_ES. THE MODEL ESTIMATION DID NOT TERMINATE NORMALLY. THE COMPUTATION OF THE FISHER INFORMATION MATRIX COULD NOT BE COMPLETED. THE STANDARD ERRORS OF THE MODEL PARAMETER ESTIMATES COULD NOT BE COMPUTED. THIS IS OFTEN DUE TO THE STARTING VALUES BUT MAY ALSO BE AN INDICATION OF MODEL NONIDENTIFICATION. CHANGE YOUR MODEL AND/OR STARTING VALUES. THE SAMPLE COVARIANCE MATRIX COULD NOT BE INVERTED FOR CLASS 2. PROBLEM INVOLVING VARIABLE OB_ES. Is there any way I can proceed with my current model given this error message? Thank you. 


See page 4 https://www.statmodel.com/examples/webnotes/webnote21.pdf If holding the variances equal across class doesn't work for you switch to the 3step manual approach. 

fred posted on Tuesday, April 09, 2019  4:32 am



Hi, when I try to replicate the example on page 11 on the webnote on BCH method i get the error message: "TYPE=MIXTURE is not available for multiple group analysis." My code is Variable: Names are ...G1G8; Missing are all (999); Categorical are G1G8; Usevariables are G1G8; CLASSES = c (3); Auxiliary=Outcome age_cent ; Data: file=manBCH.dat; Analysis: Type = Mixture; Savedata: File= manBCH2.dat; Save=bchweights; 


Send your output to Support along with your license number. 

fred posted on Tuesday, April 09, 2019  10:12 pm



Thanks, I found out the problem which was a line being repeated in the input. So I could save the BCH weights. For the next step I have two questions. 1. The Variable names line includes MLC, but looking at the oder and format of variables it seems that the last saved variables are BCH weights, and looking at the BCH file it does not look like it contains the most likely class variable.. is including MLC in the variable name list still correct? 2. Obviously several covariates can be included in model command, but can there be only one y (outcome) at a time that can be included in the model? This seems to be the case for automatic DE3step as well. Am I correct? 

fred posted on Wednesday, April 10, 2019  6:54 am



Another problem I am seeing is that it looks like there are missing data on the saved file (there are *s in the data) and the second step command dosent run ( *** ERROR Invalid symbol in data file: "*" at record #: 21, field #: 9). 

fred posted on Wednesday, April 10, 2019  9:51 pm



I retract my question about *, can see that it should be coded as missing. 

fred posted on Thursday, April 11, 2019  12:32 am



So by specifiying "*" as missing, and including only one distal outcome the BCH analysis could run. However I do not get the Wald test and receive the error message: WALD'S TEST COULD NOT BE COMPUTED BECAUSE OF A SINGULAR COVARIANCE MATRIX. Can this be resoved? the DCON option had earlier produced the mean and difference tests, but not controling for the covariates as I try to achive here in BCH. Thanks 


At the end of each output file there is a section "SAVEDATA INFORMATION" which will tell you what is being saved and where. Add save=cprob; to get the most likely class. Since you are saving the BCH weights you are using the manual BCH and with that aproach you can use any model including models with multiple dependent variables. The same applies to the manual 3step. You can probably resolve the Wald test problem by making sure that there are no more than K1 equations when you compare the means. For example, in a 3 class model the correct way to test equality of the means is model test: 0=m1m2; 0=m1m3; rather than model test: 0=m1m2; 0=m1m3; 0=m2m3; The last equation is superfluous and will cause the Wald test error. 

fred posted on Friday, April 12, 2019  7:18 am



Thank you so much! It sorted it out! in case of testing for equality of means of two dependent variables I enter something along: Model test: 0=m3m1; 0=m3m2; 0=n3n1; 0=n3n2; (m and n are intercepts of the two dep variables) Doing so gives me an overall Wald test with 4 df which I assume is 2df X2. Is there a way to determine which specific pair of means are significantly different (rather than the overall test) within the BCH? 

fred posted on Friday, April 12, 2019  9:16 am



To follow up the question about multiple comparisions when the overall Wald test is signifacnt: Is it possible in this case to get Effect sizes and SEs similar to your response to apresvious question from July 03, 2018? (The output does not look like the one in page 6 and I am assuming it is because the means are here controlled for by the predictors.) Also, is it possible to get the explained variance for each outcome in the class specific regressions? 


post 1: Use 2 runs. post 2: You can create any effect size you like in Model Constraint. Same for Rsquare. 

fred posted on Saturday, April 13, 2019  1:50 am



Thanks, answer 1 is clear, Regarding 2, is there a webnote or handout that described the prcoedure for using model constraint for ES and Rsq? 


No. You just have to express these quantities in terms of model parameters using labels given in the Model command. 

fred posted on Sunday, April 14, 2019  6:35 am



Thank you, is exemple 5.20 in UG applicable to BCH for specifying the parameters? Also does the R^2 that the STDY output produces not the class specific explained variance? 


Q1: It is useful. Directly applicable I don't think. Q2: Could well be; I have to see the full output to see the specifics. 

Daniel Lee posted on Thursday, August 08, 2019  8:32 am



Hi Dr. Muthen, I have read on some other posts that folks can now use multiple imputation when using the BCH approach. I am currently examining differences on a distal outcome across latent growth classifications (from a growth mixture model). The distal outcomes were collected 6 years later and I have some missing data (due to study drop out). I saw in User Guide example 9.5 Mplus syntax/description for conducting multiple imputation. What I'm not quite sure of is whether I should use the data imputation command in the first step of the BCH procedure (when generating BCH weights and saving weights and variables to a new dataset), or in the second step of the BCH procedure (running the analysis with BCH weights). Also would you the syntax for multiple imputation be similar for BCH approach in relation to what's detailed in the user guide section 9.5? Thank you so much. 


I don't think you need multiple imputationin in either step. We usually recommend that when covariates are missing, but we don't recommened it for dependent variables. Leave the missing values in place and let maximum likelihood deal with that. 

fred posted on Sunday, September 15, 2019  6:43 am



Hi, I am running a manual BCH analysis, at the first step the BCH data file with auxillary variables and the weights has been created, and I am attempting to run the second step (using a similar code as previous analyses which have been runing successfully). I then recieve an error message saying: *** ERROR Unexpected end of file reached in data file. I have listed the variable names exactly as the output of the first step (with the addition of MLC), and have checked for coding of missing. Still I get this message. Any help would be greatly appriciated! Fred 


Check that the number of columns in your data match the number of variables in your Variable statement. For both steps. 

shonnslc posted on Monday, October 28, 2019  8:27 pm



Hi, I am reading the BCH approach (https://www.statmodel.com/download/asparouhov_muthen_2014.pdf). It seems that the distal outcomes in the note are observed variables. What if my distal outcomes are latent variables. More like MIMIC (LCA as groups or predictors, latent variables as DV). How can I use BCH approach to accomplish this goal? Thank you! 


You have to use the approach given in Section 3 (manual BCH) where the MIMIC model becomes the auxiliary model. 


I am trying to determine whether class membership predicts a categorical outcome (y) using the bch method. In step 1, I saved the bch weights to be used in step 2 (see below). In step 2, do I need to specify that my outcome is categorical? USEVARIABLES ARE gender race y bchw1 bchw2; classes=c(2); Training = bchw1 bchw2(bch); MODEL: %overall% y on gender race; %c#1% y on gender race; [y](p1); %c#2% y on gender race; [y](p2); ANALYSIS: TYPE=mixture; starts=0; estimator=mlr; MODEL TEST: p1=p2; 


You should specify it as categorical and change to [y$1](p1); [y$1](p2); That will give you the proper logistic regression. 

DavidBoyda posted on Tuesday, February 18, 2020  2:23 am



Dear Support, I have used the Bch method for four different outcomes in my LCA model. In the equality tests of means, there are numerous comparisons. Does Mplus correct for multiple testing or does it estimate it a single run or something. I wish to mitigate any problems at review. bw D 


No correction is done for multiple testing. 

Back to top 