Message/Author 

Shige Song posted on Monday, May 22, 2006  8:00 am



Dear Linda and Bengt, I am tryint to estimate a twolevel growth model (threelevel model) with individually varying time points. The model looks like this:  ... Tscores = ag1991ag2000; within = bo ; between = me1991me2000; cluster = hhid; Analysis: Type = random twolevel missing ; estimator = ML; ALGORITHM=INTEGRATION Model: %WITHIN% iw sw  ht1991ht2000 at ag1991ag2000; iw sw on bo; %BETWEEN% ib sb  ht1991ht2000 at ag1991ag2000; me by me1991me2000; ib sb on me;  I got the error message: *** ERROR in Model command Redefinition of the following random effects: IB SB  HT1991 AT AG1991 What have I done wrong? Thanks! Best, Shige 


The AT statement should be only in the within part of the model. You can refer to the growth factors on both levels. Try the following: %WITHIN% i s  ht1991ht2000 at ag1991ag2000; i s on bo; %BETWEEN% me by me1991me2000; i s on me; If this does not work, send your input, data, output, and license number to support@statmodel.com. 

Shige Song posted on Monday, May 22, 2006  5:40 pm



Hi Linda, That seems to be working, thanks! I got something like 3000 integration points, which will probably take a long time. Shige 

Shige Song posted on Tuesday, May 23, 2006  3:23 pm



I have a conceptual question about twolevel growth model (threelevel analysis). In all of the exampels presented in the Mplus manual, the communitylevel (as opposed to individuallevel) covariate is timeconstant. This is a true "multilevel" data structure in the sense that all lower units are nested within higher units. My data has a different structure. I have four conceptual levels: observation, individual, household, and community (I have to combine the household and the communitylevel in order to utilise Mplus). Each individual has four measurements. What is interesting about my data is that both the household and the communitylevel covariates are timevarying too. As I remember, Mplus does not handel crossclassified random effects, so my questions is: what is the optimal way to deal with my data structure? I was thinking about imbeding a CFA model into the growth model. For example, one of the householdlevel covariates is household income. I will treat the household income measuremnet at four time points as indicator one latent factor, and use this latent factor as level2 covariate for the growth model. Does this soud like a viable approach? Many thanks! Best, Shige 


True, the User's Guide does not include examples with timevarying covariates on the Between level  but that is no extra problem. I don't see that as a case of crossclassified random effects  the betweenlevel covariates change over time, but the cluster membership does not (necessarily) change. Note also that Mplus Version 4 allows analysis with the new combined feature Type = Complex Twolevel. So you can have household be used for the Between part of twolevel modeling (repeated measures and individuals form the Within level) and community used for the correction of SEs and chisquare in line with Complex. Yes, it sounds fine to have a factor summarizing householdlevel income. 

Shige Song posted on Wednesday, May 24, 2006  1:53 am



Thanks Bengt. I think I have a better idea about how to proceed now. 

Shige Song posted on Thursday, May 25, 2006  12:30 pm



Hi Bengt, I identify two latent groups using 4 binary latent class indicators u1  u4. I am interested in showing that the growth trajectories (measured by continuous variable y1  y4) are significantly different between these two groups. The following code  Model: %OVERALL% i s  y1y4 at a1a4; i s on x; %c#1% [u1$1u4$1]; %c#2% [u1$1u4$1];  gives me the same parameter estimates of covariate x for the two latent groups. My questions is: how many ways are there to relax this crossgroup equality and allow different latent groups have different growth trajectories? Including interaction between the latent class membership and the covariate x is one way, are there others? Best. Shige 


The easiest way is to say Model: %OVERALL% i s  y1y4 at a1a4; i s on x; %c#1% i s on x; [u1$1u4$1]; %c#2% i s on x; [u1$1u4$1]; so that i s on x is class specific. The growth factor means are already class specific by default, resulting in different growth trajectories for the classes. 

Shige Song posted on Thursday, May 25, 2006  5:18 pm



Thanks for the clarification, that works well. Best, Shige 

Shige Song posted on Sunday, May 28, 2006  12:24 pm



Say I have 4 communitylevel (binary) covariates measured in 5 time points. Now I want to classify the communities (N=230) into groups based on these 4 covariates. I guess I can simply dump all 4*5=20 covariates in the model and let Mplus pick a number for me. Knowing that there are in fact only 4 covariates instead of 20 makes me a bit uncomfortable about the above solution. Will it better if I can account for the longitudinal structure when classifying the communities based on the observed covariates using latent class method? Are there methods for this? I am thinking about estimating a CFA for each of the 4 covariates on the 5 measurements, then estimating latent class model based on the 4 continuous latent variables. Does this sound like a reasonable solution? It looks something like this:  Model: %OVERALL% aa by aallo89  aallo00; fg by fgirl89  fgirl00; hc by hcsub89  hcsub00; oc by ochld89  ochld00; [aa*1 fg*1 hc*1 oc*1];  Best, Shige 

Shige Song posted on Sunday, May 28, 2006  4:37 pm



