ANALYSIS CLINIC · CASE 004

CASE STATUS: DIAGNOSED

My results don't make sense · Interactions · Regression

My Interaction Is Significant, but the Main Effects Aren't

This result is not contradictory. Once a model includes an interaction, each lower-order coefficient describes an effect at a particular value or reference category of the other variable. The interaction asks whether that effect changes—not whether either lower-order coefficient must be significant by itself.

01

Symptoms

You fit a regression containing an interaction and see output like this:

             Estimate   p value
x              −0.008      .902
z               0.045      .525
x × z           1.301     <.001

The product term is significant, but neither printed lower-order coefficient is. You may wonder how two nonsignificant variables can interact, whether the interaction must be removed, or whether both simple slopes must be significant. An interaction plot may also show lines crossing or diverging while the lower-order p-values remain large.

02

What This Usually Means

In y = b0 + b1x + b2z + b3xz, b1 is the slope of x specifically when z = 0, and b2 is the slope of z when x = 0. The interaction b3 tests whether one slope changes as the other predictor changes.

Those coefficients answer different questions. The relationship may be near zero at the reference point and more positive or negative elsewhere. A crossover is possible but not required. The next step is to estimate the conditional effects and predictions the model supports.

03

Common Causes

1. Near-zero effect at the reference

The relationship may be weak when the other predictor equals zero but appreciably different at lower or higher values.

2. Zero describes one condition

A control group, baseline, absence, or meaningful zero defines the printed conditional effect—but only for that condition.

3. Zero is arbitrary

An uncentered age, score, dose, or scale may never equal zero, making the coefficient valid algebraically but unhelpful substantively.

4. Factor references control the question

With categorical predictors, lower-order coefficients describe comparisons within the selected reference level and contrast coding.

5. Difference of effects versus separate tests

Two effects can differ even when one or both are not separately distinguished from zero. Opposite p-value labels do not themselves prove a difference.

6. Estimates use different uncertainty

Lower-order terms, the interaction, and conditional effects are different parameter combinations with different variance and covariance information.

04

Run These Checks

  1. Preserve the formula and coding.

    formula(fit)
    R.version.string
    contrasts(dat$group)
    coef(summary(fit))

    What it suggests: Confirm that constitutive lower-order terms are included, then identify what zero, reference levels, transformations, and contrasts mean.

  2. Translate every lower-order coefficient.

    Read the x coefficient as “the slope of x when z equals zero,” not as an unconditional effect.

    What it suggests: If that condition is meaningful, interpret it as conditional. If it is irrelevant or unsupported, choose a defensible reference point.

  3. Check reference-point support.

    range(dat$z, na.rm = TRUE)
    quantile(dat$z, c(.10, .25, .50, .75, .90), na.rm = TRUE)
    with(dat, table(group, condition, useNA = "ifany"))

    What it suggests: Well-represented values support interpretable estimates. Sparse cells or values outside the observed range warn against extrapolation.

  4. Plot the fitted pattern and observed support.

    Show predictions or conditional effects with intervals across meaningful moderator values and display the data's range or distribution.

    What it suggests: The graph reveals whether lines diverge, converge, cross, or change mainly where information is sparse.

  5. Estimate conditional effects with covariance-based uncertainty.

    b <- coef(fit)
    v <- vcov(fit)
    m <- 1
    slope <- b["x"] + m * b["x:z"]
    slope_se <- sqrt(v["x", "x"] + m^2 * v["x:z", "x:z"] +
                     2 * m * v["x", "x:z"])

    What it suggests: Conditional estimates show where effects are positive, negative, or uncertain. Comparing separate significance labels is not a test that slopes differ.

  6. Probe values tied to the question.

    Use meaningful scale values, planned conditions, representative quantiles, or clearly labeled descriptive anchors. Mean and ±1 SD are options, not requirements.

    What it suggests: Report variation across supported values. Qualify patterns that occur only outside meaningful support.

  7. Check functional form and ordinary diagnostics.

    Review residual behavior, influence, leverage, support, and whether a linear change in the conditional effect is plausible.

    What it suggests: A precise product coefficient does not prove that the assumed shape is correct or uniformly supported.

05

What Not to Do

Do not reject the interaction because lower-order terms are nonsignificant. The terms test different conditional questions.

Do not call a lower-order coefficient unconditional or average. Its meaning depends on the other variable's zero or reference category.

Do not require both simple slopes to be significant or compare their p-values. The interaction tests whether slopes differ.

Do not drop constitutive terms because their p-values are large. That changes the parameterization and imposes restrictions at the reference point.

Do not recenter repeatedly to find a preferred result or dichotomize a continuous moderator. Choose reference and probe values substantively and disclose them.

Do not extrapolate or transfer linear-model interpretations automatically to nonlinear response scales. Support and scale matter.

06

Treatment Options

