The output of summary(lm) is
probably the most intimidating block of text a student meets when using R for the first time. Twenty
lines of numbers with no friendly labels, abbreviations and scientific notation. The good news: this
output has a fixed structure, and every element answers one specific question. Once you understand the
logic, you can read any regression in thirty seconds.
Let's dissect a complete example. Suppose a study investigating whether age and income predict a quality-of-life score:
Call:
lm(formula = quality_of_life ~ age + income, data = mydata)
Residuals:
Min 1Q Median 3Q Max
-12.4531 -3.2104 0.1876 3.4522 11.9087
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 42.35601 4.51203 9.388 < 2e-16 ***
age 0.81230 0.12450 6.524 4.56e-09 ***
income -0.14560 0.08920 -1.632 0.105
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 5.124 on 147 degrees of freedom
Multiple R-squared: 0.4231, Adjusted R-squared: 0.4152
F-statistic: 53.89 on 2 and 147 DF, p-value: < 2.2e-16
Block 1 — Call
Reproduces exactly the model that was fitted. It looks trivial, but it is your main protection against the most costly error in an analysis: reporting results from a model different from the one you think you ran. After twenty attempts at specification, it is easy to lose track. Always check the Call before copying numbers into your text.
The notation y ~ x1 + x2 reads "y explained by x1 and x2". The tilde separates the
outcome from the predictors.
Block 2 — Residuals
A residual is the model's error for each observation: the observed value minus the predicted value. R shows the five-number summary of that distribution.
What you should check here is symmetry. In a well-fitted model the median sits close to zero, and the minimum and maximum have similar magnitudes. In the example: median of 0.19 (close to zero), minimum of −12.45 and maximum of 11.91 — reasonably symmetric, with the first and third quartiles nearly mirrored. A sign that the assumption of normally distributed residuals is plausible.
Warning signs: a median far from zero indicates skewness; one extreme three or four
times larger than the other suggests influential outliers or a non-linear relationship the linear model
fails to capture. In those cases investigate with
plot(model), which produces the four standard diagnostic
plots.
Block 3 — Coefficients (the heart of the analysis)
This is where almost everything you will report comes from. Each row is a variable, each column a different piece of information about it.
The Estimate column
The estimated coefficient, in the original units of the variables. It is the most interpretable number in the whole output, and the one you should highlight.
- (Intercept) = 42.356 — the predicted quality-of-life value when all predictors equal zero. Careful: this often has no substantive meaning. A person aged zero with zero income does not exist. The intercept is mathematically necessary but rarely interpretable on its own. If you want it to mean something, centre your predictors on their means — the intercept then becomes the predicted value for the average individual.
- age = 0.812 — each additional year of age is associated with a 0.812-point increase in the quality-of-life score, holding income constant. That final clause is what distinguishes multiple regression from separate correlations: the coefficient is the partial effect, already net of the influence of the other predictors.
- income = −0.146 — the negative sign indicates an inverse direction, but check the p-value column before interpreting: this coefficient is not significant. Interpreting the direction of a non-significant coefficient is a common error — the estimate is indistinguishable from zero.
The Std. Error column
The standard error of the coefficient: the uncertainty of the estimate. The smaller it is relative
to the Estimate, the more precise the estimate. It is used to build the 95% confidence interval, which
is approximately the coefficient plus or minus twice the standard error. For age:
0.812 ± 2 × 0.124, roughly 0.56 to 1.06. In R, get the exact value with
confint(model).
Useful rule of thumb: if the confidence interval contains zero, the coefficient is not significant at 5%. It is the same information as the p-value, expressed more informatively — and good journals prefer confidence intervals to isolated p-values.
The t value column
Simply the Estimate divided by the Std. Error. It is the test statistic that generates the p-value. As a mental benchmark: t values with absolute magnitude above roughly 2 correspond to p below .05 in samples of reasonable size. For age, t = 6.524 — well above the threshold. For income, t = −1.632 — below it.
The Pr(>|t|) column
The two-tailed p-value. It tests the null hypothesis that the coefficient equals zero, that is, that the variable contributes nothing to explaining the outcome once the others are controlled for.
Two notations confuse beginners:
4.56e-09is scientific notation: 0.00000000456. Report it as p < .001.< 2e-16is R's limit of numerical precision — the p-value is so small it cannot be represented. Report it as p < .001 as well. Never write "p = .000", which is mathematically impossible and signals inexperience.
Note the APA convention here: p-values are written without a leading zero, because a p-value can never exceed 1. The same applies to r, R² and β when standardised.
Asterisks and Signif. codes
A visual marker of significance: three asterisks for p < .001, two for p < .01, one for p < .05, a dot for p < .1. Useful for scanning the output, but do not reproduce them in running text — report the numeric p-value. In tables, asterisks are acceptable provided the note explains the convention.
Block 4 — Residual standard error
The standard deviation of the residuals: the model's typical prediction error, in the units of the outcome. Here, 5.124 points. It means the model's predictions are off by about 5 points on the quality-of-life score on average.
This number is only interpretable relative to the scale of the variable. If the score ranges from 0 to 100, being off by 5 points is good. If it ranges from 0 to 10, the model is practically useless. Always compare it with the raw standard deviation of the outcome — if the residual error is close to the unconditional SD, the model is adding no explanatory power.
The 147 degrees of freedom equal n minus the number of estimated parameters. With three parameters (intercept and two predictors), the sample had 150 valid observations. This is useful for checking whether R silently dropped cases with missing data — one of the most frequent silent errors in practice.
Block 5 — R² and adjusted R²
Multiple R-squared: 0.4231. The model explains 42.31% of the variance in the outcome. It ranges from 0 to 1, and higher means better fit.
Adjusted R-squared: 0.4152. The same indicator, penalised for the number of predictors. This exists because R² always increases when you add variables — even purely random ones with no relationship to the outcome. Adjusted R² only increases if the added variable contributes real explanatory power. In multiple regression, report the adjusted value — it is the honest indicator.
How much is "good"? It depends radically on the field. In physics or engineering an R² of .95 is expected. In the social sciences, psychology and education, R² between .20 and .40 is common and publishable, because human behaviour has many unmeasured sources of variation. Do not chase a high R² by including predictors with no theoretical justification — that is overfitting, and the model will not generalise to new data.
Block 6 — F-statistic
Tests the global significance of the model: the null hypothesis that all predictor coefficients are simultaneously zero, that is, that the whole model explains nothing beyond what the outcome's mean would explain.
In the example, F = 53.89 with 2 and 147 degrees of freedom, p < 2.2 × 10⁻¹⁶. The model is globally significant.
This is the first number you should look at, before the individual coefficients. If the global F is not significant, examining coefficients individually is problematic — you would be making multiple comparisons with no protection against false positives.
How to write this up
"The multiple linear regression model was statistically significant, F(2, 147) = 53.89, p < .001, explaining 41.5% of the variance in quality of life (adjusted R² = .415). Age was positively and significantly associated with the outcome, B = 0.81, SE = 0.12, t = 6.52, p < .001, 95% CI [0.57, 1.06], indicating a mean increase of 0.81 points in the score per additional year of age, controlling for income. Income did not contribute significantly to the model, B = −0.15, SE = 0.09, t = −1.63, p = .105. The residual standard error was 5.12 points."
Note the structure: first the global model, then the explanatory power, then each predictor with its estimate, precision and significance, and finally the substantive interpretation in the original units. That is the sequence reviewers expect.
One notation detail that costs marks: APA reserves B (italic capital) for unstandardised
coefficients and β (beta) for standardised ones. The Estimate column of
summary(lm) gives you unstandardised
coefficients, so B is the correct symbol. Writing β for these values is technically wrong and
a frequent slip.
Assumptions the summary does not show
A tidy output does not guarantee a valid model. Always check, using
plot(model):
- Linearity — the "Residuals vs Fitted" plot. Points should scatter randomly around the horizontal line. A curved pattern indicates a non-linear relationship.
- Normality of residuals — the "Normal Q-Q" plot. Points should follow the diagonal. Note: the normality required is of the residuals, not of the original variables — a very common misconception.
- Homoscedasticity — the "Scale-Location" plot. Spread should be constant across fitted values. A cone shape indicates heteroscedasticity.
- Influential observations — the "Residuals vs Leverage" plot. Points with Cook's distance above 1 warrant individual investigation.
- Multicollinearity — does not appear in the plots. Use
car::vif(model). VIF values above 5 indicate predictors that are redundant with each other, which inflates standard errors and destabilises the coefficients.
Frequent errors
- Writing "p = .000". Impossible. Use "p < .001".
- Interpreting a non-significant coefficient. If p = .105, the estimate is indistinguishable from zero — do not claim "there was a trend towards a decrease".
- Interpreting a meaningless intercept. State that it is merely a model parameter, or centre your predictors.
- Claiming causality. "Predictor" is a technical term about mathematical structure. Regression on observational data does not establish cause.
- Reporting R² instead of adjusted R² in a multiple model.
- Adding a leading zero to p, r or R². APA omits it for quantities that cannot exceed 1.
- Forgetting to check the degrees of freedom. If the model's n is smaller than expected, R silently dropped cases with missing data.
Related tools
Paste your R output into the R → LaTeX converter to generate the coefficients table formatted with booktabs. If you would rather not use R, the statistics calculator runs simple regression straight from Excel, with the APA paragraph already drafted.
References
- American Psychological Association. (2020). Publication manual of the American Psychological Association (7th ed.).
- Fox, J., & Weisberg, S. (2019). An R companion to applied regression (3rd ed.). Sage.
- James, G., Witten, D., Hastie, T., & Tibshirani, R. (2021). An introduction to statistical learning (2nd ed.). Springer.
- Kutner, M. H., Nachtsheim, C. J., Neter, J., & Li, W. (2005). Applied linear statistical models (5th ed.). McGraw-Hill.