How to Read Regression Output: Every Number Explained

July 17, 2026

Econometrics · Regression
How to Read Regression Output: Every Number Explained
Software prints about forty numbers. Roughly six of them matter. Here’s which, why, and what your marker is actually looking for.
Every statistics course teaches you to run a regression. Almost none teach you to read one.
Which is strange, because reading is the thing you’ll actually do. You’ll read them in papers, in reports, in exam questions, and in your own output at midnight wondering whether it worked. Running a regression is one line of code. Reading one is a skill.
So here’s the whole table, number by number. What each one is, what it’s for, what it’s not for, and which ones you can safely ignore.
We’ll use one example throughout: a wage regression on 1,000 workers.
log(hourly wage) = β₀ + β₁·education + β₂·experience + β₃·female + ε

The output

Here’s what R gives you. Stata’s looks different; the numbers are identical. We’ll do the translation later.
Call:
lm(formula = log_wage ~ education + experience + female, data = wages)
 
Residuals:
     Min       1Q   Median      3Q      Max
-1.84327 -0.29471  0.00812  0.30119  1.92048
 
Coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept)  1.284310   0.104829  12.252  < 2e-16 ***
education    0.087214   0.006832  12.766  < 2e-16 ***
experience   0.012903   0.002417   5.339 1.12e-07 ***
female      -0.238471   0.031204  -7.643 4.83e-14 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
 
Residual standard error: 0.4721 on 996 degrees of freedom
Multiple R-squared:  0.3184,    Adjusted R-squared:  0.3163
F-statistic: 155.1 on 3 and 996 DF,  p-value: < 2.2e-16
Forty-odd numbers. Let’s take them apart.

The coefficient column — this is the answer

🔑 Key term
Coefficient (Estimate, β̂) — the estimated partial effect of a one-unit increase in that regressor on the outcome, holding all other included regressors constant.
This is what you came for. Everything else in the table exists to tell you how much to trust it.
education = 0.087214
Our outcome is logged, so this is a log-level model: multiply by 100 and read it as a percentage. One additional year of education is associated with roughly 8.7% higher hourly wages, holding experience and sex constant.
experience = 0.012903 → about 1.3% higher wages per additional year of experience, holding the rest constant.
female = −0.238471 → a dummy. And here’s where most students get it wrong.
⚠ Common error — the dummy coefficient
What the marker sees: “Women earn 23.8% less.”
Why it’s wrong: dummy coefficients are almost always too large for the ×100 approximation. Use the exact formula: (e^β̂ − 1) × 100 = (e^(−0.2385) − 1) × 100 = −21.2%.
So women earn about 21.2% less, not 23.8%. You’ve overstated the gap by 2.6 percentage points — which, in a paper about the gender pay gap, is not a rounding error.
(Intercept) = 1.284310
The predicted value of log(wage) when education = 0, experience = 0, and female = 0. Which describes a man with no education and no experience. Does that person exist in your data? Almost certainly not. So the intercept is an extrapolation to a point outside your sample, and it means nothing.
That’s normal. The intercept is usually not interpretable and that’s fine — it’s there to position the line, not to say something. If you want it to be meaningful, centre your variables: subtract the mean from education and experience, and the intercept becomes the predicted log wage for a man with average education and average experience. Same model, same fit, interpretable intercept.
💡 Insight — what “holding constant” actually means
Nobody held anything constant. You have observational data; you didn’t intervene on anything.
What it means is: among workers who happen to share the same values of the other regressors, here’s the relationship. It’s a statement about comparisons within your sample.
Which raises an uncomfortable question: if nobody in your data has 20 years of education and 40 years of experience, the model will still cheerfully report a coefficient for that combination — by extrapolating. “Controlling for” is a claim about the overlap in your data, not about the world. Regression is very confident about regions where it has no information.

The standard error column — how much this bounces