Keep the current reference

Use when: zero and factor references are meaningful and supported.

Tradeoff: printed coefficients answer only those conditional questions, so the rest of the interaction still needs probing.

Re-center for interpretation

Use when: a baseline, midpoint, mean, or planned benchmark answers a clearer question.

Tradeoff: lower-order coefficients change and the constant must be documented; fit and the highest-order interaction do not.

Use planned factor contrasts

Use when: the focal comparison involves another group or a hypothesis-defined level combination.

Tradeoff: coefficients depend on coding, and families of comparisons may require multiplicity planning.

Report conditional estimates

Use when: readers need the slopes, comparisons, or contrasts that produce the interaction.

Tradeoff: many probes create many estimates; choose them from the question and report uncertainty consistently.

Use Johnson–Neyman when appropriate

Use when: a continuous moderator is central and a supported range is more informative than a few probe points.

Tradeoff: the region depends on model form, uncertainty method, threshold, and observed range.

Reconsider form or scale

Use when: product-term linearity, support, influence, or a nonlinear outcome makes the simple interpretation doubtful.

Tradeoff: alternatives may modify the question and require additional justification and sensitivity checks.

Treatment principle: describe how the effect changes across meaningful conditions—not how to make every coefficient cross the same significance threshold.

07

Worked Example

This controlled example creates 240 observations with centered continuous predictors. The slope of x changes with z, while both lower-order population slopes equal zero at the centered means.

set.seed(20261003)
n <- 240L
x <- as.numeric(scale(rnorm(n), center = TRUE, scale = FALSE))
z <- as.numeric(scale(rnorm(n), center = TRUE, scale = FALSE))
y <- 10 + 1.25 * x * z + rnorm(n)
dat <- data.frame(y, x, z)
fit <- lm(y ~ x * z, data = dat)

simple_slope <- function(fit, m) {
  b <- coef(fit); v <- vcov(fit)
  estimate <- b["x"] + m * b["x:z"]
  se <- sqrt(v["x", "x"] + m^2 * v["x:z", "x:z"] +
             2 * m * v["x", "x:z"])
  p <- 2 * pt(abs(estimate / se), df.residual(fit), lower.tail = FALSE)
  c(estimate = estimate, SE = se, p_value = p)
}

z_sd <- sd(dat$z)
rbind(low = simple_slope(fit, -z_sd),
      mean = simple_slope(fit, 0),
      high = simple_slope(fit, z_sd))

dat$z_high <- dat$z - z_sd
fit_recentered <- lm(y ~ x * z_high, data = dat)
max(abs(fitted(fit) - fitted(fit_recentered)))

Original model: x = −0.008245, p = .9022; z = 0.045205, p = .5246; x:z = 1.300907, p < 2.2e−16.

Conditional slope of x: at low z, −1.231551; at mean z, −0.008245; at high z, 1.215060. The low and high slopes have p < 2.2e−16; the mean slope has p = .9022.

Re-centered model: the printed x coefficient at high z becomes 1.215060; the interaction remains 1.300907; maximum fitted-value difference is 5.329071e−15.

Interpretation: The slope of x is near zero at the original centered reference, negative at low z, and positive at high z. Re-centering makes the high-value conditional slope the printed lower-order coefficient without changing the interaction or fitted outcomes. The example demonstrates conditional interpretation; it does not make ±1 SD universally correct or imply that every interaction crosses over.

Download the complete verified R script

08

What to Tell Your Committee

Be ready to explain the decision in six parts:

  1. Hypothesis: identify the focal predictor, moderator, outcome, model scale, and expected pattern.
  2. Reference point: state the value or category at which every lower-order coefficient was estimated and why it is meaningful.
  3. Interaction test: explain that it evaluates a difference in slopes or a contrast of contrasts, not whether every conditional effect equals zero.
  4. Probing plan: justify selected moderator values, comparisons, contrasts, or a Johnson–Neyman region from the question and data support.
  5. Pattern and uncertainty: present estimates or predictions with intervals and show where observations support them.
  6. Diagnostics and limits: address functional form, residuals, influence, sparse regions, multiplicity, model scale, and causal limits.

A defensible explanation does not say “the main effects did not matter.” It states the conditional question behind each coefficient, shows how the relationship changes, and separates evidence that effects differ from separate tests against zero.

09 · ANALYSIS CLINIC

When You Need More Help

Still stuck?

The checks above often resolve the apparent contradiction once zero values, references, and conditional estimates are explicit. Multicategory factors, three-way interactions, nonlinear outcomes, clustered data, imputation, or committee-specific contrasts may require a coordinated probing plan.

Bring your model to the Analysis Clinic. The Mediation, Moderation & Conditional Process workflow provides reproducible interaction probing, conditional effects, diagnostics, and dissertation-oriented reporting.

Use the moderation workflow