Piecewise Growth With Individually Va... PreviousNext
Mplus Discussion > Growth Modeling of Longitudinal Data >
Message/Author
 J. Cheadle posted on Friday, September 24, 2004 - 10:32 am
Dear Linda & Bengt:

Is it possible to estimate piecewise growth curves with individually varying times of observation? Are there any examples available?

I am trying to reproduce HLM results of a piecewise growth curve analysis with individually varying times of observation. There are 4 waves of data, 4 at fall and spring of kindergarten and first grade. The spring of first grade is only a 20% subsample (which translates to 30% coverage in the longitudinal file for children who did not change schools).. The overall structure of the L1 model is,

Y=pi1 + pi2*tma + pi3*tmb + pi4*tmc

Where tma=kindergarten, tmb=summer, and tmc=first grade. The data for case one in person-period format looks like:

wave tma tmb tmc
1 3 0 0
2 8 0 0
3 9 3 1
4 9 3 8

Of course, I reshape the data for use in M-Plus (tma1-tma4, tmb1-tmb4, tmc1-tmc4). Obviously there is a df issue here, so we fix the level-1 variances with (1-Reliability)*Test Variance. I have played around a bit trying to get the model specified correctly, but so far I have been unable to duplicate the HLM results. A specification like this doesn’t work:

! THE GROWTH MODEL
i s1 | r1-r4 AT ta1-ta4;
i s2 | r1-r4 AT tb1-tb4;
i s3 | r1-r4 AT tc1-tc4;

This just generates the error:
*** ERROR in Model command
Random slopes previously defined:
I S2

Anyway, amongst many others, this is the model that seems like it should be the correct one. At this point I’m not sure what to do. I’ve also run the model with and without the missing cases (as I’ve said, trying a variety of specifications…) and varying how I include the time variables (ie, r2-r4 AT tb2-tb4). Any advice is appreciated, thank you!
 Jon Heron posted on Wednesday, February 15, 2012 - 1:20 am
I've revisited the issue of a piecewise linear growth model with varying times of observation. This is discussed extensively here
http://www.statmodel.com/discussion/messages/14/498.html?1321583317
without a clear answer. Applying the two suggestions made by Linda and Bengt gives me close but not identical results.

Bengt's model of Dec 31 - to fit two intercepts i1 and i2 with constraints gives corr(i1,i2)=1 however this corr is estimated thus incurring one more parameter - so these two models will never agree? Using model constraint to fix this at zero yields a non pos-def Psi.

My goal is to get these two models to agree so do you have any suggestions?

As a 2ndry point, I don't feel I'm getting the growth part right. With fixed times the model:-
i s1 | y1@0 y2@1 y3@2 y4@2 y5@2;
i s2 | y1@0 y2@0 y3@0 y4@1 y5@2;
ensures that the lines meet at an elbow, but my model with varying ages looks like this:-
i1 s1 | y1 y2 at age1 age2;
i2 s2 | y3 y4 y5 at age3 age4 age5;
and I'm unable to add the y's more than once.

many thanks, Jon
 Linda K. Muthen posted on Wednesday, February 15, 2012 - 10:21 am
Please send the three outputs and your license number to support@statmodel.com. Then we can see exactly what we are dealing with.
 Jon Heron posted on Monday, March 19, 2012 - 12:45 am
Well we have a solution to this old chestnut, but it's much simpler than I expected. The syntax closely mirrors that for the standard piecewise/fixed-ages model. Note the need to derive new age variables for t4 and t5 as well as a constant "zero".


Define:
agedif4 = age4 - age3;
agedif5 = age5 - age3;
zero = 0;

Variable:
Names are
id
age1 age2 age3 age4 age5
tot1 tot2 tot3 tot4 tot5;

usevariables = tot1-tot5 age1 age2 age3 agedif4 agedif5 zero;
tscores = age1 age2 age3 agedif4 agedif5 zero;

Analysis:
type = random;

Model:
intcpt slope1 | tot1 tot2 tot3 tot4 tot5 at age1 age2 age3 age3 age3;
intcpt slope2 | tot1 tot2 tot3 tot4 tot5 at zero zero zero agedif4 agedif5;
 Jon Heron posted on Monday, March 19, 2012 - 3:17 am
Update

for more than two linear splines you need to create more than one zero constant.

Define:
zero1 = 0;
zero2 = 0;
zero3 = 0;
adif32 = age3 - age2;
adif43 = age4 - age3;
adif54 = age5 - age4;

Model:
intcpt slope1 | tot1 tot2 tot3 tot4 tot5 at age1 age2 age2 age2 age2;
intcpt slope2 | tot1 tot2 tot3 tot4 tot5 at zero1 zero1 adif32 adif32 adif32;
intcpt slope3 | tot1 tot2 tot3 tot4 tot5 at zero2 zero2 zero2 adif43 adif43;
intcpt slope4 | tot1 tot2 tot3 tot4 tot5 at zero3 zero3 zero3 zero3 adif54;
 Emma Davies posted on Friday, March 24, 2017 - 7:10 am
In reply to Jon's comment, can I ask why you would have to define new age variables? Why couldn't your model command look like:

Model:
intcpt slope1 | tot1 tot2 tot3 tot4 tot5 at age1 age2 age3 age3 age3;
intcpt slope2 | tot1 tot2 tot3 tot4 tot5 at zero zero zero age4 age5;

If anyone could help my understanding that would be great. I have tried both with my own data and they do not produce the same results.
 sed48 posted on Tuesday, June 06, 2017 - 5:56 am
Is there an answer to my question above?
 Bengt O. Muthen posted on Tuesday, June 06, 2017 - 4:14 pm
Sed48 - I don't see your question.
 sed48 posted on Wednesday, June 07, 2017 - 1:40 am
Sorry, I think I accidentally changed my account settings so my username defaulted. I'm Emma Davies. I was asking about my question directly above:

In reply to Jon's comment, can I ask why you would have to define new age variables? Why couldn't your model command look like:

Model:
intcpt slope1 | tot1 tot2 tot3 tot4 tot5 at age1 age2 age3 age3 age3;
intcpt slope2 | tot1 tot2 tot3 tot4 tot5 at zero zero zero age4 age5;

I have tried both with my own data and they do not produce the same results- the second slope is unrealistically large when doing it the way suggested by Jon Heron, but mine produces a feasible value for the slope.
 Will Johnson posted on Saturday, July 20, 2019 - 2:06 pm
Thanks Jon

The solution is simple when you see it, but I have been banging my head against the wall with this for some time.

Wouldn't be too hard to extend to restricted cubic splines if you created them first, for example in Stata

Still not sure how to use TSCORES with a free loading model though?

i1 s1 | wt1@0 wt2 wt3 wt4 wt5 wt6@1
 Bengt O. Muthen posted on Saturday, July 20, 2019 - 5:32 pm
TSCORES don't go with free loadings - the TSCORES are the loadings. Using a single-level approach, TSCORES play the role of the level-2 time covariate in the twolevel approach to growth modeling.
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: