Multilevel growth model (three-level ... PreviousNext
Mplus Discussion > Growth Modeling of Longitudinal Data >
Message/Author
 Shige Song posted on Monday, May 22, 2006 - 2:00 am
Dear Linda and Bengt,

I am tryint to estimate a two-level growth model (three-level model) with individually varying time points. The model looks like this:

-------------------------------------
...
Tscores = ag1991-ag2000;
within = bo ;
between = me1991-me2000;
cluster = hhid;
Analysis:
Type = random twolevel missing ;
estimator = ML;
ALGORITHM=INTEGRATION
Model:
%WITHIN%
iw sw | ht1991-ht2000 at ag1991-ag2000;
iw sw on bo;
%BETWEEN%
ib sb | ht1991-ht2000 at ag1991-ag2000;
me by me1991-me2000;
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
 Linda K. Muthen posted on Monday, May 22, 2006 - 9:52 am
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 | ht1991-ht2000 at ag1991-ag2000;
i s on bo;
%BETWEEN%
me by me1991-me2000;
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 - 11:40 am
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 - 9:23 am
I have a conceptual question about two-level growth model (three-level analysis). In all of the exampels presented in the Mplus manual, the community-level (as opposed to individual-level) covariate is time-constant. 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 community-level in order to utilise Mplus). Each individual has four measurements. What is interesting about my data is that both the household- and the community-level covariates are time-varying too. As I remember, Mplus does not handel cross-classified 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 household-level 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 level-2 covariate for the growth model. Does this soud like a viable approach?

Many thanks!

Best,
Shige
 Bengt O. Muthen posted on Tuesday, May 23, 2006 - 6:03 pm
True, the User's Guide does not include examples with time-varying covariates on the Between level - but that is no extra problem. I don't see that as a case of cross-classified random effects - the between-level 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 chi-square in line with Complex.

Yes, it sounds fine to have a factor summarizing household-level income.
 Shige Song posted on Tuesday, May 23, 2006 - 7:53 pm
Thanks Bengt. I think I have a better idea about how to proceed now.
 Shige Song posted on Thursday, May 25, 2006 - 6:30 am
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 | y1-y4 at a1-a4;
i s on x;
%c#1%
[u1$1-u4$1];
%c#2%
[u1$1-u4$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 cross-group 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
 Bengt O. Muthen posted on Thursday, May 25, 2006 - 9:46 am
The easiest way is to say

Model:
%OVERALL%
i s | y1-y4 at a1-a4;
i s on x;
%c#1%
i s on x;
[u1$1-u4$1];
%c#2%
i s on x;
[u1$1-u4$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 - 11:18 am
Thanks for the clarification, that works well.

Best,
Shige
 Shige Song posted on Sunday, May 28, 2006 - 6:24 am
Say I have 4 community-level (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 - 10:37 am
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 two-level latent class growth model?

Thanks!

Shige
 Bengt O. Muthen posted on Sunday, May 28, 2006 - 11:32 am
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 within-timepoint mean profile across the 4 measures, is it (2) the across-time 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 one-step ML estimation with the multi-step 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 one-step 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 multi-step approach can be used first as an approximation.
 Shige Song posted on Sunday, May 28, 2006 - 11:55 am
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 Sunday, May 28, 2006 - 7:15 pm
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 - 7:08 am
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
 Bengt O. Muthen posted on Monday, May 29, 2006 - 10:29 am
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 - 5: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
 Bengt O. Muthen posted on Monday, May 29, 2006 - 6:07 pm
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 Tuesday, July 18, 2006 - 10:43 pm
Hi Bengt,

I am estimating a simple three-level 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
 Linda K. Muthen posted on Wednesday, July 19, 2006 - 8:05 am
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 - 8:33 am
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 - 8:42 am
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?
 Bengt O. Muthen posted on Wednesday, July 19, 2006 - 9:36 am
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

ht2-ht18 (2-18);
 Shige Song posted on Wednesday, July 19, 2006 - 10:52 am
I have sent the program and the data to tech support.

Shige
 Elmar Schlueter posted on Tuesday, December 12, 2006 - 2:41 am
Hello,

before starting with

a three-level growth model with time-varying level-3 variables

I found that no syntax examples concerning the modeling of time-varying level-3 variables are available in the Userguide.

Could you please provide such a syntax example where the slope of a level-2 variable is regressed on time-varying level-3 variables?

Also, I wonder whether the data need to be 'stacked' for a three-level growth analysis?

Thanks
 Linda K. Muthen posted on Tuesday, December 12, 2006 - 8:51 am
See Examples 9.12 through 9.18 in the user's guide. These are a variety of three-level growth models. They should serve as a starting point. You do not need to stack the data.
 Kees van Schluten posted on Tuesday, December 12, 2006 - 9:46 am
may I ask a follow-up 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 time-invariant level-3 (w)variables.

Example 9.16 might serve as a starting point for my question - But this does not seem to be a three-level analysis (?)
Nor is the issue of time-varying level 3 variables covered.

The question could be how to apply the new 'repetition' command to one or more repeatedly measured level-3 variables on the %between% level.

I was just wondering whether you could provide an a priori example for the idea
of modeling time-varying level-3 variable.

Example:
Think about 'successful participation in statistics seminars' (level 1 DV, measured 4 times) of Individuals (level 2) in
Universities (level 3). A time-varying level 3 variable could be 'number of seminar rooms available per time point'

Many thanks in advance
 Bengt O. Muthen posted on Tuesday, December 12, 2006 - 10:27 am
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 time-varying covariates w1-w4 which are on the between = list.
 Jing Zhang posted on Wednesday, February 29, 2012 - 7:01 pm
One follow-up question on time-varying 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 time-varying 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
 Bengt O. Muthen posted on Wednesday, February 29, 2012 - 8:13 pm
That calls for crossed-random effects modeling, which is not available in the current version of Mplus.
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: