← Back to Blog

Regression · ~8 min read

Multiple Regression Analysis

Change which covariates sit in the model and the coefficient moves, because what was held constant changed.

In short

A coefficient in a multiple linear regression table is not the effect of that predictor on its own — it is the effect of that predictor with every other predictor in the model held mathematically fixed, and the two numbers can differ substantially once correlated covariates are added or dropped.12 Multicollinearity, predictors that overlap with each other, is a separate problem from having too few subjects for the number of predictors: it inflates the uncertainty around specific coefficients regardless of how large the sample is, and there is no single variance inflation factor (VIF) cutoff that is safe to apply blindly.4 R2 rises, or at worst holds flat, every time a predictor is added, whether or not it explains anything real, which is why adjusted R2 rather than raw R2 is the number that belongs in a model comparison.13 Standardised (beta) coefficients rank which predictor moves the outcome most within one model; the unstandardised coefficient, in the outcome’s real units, is what belongs in a Methods and Results paragraph.

What “holding everything else constant” actually promises

In a model with several predictors, Y = b0 + b1X1 + b2X2 + … + bkXk, the coefficient b1 is the predicted change in Y for a one-unit increase in X1 with X2 through Xk held fixed. That is a narrower, more specific claim than a simple, unadjusted regression slope of Y on X1 alone, which mixes X1’s own relationship with Y together with whatever X1 happens to share with every other variable that also predicts Y.1 Mechanically, the partial coefficient is what is left of the X1Y relationship once the parts of both variables that the other predictors already explain have been removed — the same logic behind a partial correlation coefficient, just embedded inside a regression model instead of computed on its own.2 Change which covariates sit in the model, and the number can move, because “everything else” changed, not because the underlying relationship did.

Why it still gets read as a marginal effect

The habit is structural, not careless. A results sentence like “each additional 10 minutes of operative time was associated with 0.6 additional days of stay” reads identically whether that 0.6 came from a simple regression on operative time alone or from a five-predictor model, because the sentence carries no marker of what was held constant to produce it. Software doesn’t help: the coefficients table labels the column “B,” not “B, adjusted for age, BMI, and ASA class,” so unless the author writes the adjustment set into the sentence, a coefficient that is technically conditional on a specific set of covariates gets read as if it described the predictor’s total, unconditional relationship with the outcome.

A worked illustration

Consider a hypothetical, illustrative case series, not drawn from any published study: 150 patients undergoing elective colorectal resection, with postoperative length of stay (days) modelled against operative time (minutes), age (years), and BMI (kg/m²). A simple regression of length of stay on operative time alone returns B = 0.06 days per minute (P = .01) — on its own, a plausible-looking sentence: each additional 10 minutes of operative time, roughly 0.6 additional days.

Add age and BMI to the model and the operative-time coefficient falls to B = 0.03 (95% CI, 0.001–0.06; P = .04) — about half its unadjusted size, and only just clearing conventional significance. Age contributes its own partial coefficient (B = 0.04 days per year; P = .02); BMI does not reach significance once age and operative time are in the model (B = 0.09; P = .09). Older, higher-BMI patients in this hypothetical cohort tend to have both longer operations and longer stays, so the simple slope for operative time was partly standing in for age moving through both variables at once. The 0.03 figure, not the 0.06 figure, is the number that belongs in a results sentence, and it needs the adjustment set named in the same sentence: “independent of age and BMI, each additional 10 minutes of operative time was associated with 0.3 additional days of stay (B = 0.03; 95% CI, 0.001–0.06; P = .04).”

Multicollinearity is a separate problem from sample size

A different question is how much two or more predictors overlap with each other. Sample size determines how many parameters a model can support in the first place; multicollinearity determines how precisely any single one of those parameters can be estimated once it’s in the model, and it can be severe at a large N just as easily as a small one. The variance inflation factor for a predictor is 1 / (1 − Rj2), where Rj2 comes from regressing that one predictor on all the others in the model. A VIF of 5 means that coefficient’s standard error is roughly √5, about 2.2 times wider, than if the predictor were uncorrelated with the rest of the model — a wider confidence interval and a less certain estimate for that one coefficient, at the same N.