🔑 Key term
Standard error — the estimated standard deviation of the coefficient’s sampling distribution. It answers: if I drew a different sample of 1,000 workers and re-ran this, how much would β̂ move?
Small SE → the estimate is stable. Large SE → your coefficient is a guess wearing a decimal point.
education: SE = 0.006832. Tiny relative to the coefficient of 0.087. That’s a precisely estimated effect.
Here’s the thing nobody tells undergraduates: the standard error is a design manual.
📐 Formula — what makes a standard error small
SE(β̂₁) = σ̂ / √(Σ(xᵢ − x̄)²)
Read the denominator. It’s the spread of your regressor. Three consequences, all actionable:
More data → more terms in the sum → smaller SE. The familiar one.
More spread in x → bigger terms → smaller SE. The one nobody mentions.
Smaller residual variance (σ̂) → smaller SE. Better model, better precision.
When to reach for it: when designing a study. If you’re choosing which workers to survey and you only sample people with 12–14 years of education, you will estimate the return to education badly no matter how many of them you get. Variation in x is not noise. It’s the fuel.

The t-statistic — how many standard errors from zero

🔑 Key term
t value — the coefficient divided by its standard error. It measures how many standard errors your estimate sits away from zero.
education: t = 0.087214 / 0.006832 = 12.766
That’s it. That’s the whole calculation. The coefficient is nearly 13 standard errors from zero — an enormous distance.
The rough-and-ready rule: |t| > 2 is roughly significant at the 5% level for any reasonable sample size. It’s an approximation of the exact critical value (1.96 for large samples), but for eyeballing a table it’s all you need.
⚠ Common error — testing the wrong null
The reported t always tests H₀: β = 0. That’s the software’s default, not a law.
Sometimes zero is a stupid null. Testing whether the return to education differs from zero is not interesting — of course it isn’t zero. Testing whether it differs from the 10% found in previous literature might be.
For that you compute it yourself: t = (β̂ − βhypothesised) / SE. Here: (0.0872 − 0.10) / 0.0068 = −1.88. Not significant at 5%. Your estimate is statistically indistinguishable from the literature’s 10%, even though it’s wildly significantly different from zero.
Two completely different conclusions from the same coefficient, depending on which question you asked. The software only ever asks one of them.

The p-value — the most misunderstood number in science

education: Pr(>|t|) < 2e-16
That’s scientific notation for 0.0000000000000002. R prints < 2e-16 because it’s hit the floor of double-precision arithmetic. It does not mean zero. Nothing is ever zero.
💡 Insight — what a p-value is not
It is not the probability the null is true.
It is not the probability your result happened by chance.
It is not 1 minus the probability the alternative is true.
It is: the probability of observing a coefficient at least this far from zero, in a world where the true coefficient is zero.
Read that again. The p-value is computed assuming the null is true. It cannot then tell you whether the null is true — that would be circular. Nearly every misuse of statistics in the published literature is this one substitution.
And the stars — ***, **, * — deserve a word.
⚠ Common error — star-gazing
The significance stars are a convenience, not a finding. Three problems with treating them as the answer:
1. Significance isn’t importance. With n = 100,000, a return to education of 0.0003 would be wildly significant and completely irrelevant. Significance is about precision, not size. Always report the effect size.
2. p = 0.049 and p = 0.051 are not different in kind. One gets a star and one doesn’t. They are, evidentially, the same result. The threshold is a convention Fisher suggested casually and the profession ossified into a rule.
3. It encourages hunting. If you run enough specifications, something gets a star. That’s not discovery; that’s arithmetic. Run 20 tests at α = 0.05 on pure noise and you should expect one “significant” result.
Many journals now discourage or ban significance stars. summary(model) will keep printing them anyway.

Residual standard error — the typical miss

Residual standard error: 0.4721 on 996 degrees of freedom
This is σ̂: roughly, the typical size of a residual. Our model’s predictions are off by about 0.47 in log points — which, since we’re in logs, is roughly 47% in wage terms. That’s… not great. Which is honest. Wages are hard to predict.
Degrees of freedom = 996. That’s n − k, where k is the number of estimated parameters: 1,000 − 4 = 996. Four parameters: three slopes plus the intercept.
⚠ Common error — degrees of freedom
Students write n − 1 out of habit from t-tests. In a regression with k parameters it’s n − k. In simple regression that’s n − 2, not n − 1, because you estimated a slope and an intercept. Each parameter you estimate costs you a degree of freedom.

R² — the number everyone quotes and nobody understands