Also, due to the heavy computation required in latent variable modeling, I am thinking about splitting my big model into two parts: a latent class model that classifies community into two or three categories, generating latent class indicator and put it into the data using the SAVEDATA command; and a growth model that treates the newly generated latent class indicator as one of the many covariates in the model. Is this an acceptable solution? What do I lose compared to a twolevel latent class growth model? Thanks! Shige 


These are interesting questions and one could think of several strategies. A key question is what characteristics of the covariates are likely to define the latent classes. You have 4 measures at 5 time points  is it (1) the withintimepoint mean profile across the 4 measures, is it (2) the acrosstime trajectory of the covariates, or is it (3) the level of the covariates' trajectories? Under (1), you have a latent class analysis for each time point, leading to latent transition analysis. Under (2), you have a growth mixture model for each covariate over the 5 timepoints. Under (3), you can form an intercept growth factor (no trend, say) for each covariate across time and then have a mixture model with respect to the mean profiles of the 4 intercept factors. It is useful to break down a complex model into its parts. Approximating a onestep ML estimation with the multistep approach of estimating latent class membership and then use that as an observed variable (in this case covariate) does, however, have its problems. When regressing on these latent class dummies, you get biased slope estimates and SEs. Bias in the estimates come about because your force a person into being in only one class, whereas the onestep ML approach would use the fractional membership in several classes as a basis for parameter estimation. Bias in the SEs come about because you treat latent class membership as known, without sampling error. Still, the multistep approach can be used first as an approximation. 

Shige Song posted on Sunday, May 28, 2006  5:55 pm



Hi Bengt, Thanks for the informative answers to my questions. I need to think carefully about the three possibilities you mentioned. If I understand you correctly, my idea of a combination of a CFA and LCA as a classification tool is not a viable alternative to the three approaches you mentioned, is that correct? Also, the fact that all of my 4 indicators are binary does not change the applicability of the three alternative modeling strategies, does it? Since my goal at this step is make good classification based on the observed indicators, your alternative 3) seems to be the right way to go. This is getting more and more interesting. Thanks for the helpful comments! Best, Shige 

Shige Song posted on Monday, May 29, 2006  1:15 am



Hi Bengt, As for your approach no.3, is it something like this?  Model: %OVERALL% aa  aallo89@0 aallo91@1 aallo93@2 aallo97@3 aallo00@4; fg  fgirl89@0 fgirl91@1 fgirl93@2 fgirl97@3 fgirl00@4; hc  hcsub89@0 hcsub91@1 hcsub91@2 hcsub97@3 hcsub00@4; oc  ochld89@0 ochld91@1 ochld93@2 ochld97@3 ochld00@4; [aa*1 fg*1 hc*1 oc*1];  Shige 

Shige Song posted on Monday, May 29, 2006  1:08 pm



oops, it should be this instead:  Model: %OVERALL% aa  aallo89@0 aallo91@0 aallo93@0 aallo97@0aallo00@0; fg  fgirl89@0 fgirl91@0 fgirl93@0 fgirl97@0fgirl00@0; hc  hcsub89@0 hcsub91@0 hcsub91@0 hcsub97@0 hcsub00@0; oc  ochld89@0 ochld91@0 ochld93@0 ochld97@0 ochld00@0; [aa*1 fg*1 hc*1 oc*1];  Am I doing this right? Thanks! Shige 


Your CFA idea for the 4 covariates across the 5 timepoints sounds like alternative (3)  actually, it was Linda who suggested (3) to me  except you would get free loadings instead of fixed at 1. Fixing at 1 may be more warranted if no trend and wanting to invoke a random effects model. Alternative (3) should be set up like you did it in your last version, except change "@0" to "@1". Also, you don't need the last bracketed line  that's handled by default. 

Shige Song posted on Monday, May 29, 2006  11:48 pm



Thanks Bengt. As for the last line, how does Mplus know I want to use the four latent continuous variables as latent class indicators if I do not speficy in the model, since I also have 4*5=20 binary variables and some other variables in the data? This is something that has been bothering me for a while. Thanks! Shige 


Good question. This should be taken care of by the Mplus defaults. The way the model is set up, you are using the "" (bar) approach to growth modeling. The defaults for this situation are listed in the User's Guide. You see there that the thresholds of each binary outcome is held equal across time and the growth factor intercept mean is fixed at zero in one class and free in the other classes. These defaults can be modified of course, but they appear to be in line with what you want. Although if a growth model is not relevant but instead a factor model, you may consult ex7.27 and my factor mixture writing in the Recent Papers section. 

Shige Song posted on Wednesday, July 19, 2006  4:43 am



