Re: Follow-up to piecewise regression question

Posted by Bruce Weaver on
URL: http://spssx-discussion.165.s1.nabble.com/Follow-up-to-piecewise-regression-question-tp5668949p5680294.html

Let me begin by echoing Ryan's disclaimer:  I have no particular expertise in piece-wise regression.  Having said that, it looks to me as if Ryan's model allows for discontinuities at the cut-points between age groups.   Does that make sense in the context of your problem, Carol?  Or do you want the function to be continuous at the cut-points?  (I've not taken time to look at the website the example came from, so I don't know which way those folks specified their model.)

Re interpretation of the coefficients, I always find it helpful to make a plot of fitted values as a function of the main explanatory variables.  In your case, this will show graphically the slopes (and intercepts if you extrapolate) for Age within the various age groups, and help you map back to the coefficients.

HTH.

R B wrote
Carol,

It looks like you set up the model correctly, and that your interpretation
of the slopes is correct. However, I don't see why you centered age at the
grand mean. In addition to assessing for shifts in slopes from one age
group to the next, isn't the purpose of piecewise regression to see if
there is a shift in intercepts at the cutpoints? With that in mind, I would
suggest that you NOT center age at any value before running the analysis. I
repeat...I think you should enter age into the model in its original form.
Then you can easily estimate and compare the intercepts at the appropriate
age cutpoint for adjacent age groups using TEST statements. Concretely...

According to your post, your cutpoints are 38 and 51. Therefore, I think
you would want to estimate the intercepts at age=38 for age groups 1 and 2,
and test whether they are significantly different from each other. How do
you do this? Simple! Add the following TEST statements:

/TEST = "int for grp 1 at age 38" group 1 0 0 group*age 38 0 0
/TEST = "int for grp 2 at age 38" group 0 1 0 group*age 0 38 0
/TEST = "diff in ints between grps 1 and 2 at age 38" group 1 -1 0
group*age 38 -38 0

If you want to do the same for age groups 2 and 3, then you'd write the
following TEST statements:

/TEST = "int for grp 2 at age 51" group 0 1 0 group*age 0 51 0
/TEST = "int for grp 3 at age 51" group 0 0 1 group*age 0 0 51
/TEST = "diff in ints between grps 2 and 3 at age 51" group 0 1 -1
group*age 0 51 -51

The full MIXED code, including the above intercept TEST statements **AND**
slope TEST statements would look like this:

MIXED y BY group WITH age
 /FIXED=group group*age | NOINT SSTYPE(3)
 /METHOD=REML
 /PRINT=SOLUTION
 /TEST = "int for grp 1 at age 38" group 1 0 0 group*age 38 0 0
 /TEST = "int for grp 2 at age 38" group 0 1 0 group*age 0 38 0
 /TEST = "diff in ints between grps 1 and 2 at age 38" group 1 -1 0
group*age 38 -38 0
 /TEST = "int for grp 2 at age 51" group 0 1 0 group*age 0 51 0
 /TEST = "int for grp 3 at age 51" group 0 0 1 group*age 0 0 51
 /TEST = "diff in ints between grps 2 and 3 at age 51" group 0 1 -1
group*age 0 51 -51
 /TEST = "grp 1 slope" group*age 1 0 0
 /TEST = "grp 2 slope" group*age 0 1 0
 /TEST = "grp 3 slope" group*age 0 0 1
 /TEST = "diff in slopes between grp 1 and grp 2" group*age 1 -1 0
 /TEST = "diff in slopes between grp 2 and grp 3" group*age 0 1 -1.

A few points:

(1) The group-specific slopes estimated from the TEST statements should
equal the group*age interaction coefficients reported in the "Estimates of
Fixed Effects" Table.
(2) The code above is UNTESTED. I'm too busy right now to test the code
above.
(3) I am no expert in piecewise regression. I'm simply extrapolating from
the two-category example provided on that website.

HTH,

Ryan
On Tue, May 1, 2012 at 7:48 PM, Parise, Carol A.
<[hidden email]>wrote:

> **
> Ryan,
>
> This nailed it. When Bruce stated....
>
> ****************************************
> If I followed, however, Ryan's model (see syntax below) included age as
> *both* a categorical variable (called Group) and a continuous variable
> (age). The interaction of those two variables (group*age) is what allows
> the slope for continuous age to vary by age group. That's more or less the
> same thing you're trying to accomplish by using piece-wise regression,
> right?
>
> MIXED y BY group WITH age
>
> /FIXED=group group*age | NOINT SSTYPE(3)
>
> /METHOD=REML
>
> /PRINT=SOLUTION.
> ***************************************************
> The lightbulb went on and i figured out why this made sense.

--- snip ---
--
Bruce Weaver
bweaver@lakeheadu.ca
http://sites.google.com/a/lakeheadu.ca/bweaver/

"When all else fails, RTFM."

PLEASE NOTE THE FOLLOWING: 
1. My Hotmail account is not monitored regularly. To send me an e-mail, please use the address shown above.
2. The SPSSX Discussion forum on Nabble is no longer linked to the SPSSX-L listserv administered by UGA (https://listserv.uga.edu/).