Multiple R-squared: 0.3184
🔑 Key term
— the proportion of the variation in y that the model accounts for. Formally SSR/SST, where SST = SSR + SSE.
So 31.8% of the variation in log wages is accounted for by education, experience and sex. The other 68% is everything else: ability, luck, industry, negotiation, discrimination, who your parents knew.
Now the important part.
💡 Insight — R² is not a measure of whether your model is any good
This is the single most over-interpreted number in applied work.
A low R² is not a problem. If you’ve credibly identified a causal effect and it explains 3% of variation, you’ve done real science. Human behaviour is mostly unexplained by any three variables. Most well-identified papers in top economics journals have unremarkable R².
A high R² is not a virtue. Regress this year’s GDP on last year’s GDP and get R² = 0.99. You’ve learned nothing. Fit and truth are different things.
R² tells you nothing about bias. You can have R² = 0.95 and a completely wrong coefficient, because a confounder is doing the fitting for you. R² measures prediction. Omitted variable bias is about explanation. They are not the same problem, and R² is silent on the one that matters.
R² never falls when you add a variable. Not “rarely.” Never. Add random noise to any model and R² will rise, because OLS will find some accidental fit. Which is why adjusted R² exists.
Adjusted R-squared: 0.3163. Penalises you for parameters. It can fall when you add a useless variable — that’s the entire point. Slightly below the raw R², as it should be with three genuinely useful regressors.
Use adjusted R² for comparing models with different numbers of variables on the same dependent variable.
⚠ Common error — comparing R² across different dependent variables
R² from a model with wage as the outcome and one with log(wage) as the outcome measure variation in different quantities. They are not comparable. Not “roughly comparable.” Not comparable. This appears in published work.

The F-statistic — is anything happening at all?

F-statistic: 155.1 on 3 and 996 DF, p-value: < 2.2e-16
This tests: H₀: all slopes are simultaneously zero. Against: at least one isn’t. It’s a low bar and it’s nearly always cleared. If your F is insignificant, something has gone badly wrong — you have a model that explains nothing.
The df pair (3, 996) is (number of restrictions, residual df). Three restrictions because you’re testing three slopes at once.
💡 Insight — when the F-test actually earns its keep
The overall F is boring. The F-test as a tool is not.
Its real use is testing joint hypotheses, and it can disagree with the individual t-tests in a way that’s genuinely informative.
With severe multicollinearity, two regressors can each be individually insignificant — neither t clears 2 — while an F-test rejects the joint null decisively. Translation: together these variables clearly matter, but the data can’t tell you which one is doing it.
That’s a real finding, and it’s invisible if you only read the t-column. Individually insignificant and jointly significant is not a contradiction. It’s a diagnosis.

Reading the same table in Stata and Excel

Same numbers, different furniture.
------------------------------------------------------------------------------
    log_wage |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
   education |   .0872140   .0068320    12.77   0.000     .0738074    .1006206
  experience |   .0129030   .0024170     5.34   0.000     .0081599    .0176461
      female |  -.2384710   .0312040    -7.64   0.000    -.2997049   -.1772371
       _cons |   1.284310   .1048290    12.25   0.000     1.078600   1.490020
------------------------------------------------------------------------------
RStataMeaning
EstimateCoef.the coefficient
Std. ErrorStd. Err.standard error
t valuett-statistic
Pr(>|t|)P>|t|p-value
(Intercept)_consintercept
not shown by default[95% Conf. Interval]confidence interval
Two real differences worth knowing.
1. Stata shows confidence intervals by default. R doesn’t. This is a genuine pedagogical advantage for Stata, and R users should type confint(model) every single time. The CI tells you the range of effects your data can’t rule out — which is almost always more useful than a p-value. Our education CI is [0.074, 0.101]: we can rule out returns below 7.4% and above 10.1%. That’s a real statement about the world. “p < 0.001” isn’t.
2. Stata rounds p-values to 0.000. It does not mean zero. It means “smaller than 0.0005.” Never write “p = 0.000” in a paper — write p < 0.001.
Excel (Data Analysis → Regression) produces the same quantities with different labels — “Coefficients,” “Standard Error,” “t Stat,” “P-value,” “Lower 95%,” “Upper 95%.” Two warnings: Excel’s regression tool has no robust standard errors, no fixed effects, and no facility for anything beyond the basics; and it recalculates nothing when your data changes. It’s fine for a first look and unsuitable for a dissertation.

The six questions to ask any regression table