Hi Bengt, I am estimating a simple threelevel latent growth model (observation > person > community):  ... %WITHIN% iw sw  ht0@0 ht1@1 ht2*2 ht3*3 ht4*4 ht5*5 ht6*6 ht7*7 ht8*8 ht9*9 ht10*10 ht11*11 ht12*12 ht13*13 ht14*14 ht15*15 ht16*16 ht17*17 ht18*18 ; %BETWEEN% ib sb  ht0@0 ht1@1 ht2*2 ht3*3 ht4*4 ht5*5 ht6*6 ht7*7 ht8*8 ht9*9 ht10*10 ht11*11 ht12*12 ht13*13 ht14*14 ht15*15 ht16*16 ht17*17 ht18*18 ; ...  The within group slope factor loading and the between group slope factor loading are quite different (both are freely estimated). My questions are: 1) How to interprete these different factor loadings (within vs. between)? Should they be roughly identical? 2) Is it sensible to constraint them to be equal? 3) How to constraint them to be equal in Mplus? Thanks! Best, Shige 


Standard growth models hold the time scores equal across levels. I don't know what it means if they are not equal. Equalities are set using equality labels, for example, %WITHIN% iw sw  ht0@0 ht1@1 ht2*2 (1) ; %BETWEEN% ib sb  ht0@0 ht1@1 ht2*2 (1); 

Shige Song posted on Wednesday, July 19, 2006  2:33 pm



In my case, it will look like this: %WITHIN% iw sw  ht0@0 ht1@1 ht2*2 ht3*3 ht4*4 ht5*5 ht6*6 ht7*7 ht8*8 ht9*9 ht10*10 ht11*11 ht12*12 ht13*13 ht14*14 ht15*15 ht16*16 ht17*17 ht18*18 (1) ; %BETWEEN% ib sb  ht0@0 ht1@1 ht2*2 ht3*3 ht4*4 ht5*5 ht6*6 ht7*7 ht8*8 ht9*9 ht10*10 ht11*11 ht12*12 ht13*13 ht14*14 ht15*15 ht16*16 ht17*17 ht18*18 (1) ; Is it correct? Thanks! Shige 

Shige Song posted on Wednesday, July 19, 2006  2:42 pm



No, that did not seem to work. Then I try to put an equality label on each growth indicator like this: %WITHIN% iw sw  ht0@0 ht1@1 ht2*2 (2) ht3*3 (3) ht4*4 (4) ht5*5 (5) ht6*6 (6) ht7*7 (7) ht8*8 (8) ht9*9 (9) ht10*10 (10) ht11*11 (11) ht12*12 (12) ht13*13 (13) ht14*14 (14) ht15*15 (15) ht16*16 (16) ht17*17 (17) ht18*18 (18) ; %BETWEEN% ib sb  ht0@0 ht1@1 ht2*2 (2) ht3*3 (3) ht4*4 (4) ht5*5 (5) ht6*6 (6) ht7*7 (7) ht8*8 (8) ht9*9 (9) ht10*10 (10) ht11*11 (11) ht12*12 (12) ht13*13 (13) ht14*14 (14) ht15*15 (15) ht16*16 (16) ht17*17 (17) ht18*18 (18) ; I got error message saying "Growth factor indicators must be all observed or all latent." What did I do wrong? 


That should work, so there must be something else going on. Please send your output to support. Also, note that you can simplify the input using list functions like ht2ht18 (218); 

Shige Song posted on Wednesday, July 19, 2006  4:52 pm



I have sent the program and the data to tech support. Shige 


Hello, before starting with a threelevel growth model with timevarying level3 variables I found that no syntax examples concerning the modeling of timevarying level3 variables are available in the Userguide. Could you please provide such a syntax example where the slope of a level2 variable is regressed on timevarying level3 variables? Also, I wonder whether the data need to be 'stacked' for a threelevel growth analysis? Thanks 


See Examples 9.12 through 9.18 in the user's guide. These are a variety of threelevel growth models. They should serve as a starting point. You do not need to stack the data. 


may I ask a followup question: I might be wrong but concerning my question, examples 9.12, 9.13. 9.14 and 9.15 in the 4.1 users guide  as fascinating as they are  cover 'only' the effects of timeinvariant level3 (w)variables. Example 9.16 might serve as a starting point for my question  But this does not seem to be a threelevel analysis (?) Nor is the issue of timevarying level 3 variables covered. The question could be how to apply the new 'repetition' command to one or more repeatedly measured level3 variables on the %between% level. I was just wondering whether you could provide an a priori example for the idea of modeling timevarying level3 variable. Example: Think about 'successful participation in statistics seminars' (level 1 DV, measured 4 times) of Individuals (level 2) in Universities (level 3). A timevarying level 3 variable could be 'number of seminar rooms available per time point' Many thanks in advance 


Perhaps this helps  adding to ex9.14, you simply say on between: y1 on w1; ... y4 on w4; for the case of 4 time points and 4 timevarying covariates w1w4 which are on the between = list. 

Jing Zhang posted on Thursday, March 01, 2012  1:01 am



One followup question on timevarying covariates at level 3: If individuals move in and out of cluster, so that individuals included in each cluster will be different at different time points, how the syntax should be like? (I tried to add timevarying covariates on between level, but since individuals contained in each cluster at different time points are different, the model didn’t work). Thank you so much, Jing 


That calls for crossedrandom effects modeling, which is not available in the current version of Mplus. 

Back to top 