[R-sig-eco] Back transforming standardized model parameters when there is an interaction

Dixon, Philip M [STAT] pdixon at iastate.edu
Tue Jan 12 13:09:07 CET 2016


Matt,

The interaction term is why the usual transformation doesn't work, at least initially.

The R parameterization of factor effects makes it easy to fall into the trap of thinking that the coefficient for a main effect "means" something when there is an interaction in the model.  Sometimes yes, sometimes no.

The best way to untangle model effects when there are factors in the model, especially when a factor changes the slope (because the model includes air.ice:time) is to work out the regression model for each level of the factor (i.e. for air then for ice).

Using the unstandardized version to get illustrate:
air.ice, assuming you used the default contrasts, see options("contrasts"), has the value of 0 for air and 1 for ice
so the regression line for air is E Y = 12.52 + 0.0081 time - 0.8019 * 0 - 0.00442*0*time =  12.52 + 0.0081 time
and that for ice is is E Y = 12.52 + 0.0081 time - 0.8019 * 1 - 0.00442*1*time = 11.71 + 0.0037 time

Two of the coefficients in the full model correspond to coefficients for a factor-specific regression line ONLY because the factor variable has the value 0 for the baseline level.

If you only standardize time (your model 3), the same calculation works because you haven't changed the air.ice variable.
You should be able to take the coefficients, apply the backtransformation suggested by Drew to each regression line separately and get the same coefficients when time is the X variable.

It looks like standardize also centers (or centers and standardizes) the air.ice variable.  The standardized value for air is no longer 0 and that for ice is no longer 1.  Probably something like -0.5 and 0.5 (if centered only with equal sample sizes).  I will assume -0.5 for air and 0.5 for ice to illustrate.  That means the factor-specific regression lines are now:
for air: E Y = 12.48 + 0.508 z.time - 1.07 * (-0.5) - 0.38 * (-0.5)*z.time
for ice: E Y = 12.48 + 0.508 z.time - 1.07 * (0.5) - 0.38 * (0.5)*z.time

After standardizing, none of the model coefficients can be interpreted as a coefficient for some baseline level.  You have to unpack the factor effects.  Note: you get similar behavior if you use sum-to-zero contrasts.  And, if you use contr.SAS(), the last factor level is used as the baseline group.

Aside: the different intercept is no surprise because it is EY at a different timevalue (the average time, not time=0) and the different slope is no surprise because one unit change in standardized time is different than one unit change in raw time.

So, I suggest you look at how the variables are coded by standardize().  model.matrix() will give you this information.  Use that to calculate the coefficients for each regression line.

Best wishes,
Philip


	[[alternative HTML version deleted]]



More information about the R-sig-ecology mailing list