This is the checklist. Yours, or one in a paper you’re reading. In order.
1. What’s the dependent variable, and is it logged?
Determines the units of every coefficient in the table. Get this wrong and every interpretation is wrong. Look first, always.
2. What’s the sample size — and does it match the data?
n = 1,000. Did the dataset have 1,000? If the paper says 2,400 firms and the table says 1,850, 550 observations vanished and the paper needs to explain why. (Logs of zero. Missing data. Listwise deletion. It’s always one of those, and it’s always systematic.)
3. Is the effect big?
Not significant — big. 8.7% per year of education is large: four years is roughly a 40% wage difference. Compare it to something. An effect with no benchmark is a number, not a finding.
4. What’s the confidence interval?
[0.074, 0.101]. What does it rule out? Would a policy conclusion change anywhere inside that range? If yes, your result is less decisive than the stars suggest.
5. What’s missing from the model?
The big one. What confounder isn’t here? In this table: ability. It raises wages and correlates with education, so our 8.7% is biased upward. The true causal return is lower.
6. Is there any reason to think this is causal?
Randomisation? Natural experiment? Instrument? Discontinuity? If the answer is “we controlled for some stuff,” the answer is no, and the word in your write-up is associated with.
💡 Insight — questions 5 and 6 are the whole game
Questions 1–4 are about reading the table. Anyone can learn them in an afternoon — you just did.
Questions 5 and 6 are about what the table can’t tell you, and they require you to know the subject rather than the software. That’s why economists argue about identification rather than arithmetic, and it’s why a good referee report barely mentions the numbers.
The table is the easy part. It always was.
📊 Case study — the same output, read two ways
Here’s why this matters. Two students, same regression, same table.
Student A writes:
“Education has a highly significant positive effect on wages (β = 0.087, p < 0.001). The model is significant overall (F = 155.1, p < 0.001) with an R² of 0.318, indicating good explanatory power. Being female significantly reduces wages by 23.8%.”
Every number is correctly copied. It’s a bad answer, and it would lose most of the available marks.
“effect” and “reduces” — causal language with no identification. There’s nothing here but controls.
“23.8%” — approximation misapplied to a dummy. It’s 21.2%.
“good explanatory power” — R² = 0.32 is neither good nor bad. It’s a number about prediction in a sentence about explanation.
Nothing about what’s missing. No mention of ability. No acknowledgement that the central estimate is biased.
No effect size discussion. Significant, yes. Big? Compared to what?
Student B writes:
“An additional year of education is associated with approximately 8.7% higher hourly wages, holding experience and sex constant (95% CI: 7.4%–10.1%). This is economically substantial — a three-year degree corresponds to roughly a 29% wage difference — and consistent with the 6–10% range typically found in the returns-to-education literature (Card, 1999).This estimate should be treated as an upper bound on the causal return. Ability is unobserved, plausibly raises wages, and correlates positively with schooling, implying upward bias. The credible identification strategies in this literature — twins studies, compulsory schooling reforms, college proximity instruments — exist precisely to address this.The coefficient on female implies women earn approximately 21.2% less ((e^−0.2385 − 1) × 100), conditional on education and experience. This is a conditional gap, not a measure of discrimination: it is silent on occupational sorting, hours, and career interruptions, each of which may itself be a consequence of discrimination rather than a control for it.”
Same table. Same forty numbers. Student B knows what a regression is.
The difference isn’t intelligence or effort. It’s six questions.

Practice questions

Q1. A coefficient is 0.42 with a standard error of 0.09. Compute the t-statistic and state, without a table, whether it’s significant at 5%.
Q2. A regression on 500 observations with 6 regressors plus an intercept. How many residual degrees of freedom?
Q3. Two models on the same data. Model 1: R² = 0.41, 3 regressors. Model 2: R² = 0.43, 9 regressors. Which is better?
Q4. A paper reports R² = 0.89 and concludes “the model provides strong evidence that advertising drives sales.” Give two objections.
Q5. A coefficient on log(price) is −1.4 with a 95% CI of [−2.6, −0.2]. The author writes: “Demand is elastic.” Assess.
Q6. In a regression of test scores on class size and teacher experience, neither coefficient has |t| > 2, but the F-statistic is 24.1 with p < 0.001. Explain, and say what you’d do.

Worked answers

