Written and maintained by CASRAI Editorial Board
Last updated
A regression table is really three small tables stacked together: a model summary (how well the whole model fits), an ANOVA table (whether the model as a whole beats no model), and a coefficients table (what each predictor contributes). Read them in that order. This guide walks through all three using one published, annotated example, shows how the labels differ between SPSS, R and Python, and lets you recompute the key numbers yourself to catch misreads.
The example is the UCLA OARC annotated SPSS output for a regression of a science test score on four predictors (math, female, socst and read), with N = 200. All figures below come from that page (checked 2026-10-29): Regression Analysis | SPSS Annotated Output.
How do you read a regression table?
Work top to bottom. First check the model summary (R² and adjusted R²), then the ANOVA row (is the overall F significant?), then the coefficients one predictor at a time (size, direction, standard error, p-value or interval). The overall F test does not say which individual predictors matter; the coefficients table does.
Step 1: the model summary
R is the correlation between the observed and predicted values of the outcome. R Square is its square: in the example it is .489, meaning 48.9% of the variance in the outcome is predicted by the model. Adjusted R Square (.479) shrinks that figure for the number of predictors, giving what UCLA calls “a more honest value” to estimate of the population R². The Std. Error of the Estimate is the standard deviation of the error term, the square root of the residual mean square. For more on what R² can and cannot tell you, see how to interpret R-squared and adjusted R-squared vs R-squared.
Step 2: the ANOVA table
This table splits the total variation into a part the model explains (Regression) and a part it does not (Residual). In the example the Regression sum of squares is 9543.72074 on 4 degrees of freedom and the Residual sum of squares is 9963.77926 on 195, giving F = 46.69 with p = 0.0000. A significant F says the predictors, taken together, explain more than chance would. It does not address any individual predictor. See how to interpret the F-statistic.
Step 3: the coefficients table
Each row is one predictor. B is the unstandardized coefficient, measured in the variable’s natural units. In the example, math has B = .389: a one-point increase in math is associated with a .389-point increase in predicted science score, holding the other variables constant. The constant (12.325) is the predicted outcome when all predictors are zero. Beta (standardized) puts predictors on a common scale so effect sizes can be compared. The standard error is used to test whether the parameter differs from 0, and Sig. gives the two-tailed p-value. See what a regression coefficient is and how to interpret the t-statistic.
What does each column mean?
The same quantities carry different labels in different programs. SPSS labels follow the UCLA page; R labels follow the R documentation for summary.lm (stat.ethz.ch, checked 2026-10-29); the Python names are attributes listed in the statsmodels RegressionResults reference (checked 2026-10-29).
| Quantity | SPSS label | R label | statsmodels attribute | What to look for |
|---|---|---|---|---|
| Coefficient | B | Estimate | params | Size and sign, in the variable’s units |
| Its standard error | Std. Error | Std. Error | bse | Smaller means a more precisely estimated coefficient |
| Test statistic | t | t value | tvalues | B divided by its standard error |
| p-value (two-sided) | Sig. | Pr(>|t|) | pvalues | Compare with your alpha, usually .05 |
| Interval | 95% CI | confint(fit) | conf_int() | Contains zero means not significant at that alpha |
| Standardized coefficient | Beta | not in the summary table | not in these attributes | Compare effect sizes across predictors |
| Residual spread | Std. Error of the Estimate | sigma | derived | Typical size of the error term |
| Variance explained | R Square | Multiple R-squared | rsquared | 1 minus residual SS over total SS |
| Penalized fit | Adjusted R Square | Adjusted R-squared | rsquared_adj | R² adjusted for the number of predictors |
| Overall test | F and Sig. (ANOVA) | F-statistic | fvalue, f_pvalue | Needs both degrees of freedom to interpret |
R’s coefficient matrix has four columns (estimate, standard error, t-statistic, two-sided p-value) and omits aliased coefficients. Its sigma is the square root of the estimated variance of the random error, and its R² is 1 minus the residual sum of squares over the sum of squared deviations of y from its mean (when the model has an intercept).
Formulas to recompute from the table
- Mean square: MS = SS / df
- Overall F = MS Regression / MS Residual
- R² = SS Regression / SS Total
- Adjusted R² = 1 − (1 − R²)(N − 1) / (N − k − 1), where k is the number of predictors
- Std. Error of the Estimate = √(MS Residual)
- t = B / standard error
Worked example: checking the numbers
Example 1: rebuild F and R² from the ANOVA table
MS Regression = 9543.72074 / 4 = 2385.93019. MS Residual = 9963.77926 / 195 = 51.0963039. F = 2385.93019 / 51.0963039 = 46.69, matching the printed value. SS Total = 9543.72074 + 9963.77926 = 19507.5, so R² = 9543.72074 / 19507.5 = .489. Both agree with the SPSS output.
Example 2: rebuild adjusted R² and the Std. Error of the Estimate
With N = 200, k = 4 and R² = .489: adjusted R² = 1 − (1 − .489)(199) / (200 − 4 − 1) = 1 − (.511 × 199 / 195) = 1 − .5215 = .4785, which rounds to .479 as printed. The Std. Error of the Estimate is √51.0963039 = 7.148 (rounded to three decimals). If a number in a table you are reading fails checks like these by more than rounding, suspect a misread column or a different model.
Rounding: the checks above use the SS values printed in the source and the rounded R² of .489; differences in the fourth decimal come from rounding, not error.
Common misreads
- A significant F does not make every predictor significant. In the example F is highly significant, yet socst is not.
- State the tail. The female coefficient has a two-tailed p of .051, not significant at .05, while the one-tailed value is .0255. The same row reads differently depending on the tail, so say which you used.
- Intervals and p-values agree. A 95% interval that includes zero means the coefficient is not significant at alpha = .05.
- Sig. = .000 is not zero. It means the p-value rounds to zero at three decimals.
- B and Beta answer different questions. B is in natural units; Beta compares predictors on one scale.
How to report regression results
A regression write-up draws on the same three blocks: the model’s R² and adjusted R², the overall F with both degrees of freedom and its p-value (here F(4, 195) = 46.69), and for each predictor the coefficient, its standard error or interval, and the p-value, with the tail stated. Give the sample size. Exact formatting (decimal places, italics, table layout) is set by the style manual or journal you are writing for, so follow its current edition rather than a general rule.
How to read a regression table in R or Python
In R, summary() prints the coefficient matrix, the residual standard error, R², adjusted R² and the F-statistic with its degrees of freedom:
fit <- lm(science ~ math + female + socst + read, data = hsb2)
summary(fit) # coefficients, sigma, R-squared, F
coef(summary(fit)) # estimate, std. error, t value, Pr(>|t|)
confint(fit) # 95% confidence intervals
In Python, the statsmodels results object exposes the same quantities as attributes:
import statsmodels.formula.api as smf
fit = smf.ols("science ~ math + female + socst + read", data=hsb2).fit()
print(fit.summary())
fit.params; fit.bse; fit.tvalues; fit.pvalues
fit.conf_int(); fit.rsquared_adj; fit.fvalue; fit.f_pvalue
The data frame hsb2 is the dataset used in the UCLA example; substitute your own variables. For a worked calculation of a simple line by hand, see the linear regression calculator guide.
Frequently asked questions
How do I read a regression table?
Start with R² and adjusted R² for fit, check the overall F and its p-value, then read each coefficient with its standard error, p-value or interval. The sign of B gives direction; its size is in the variable’s units.
How do I report regression results?
Report R² (and adjusted R²), F with both degrees of freedom and p, and each coefficient with its standard error or interval and p-value, stating the tail and N. Match the exact layout to your style guide’s current edition.
What is the difference between R Square and Adjusted R Square?
Adjusted R Square penalizes extra predictors, estimating the population R² more honestly. In the example, .489 becomes .479.
Why is my F significant but my predictor is not?
The F test is about the model as a whole. It does not address the ability of any individual predictor, which the coefficients table tests row by row.
Sources
- UCLA OARC, Regression Analysis | SPSS Annotated Output (checked 2026-10-29)
- R documentation, summary.lm (stats package) (checked 2026-10-29)
- statsmodels, RegressionResults (checked 2026-10-29)







