Why Interaction Coefficients Are Easy to Misread
In a regression model with an interaction, the association between one predictor and the response can depend on the value of another predictor. The coefficient of a predictor that appears on its own—the lower-order coefficient—therefore usually describes a slope or difference at a particular reference value, not an unconditional effect that applies everywhere.
The key is to read each coefficient in the context of the entire model. In particular, locate the interacting predictor’s value that makes the product term zero. At that reference value, the corresponding lower-order coefficient has a direct interpretation. At other values, calculate the relevant conditional slope or difference using the interaction coefficient.
The coefficient \(\beta_1\) is the slope for \(x\) when \(z=0\), and \(\beta_2\) is the slope for \(z\) when \(x=0\). The interaction coefficient \(\beta_3\) describes how either slope changes as the other predictor increases by one unit. These statements use the units in which the predictors are recorded.
Deriving the Conditional Slopes
To find the slope for \(x\) at a fixed value of \(z\), hold \(z\) constant and compare the fitted mean at \(x+h\) with the fitted mean at \(x\). Subtracting the two fitted values gives \((\beta_1+\beta_3z)h\). Dividing by \(h\) gives the slope, for any nonzero change \(h\):
The same result follows by differentiating the regression mean with respect to \(x\). Similarly, the slope for \(z\) at fixed \(x\) is \(\beta_2+\beta_3x\). Thus \(\beta_3\) is the change in the \(x\)-slope for a one-unit increase in \(z\), and also the change in the \(z\)-slope for a one-unit increase in \(x\). This does not mean that either slope always equals \(\beta_3\).
For the slope of \(x\), keep the coefficient of \(x\) and the interaction coefficient.
Use \(\beta_1+\beta_3z\) for the \(x\)-slope at the given \(z\); use \(\beta_2+\beta_3x\) for the \(z\)-slope at the given \(x\).
Describe the predicted change in the response for a one-unit increase in the predictor, conditional on the stated value of the other predictor.
Worked Example: Finding a Slope at Two Risk-Score Values
A hypothetical insurer models expected annual claim cost \(Y\), in dollars, using claim-free years \(x\) and a risk score \(z\), measured in points: \(E(Y\mid x,z)=120+18x+7z-2xz\). Calculate the claim-free-years slope at risk scores 3 and 6, and compare the predictions for a policyholder with \(x=4\) at those scores.
Method. Use the conditional slope formula \(\beta_1+\beta_3z\). Here \(\beta_1=18\) and \(\beta_3=-2\), so the slope is \(18-2z\) dollars per additional claim-free year.
At \(z=3\), the slope is \(18-2(3)=18-6=12\) dollars per additional claim-free year. At \(z=6\), it is \(18-2(6)=18-12=6\) dollars per additional claim-free year.
For \(x=4,z=3\), the fitted mean is \(120+18(4)+7(3)-2(4)(3)=120+72+21-24=189\) dollars. For \(x=4,z=6\), it is \(120+18(4)+7(6)-2(4)(6)=120+72+42-48=186\) dollars.
Check. At either score, increasing \(x\) by one changes the fitted mean by the slope already calculated: at \(z=3\), the prediction would rise from 189 to \(189+12=201\); at \(z=6\), it would rise from 186 to \(186+6=192\). The interaction makes the claim-free-years slope smaller at the higher score. Common mistake avoided: treating 18 as the slope at every score. It is the slope only when \(z=0\).
Binary-by-Continuous Interactions
A common interaction pairs a continuous predictor \(x\) with an indicator \(D\), where \(D=0\) denotes a reference group and \(D=1\) denotes another group. The model is \(E(Y\mid x,D)=\beta_0+\beta_1x+\beta_2D+\beta_3xD\). Setting \(D\) to each possible value produces the group-specific fitted lines. The coefficient \(\beta_2\) is the group difference at \(x=0\), while \(\beta_3\) is the difference between the groups’ slopes.
Subtracting the \(D=0\) fitted mean from the \(D=1\) fitted mean gives \(\beta_2+\beta_3x\). Therefore, \(\beta_2\) is not generally the group difference at every \(x\); the group difference changes with \(x\) when \(\beta_3\ne0\). This is a discrete comparison between indicator values, not a derivative with respect to \(D\).
Worked Example: Separating Group Slopes from Group Differences
A hypothetical analyst predicts monthly service cost \(Y\), in dollars, from annual usage \(x\), measured in thousands of units, and an indicator \(D\) for enrollment in a support program. The fitted model is \(E(Y\mid x,D)=450+12x-40D+5xD\). Find each group’s slope, the program-group difference at \(x=8\), and both fitted means at that usage level.
Method. Substitute \(D=0\) and \(D=1\) to obtain the group-specific lines. For \(D=0\), the fitted mean is \(450+12x\), so the slope is 12 dollars per additional thousand units. For \(D=1\), it is \(450+12x-40+5x=410+17x\), so the slope is 17 dollars per additional thousand units. The interaction coefficient 5 is the difference in slopes, \(17-12=5\).
The program-group difference at usage \(x\) is \(-40+5x\). At \(x=8\), this is \(-40+5(8)=-40+40=0\) dollars. The fitted mean for \(D=0\) is \(450+12(8)=450+96=546\) dollars. For \(D=1\), it is \(410+17(8)=410+136=546\) dollars.
Check. The two fitted means agree at \(x=8\), as the calculated group difference of zero requires. Common mistake avoided: interpreting \(-40\) as the program group’s difference at every usage level. It is the difference only at \(x=0\); at \(x=8\), the interaction adds 40 dollars to that difference.
What Changes When Predictors Are Recentered?
A reference value of zero may not be typical or even represented in the data. Replacing \(z\) by a centered predictor can make the lower-order coefficient refer to a more useful value. If \(z_c=z-c\), then \(z=z_c+c\). Substitution into the interaction model gives
The coefficient of \(x\) in the centered model is \(\beta_1+c\beta_3\), exactly the original \(x\)-slope at \(z=c\). Recentring changes the coefficient’s reference point, not the fitted mean for a given original pair \((x,z)\). The interaction coefficient remains the same under this shift. This is useful for interpretation, but it does not make a reference point meaningful if it lies outside the data or the intended application.
Worked Example: Recentring to Make a Lower-Order Coefficient Useful
A hypothetical model predicts an account’s annual service cost \(Y\), in dollars, from account age \(x\), in years, and balance \(z\), in units of \$10,000: \(E(Y\mid x,z)=80+3x+10z-1.5xz\). Recenter balance at \(z=4\), then find the account-age slope at balances \(z=4\) and \(z=6\).
Method. Set \(z_c=z-4\), so \(z=z_c+4\). Substitute and collect terms: \(80+3x+10(z_c+4)-1.5x(z_c+4)\) \(=80+3x+10z_c+40-1.5xz_c-6x\) \(=120-3x+10z_c-1.5xz_c\). Thus the coefficient of \(x\) in the centered model is \(-3\), the age slope when \(z_c=0\), or equivalently when \(z=4\).
At \(z=4\), the age slope is \(3-1.5(4)=3-6=-3\) dollars per additional year. At \(z=6\), it is \(3-1.5(6)=3-9=-6\) dollars per additional year. Using the centered form, \(z_c=6-4=2\), and the slope is \(-3-1.5(2)=-3-3=-6\), which agrees.
Check. The slope calculations from the original and centered models match at both balances. The recentered intercept, 120, is the fitted mean at \(x=0,z=4\). Common mistake avoided: assuming that the original coefficient 3 remains the age slope after accounting for the interaction. It applies only at \(z=0\).
Common Interpretation Traps
- Calling a lower-order coefficient the overall slope. In a continuous interaction model, \(\beta_1\) is the \(x\)-slope at \(z=0\), not at an arbitrary \(z\). Calculate \(\beta_1+\beta_3z\) for the value in the question.
- Confusing a group difference with a slope difference. With a binary-by-continuous interaction, \(\beta_2\) is the group difference at \(x=0\), and \(\beta_3\) is the difference in group slopes. The group difference at \(x\) is \(\beta_2+\beta_3x\).
- Ignoring units. If \(x\) is measured in thousands of units, a slope is per additional thousand units, not per single unit. Likewise, \(\beta_3\) is a change in slope per one unit of the interacting predictor.
- Forgetting the reference point. If zero is outside the observed range, the lower-order coefficient may describe an extrapolated slope or difference. State the reference value explicitly; consider whether recentering would give a more relevant interpretation.
- Claiming causation from a fitted interaction. An interaction describes how the model’s conditional association varies with a predictor. A causal interpretation requires additional design and assumptions beyond the regression equation.
Check Your Understanding
For each problem, identify the relevant reference value and use the full interaction model rather than interpreting a coefficient in isolation.
- A fitted mean is \(300+8x+6z-2xz\), where \(x\) is measured in years and \(z\) in points. Find the slope for \(x\) at \(z=2\), and state the slope represented by the lower-order coefficient of \(x\). (Answer: At \(z=2\), the \(x\)-slope is \(8-2(2)=4\) response units per year; the coefficient 8 is the slope at \(z=0\).)
- A fitted mean is \(90+5x+12D-3xD\), with \(D=0\) the reference group and \(D=1\) the comparison group. Find both slopes and the group difference at \(x=4\). (Answer: The slopes are 5 for \(D=0\) and \(5-3=2\) for \(D=1\); the difference \(D=1\) minus \(D=0\) at \(x=4\) is \(12-3(4)=0\).)
- A model is \(50+4x+9z+2xz\). Recenter \(z\) at 3 by setting \(z_c=z-3\). Give the coefficient of \(x\) in the recentered model and interpret it. (Answer: The coefficient is \(4+2(3)=10\), the \(x\)-slope at \(z=3\).)
- A model for a monthly hypothetical benefit amount is \(700+15x-30D+4xD\), where \(x\) is the number of qualifying events and \(D\) indicates an optional rider. Find both fitted amounts at \(x=10\), and explain what \(-30\) represents. (Answer: Without the rider, \(700+15(10)=850\); with it, \(700-30+(15+4)(10)=860\). The rider difference at \(x=0\) is \(-30\), not the difference at every \(x\).)
- A continuous interaction model has \(E(Y\mid x,z)=40-2x+5z+0.5xz\). Find the \(z\)-slope at \(x=6\), then find the change in that slope when \(x\) rises from 6 to 10. (Answer: At \(x=6\), the \(z\)-slope is \(5+0.5(6)=8\); at \(x=10\), it is 10, so the slope increases by 2 response units per unit of \(z\).)