A1. t = 0.42 / 0.09 = 4.67. Well above the |t| > 2 rule of thumb, so significant at 5% (and far beyond). No table needed — that’s the point of the rule.
A2. df = n − k = 500 − 7 = 493. Seven parameters: six slopes plus the intercept. Not 500 − 6, and definitely not 500 − 1.
A3. Unanswerable as stated, and that’s the lesson.cannot fall when you add regressors, so Model 2’s higher R² is guaranteed by construction and carries no information. Six extra variables bought 0.02 of R² — which is roughly what you’d expect from noise.
Compare adjusted R² instead, or run an F-test of the joint significance of the six added variables. If they’re jointly insignificant, Model 1 is preferable on parsimony. And underneath all of it: which model is better theoretically? If those six variables are mediators or colliders, Model 2 is worse regardless of any fit statistic.
A4. Two from many:
R² measures fit, not causation. A confounder can produce a beautiful fit and a wrong coefficient. High R² is not evidence of identification — it’s evidence of prediction. Nothing in the table addresses whether firms with better products both advertise more and sell more.
Reverse causality. Advertising budgets are typically set as a percentage of past sales. So sales cause advertising, mechanically, in most firms’ budgeting processes. The regression cannot distinguish the direction.
• (Also good: the omitted variable is product quality; the R² may be driven by scale — big firms both advertise more and sell more — so include firm size and watch the effect collapse.)
A5. The point estimate of −1.4 is a log-log coefficient, so it’s the price elasticity of demand: |−1.4| > 1, elastic. So far so good.
But look at the interval. It runs from −2.6 to −0.2. The upper end, −0.2, is firmly inelastic. The data cannot distinguish “demand is highly elastic” from “demand is very inelastic.” Those imply opposite pricing decisions: with elastic demand, cutting price raises revenue; with inelastic demand, it destroys it.
The correct statement: “the point estimate suggests elastic demand, but the confidence interval includes inelastic values, so the data are not decisive.” The result is significant — it excludes zero — and simultaneously almost useless for the decision it was meant to inform.
This is the best argument in statistics for reporting confidence intervals rather than stars. The p-value said “significant!” The interval said “we don’t know.” The interval was right.
A6. This is textbook multicollinearity. Class size and teacher experience are presumably strongly correlated — experienced teachers get assigned smaller classes, or better-funded schools have both. The regression can see clearly that together they matter (F = 24.1 is decisive), but it cannot separate their individual contributions, so each standard error inflates and each t collapses.
Note what has not happened: nothing is biased. Multicollinearity inflates standard errors; it does not touch the coefficients. The estimates are still unbiased — just imprecise.
What to do: check the correlation and the VIFs to confirm the diagnosis. Then be honest — report the joint significance and state plainly that the data can’t separate the two effects. If theory says one of them is the mechanism, argue it. If you only need prediction, multicollinearity doesn’t matter at all and you can ignore it entirely. What you must not do is drop one because it’s insignificant and then interpret the survivor as if it were the whole story.

The short version

Coefficient = the answer. Everything else grades it.
Standard error = how much it bounces. Small when n is big, x is spread out, residuals are small.
t = coefficient / SE. |t| > 2 ≈ significant. It tests β = 0, which may not be your question.
p = P(data this extreme | null true). Not P(null true). Never write p = 0.000.
= fit, not truth, not causation, not model quality. It never falls when you add junk.
F = “is anything happening?” Its real use is joint tests.
Get the confidence interval. It’s more honest than the stars.
Questions 5 and 6 — what’s missing, and is it causal — are the whole game.

References

1. Wooldridge, J.M. (2019) Introductory Econometrics: A Modern Approach. 7th edn. Boston: Cengage.
2. Angrist, J.D. & Pischke, J.-S. (2009) Mostly Harmless Econometrics: An Empiricist’s Companion. Princeton: Princeton University Press.
3. Card, D. (1999) “The Causal Effect of Education on Earnings,” in Handbook of Labor Economics, Vol. 3A. Amsterdam: Elsevier, pp. 1801–1863.
4. Wasserstein, R.L. & Lazar, N.A. (2016) “The ASA Statement on p-Values: Context, Process, and Purpose,” The American Statistician, 70(2), pp. 129–133.
5. Ziliak, S.T. & McCloskey, D.N. (2008) The Cult of Statistical Significance. Ann Arbor: University of Michigan Press.
6. Goldin, C. (2014) “A Grand Gender Convergence: Its Last Chapter,” American Economic Review, 104(4), pp. 1091–1119.
Reading output is the skill nobody teaches and everybody needs.
Every chapter of Statistics Made Simple has a “Reading the Output” section — annotated real output, in R, Stata, Python and Excel, because the exam puts a table in front of you and asks what it means.

Related Posts