Piecewise Growth With Individually Va... PreviousNext
Mplus Discussion > Growth Modeling of Longitudinal Data >
 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:

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
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".

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

Names are
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;

type = random;

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

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

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

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:

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.
Back to top
Add Your Message Here
Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Options: Enable HTML code in message
Automatically activate URLs in message