How to interpret summary(lm) in R, line by line

Updated 8 September 2026 · 14 min read

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.

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:

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):

Frequent errors

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