Common rules of thumb treat a VIF above 10, or sometimes above 5, as an automatic problem. A methodological caution against exactly that habit found that fixed cutoffs, evaluated in isolation, don’t reliably indicate when a coefficient has become untrustworthy — even VIFs well above 10 can be tolerable depending on sample size and effect sizes, and a rigid threshold can prompt dropping variables that didn’t need it.4 Report VIF for each predictor and treat it as one input to judgment, not a pass/fail line.

A familiar surgical version: entering both BMI and a closely related body-composition measure as separate predictors. The overall model can still fit well, but the two overlapping coefficients become unstable and can shift with small changes in the sample — a problem to flag and address (drop one variable, combine them, or report the instability), and a distinct one from whether the sample size supports the model’s total predictor count at all.

Adjusted R2 and standardised coefficients

R2 cannot fall when a predictor is added to an ordinary least-squares model, even a predictor that is pure noise, because the fitting procedure will always find some non-zero weight that reduces the residual sum of squares at least slightly.1 That makes raw R2 unsuitable for deciding whether a larger model is genuinely better than a smaller one. Adjusted R2 applies a penalty scaled to the number of predictors relative to sample size, so it can fall when an added predictor isn’t pulling its weight, and it’s the number reviewers expect when a manuscript compares two models with different predictor counts.3

Standardised (beta) coefficients rescale each predictor’s B into standard-deviation units, letting predictors on different scales, age in years against operative time in minutes, be ranked against each other for relative contribution within one model.2 That ranking is sample-specific: betas shift if the same model is refit on a population with different variances, so they don’t transfer across studies the way an unstandardised coefficient in real clinical units does. The unstandardised B, with its confidence interval and P value, is what belongs in an AMA-format Results paragraph, because a reader could check it directly against a re-run of the same model. Standardised betas are a reasonable supplementary line when the question is genuinely which predictor matters most within this model, not a substitute for the unstandardised figure.

How to run it — SPSS vs StatsPlease

In SPSS Statistics (current release, version 32; the same path has held since at least version 29), the route is Analyze▸Regression▸Linear. The outcome goes into the Dependent box and every predictor goes into the Independent(s) box together, as one block, so each coefficient is estimated adjusted for the others already in the model. In the Statistics button, tick Estimates and Confidence intervals under Regression Coefficients, tick Model Fit for R, R2, and adjusted R2, and tick Collinearity diagnostics to add Tolerance and VIF columns to the coefficients output. The adjusted R2 lives in the Model Summary table; each predictor’s B, standardised Beta, confidence interval, significance, and VIF live in the Coefficients table. The most common misread is pulling the R2 row instead of the Adjusted R2 row when comparing two models with different numbers of predictors, or reporting the B column in prose as though it were a simple, unadjusted relationship rather than the partial one the model actually estimated.

In StatsPlease, the same model runs from the uploaded data rather than a dialog box. Upload the dataset (or the relevant columns). StatsPlease’s deterministic engine identifies the appropriate test from the variable type and study design, checks the relevant assumptions, computes the result using fixed, non-LLM algorithms, and drafts the Methods/Results sentence in AMA format — the same number a reader would get running the test by hand in SPSS.

References

  1. Kutner MH, Nachtsheim CJ, Neter J, Li W. Applied Linear Statistical Models. 5th ed. New York, NY: McGraw-Hill/Irwin; 2005.
  2. Cohen J, Cohen P, West SG, Aiken LS. Applied Multiple Regression/Correlation Analysis for the Behavioral Sciences. 3rd ed. Mahwah, NJ: Lawrence Erlbaum Associates; 2003.
  3. Nathans LL, Oswald FL, Nimon K. Interpreting multiple linear regression: a guidebook of variable importance. Pract Assess Res Eval. 2012;17(1):Article 9. https://doi.org/10.7275/5fex-b874
  4. O’Brien RM. A caution regarding rules of thumb for variance inflation factors. Qual Quant. 2007;41(5):673-690. https://doi.org/10.1007/s11135-006-9018-6

A regression table carries at least four numbers that are each easy to misreport: the partial coefficient, its standardised counterpart, adjusted R2, and the collinearity diagnostics that say whether any of them can be trusted.

StatsPlease’s deterministic engine computes the unstandardised and standardised coefficients, R2 and adjusted R2, and the tolerance and VIF for every predictor directly from your uploaded data, and drafts the results sentence with the actual adjustment set named, not left implicit.

Try StatsPlease free