Heteroscedasticity: Tests, Fixes, and How to Report It
2026/10/31

Heteroscedasticity: Tests, Fixes, and How to Report It

What heteroscedasticity is, how to spot it in residual plots, how to run Breusch-Pagan and White tests, and how to fix and report it with robust SEs.

Heteroscedasticity means the spread of a regression model's residuals is not constant: the errors get larger (or smaller) as the fitted values or a predictor change. It does not bias your regression coefficients, but it makes the ordinary standard errors wrong, so your t-tests, p-values, and confidence intervals can no longer be trusted. The usual fix is to keep the coefficients and report heteroscedasticity-robust (HC3) standard errors.

This guide covers how to see it, how to test for it, what to do about it, and the sentences you can use in a methods and results section.

What heteroscedasticity means

Ordinary least squares (OLS) regression assumes homoscedasticity: every observation's error term has the same variance, whatever the values of the predictors. Heteroscedasticity is the violation of that assumption.

A classic example is income and spending. Households with low income have little room to vary their discretionary spending, so their spending sits close to the regression line. High-income households can spend a little or a lot, so their points fan out. The regression line may still be right on average, but the scatter around it grows with income.

Common sources in research data:

  • Scale effects: outcomes measured in money, counts, or sizes, where larger units vary more in absolute terms.
  • Group differences: pooling groups (for example, clinics, schools, firms) with different amounts of variability.
  • Bounded or skewed outcomes: proportions near 0 or 1, reaction times, length of hospital stay.
  • Model misspecification: a missing interaction, a missing squared term, or a predictor that should have been logged. Sometimes "heteroscedasticity" is really a sign that the model's functional form is wrong.

Why it matters

Under heteroscedasticity, OLS coefficients are still unbiased and consistent. What breaks is the variance formula behind the standard errors:

  • Standard errors are usually too small (sometimes too large), so t-statistics and p-values are off.
  • Confidence intervals have the wrong coverage, so a "95%" interval may cover the true value much less often than 95% of the time.
  • OLS is no longer the most efficient linear estimator; weighted least squares can give tighter estimates if you know the variance pattern.

In short: your point estimates are fine, but your inference is not. That is why most fixes target the standard errors rather than the coefficients.

How to detect it: residual plots first

Start with a picture. After fitting the model, plot the residuals (or standardized residuals) on the y-axis against the fitted values on the x-axis.

  • Homoscedastic: a horizontal band of points with roughly even height from left to right.
  • Heteroscedastic: a funnel or cone shape (narrow on one side, wide on the other), a bow-tie, or clearly different spread in different regions.

Two other useful plots:

  • Scale-location plot: the square root of the absolute standardized residuals against fitted values. A rising trend line signals variance that grows with the fitted values.
  • Residuals against each predictor: helps you identify which variable drives the changing spread, which matters if you later choose weighted least squares.

Plots are often more informative than tests. With a large sample, a formal test will flag trivial heteroscedasticity; with a small one, it may miss a pattern that is obvious to the eye.

Formal tests: Breusch-Pagan and White

Both tests share the same logic. Square the OLS residuals, then check whether those squared residuals can be predicted from the regressors. If they can, the error variance depends on the predictors, and you have heteroscedasticity.

Breusch-Pagan testWhite test
Auxiliary regressionSquared residuals on the original predictorsSquared residuals on the predictors, their squares, and (in the full version) their cross-products
DetectsVariance that changes linearly with the predictorsMore general forms of heteroscedasticity, including nonlinear patterns
Test statisticn × R² from the auxiliary regression, chi-square distributedn × R² from the auxiliary regression, chi-square distributed
Degrees of freedomNumber of predictors in the auxiliary regressionNumber of terms in the auxiliary regression (excluding the intercept)
DrawbackMisses nonlinear variance patternsUses many degrees of freedom with several predictors; low power in small samples

For both tests, the null hypothesis is homoscedasticity. A small p-value (for example, p < .05) is evidence of heteroscedasticity.

A note on versions: the original Breusch-Pagan test assumes normally distributed errors. The Koenker (studentized) version, which uses n × R², does not, and it is the default in several packages (for example, bptest() in R's lmtest). Say which one you used.

A worked example

Suppose you regress annual discretionary spending (in $100s) on household income (in $1,000s) for 20 households. Income runs from 20 to 120.

income:   20  25  30  35  40  45  50  55  60  65  70  75  80  85  90  95 100 105 110 120
spending: 16  19  22  26  30  31  38  37  45  43  55  47  63  52  74  60  85  64  93  70

Step 1: Fit OLS. The fitted line is spending = 2.14 + 0.684 × income, R² = .878. The ordinary standard error of the slope is 0.060, giving t(18) = 11.38.

Step 2: Look at the residuals. For the 10 lowest-income households, the residuals have a standard deviation of about 1.8. For the 10 highest-income households, it is about 11.0. A residual-versus-fitted plot shows a clear funnel opening to the right.

Step 3: Run the tests.

  • Breusch-Pagan (Koenker version): regressing the squared residuals on income gives R² = .691, so the statistic is 20 × .691 = 13.83, with 1 degree of freedom, χ²(1) = 13.83, p < .001.
  • White test: regressing the squared residuals on income and income squared gives R² = .839, so the statistic is 20 × .839 = 16.78, χ²(2) = 16.78, p < .001.

Both tests reject homoscedasticity, consistent with the plot.

Step 4: Recompute the standard errors. Keeping the same coefficients, the HC3 robust standard error of the slope is 0.085 instead of 0.060.

Slope estimateSEt(18)95% CI
OLS standard errors0.06011.38[0.56, 0.81]
HC3 robust standard errors0.0858.09[0.51, 0.86]

The coefficient (0.684) does not change. The robust standard error is about 40% larger, so the confidence interval is wider. Here income remains a strong predictor either way, but in a study with a weaker effect, this difference can move a result from "significant" to "not significant." That is the whole reason to care.

You can reproduce the basic fit with the linear regression calculator and then compute the robust standard errors in your statistics software.

How to fix heteroscedasticity

1. Use heteroscedasticity-robust standard errors

This is the most common and usually the safest choice. Robust (also called Huber-White or sandwich) standard errors remain valid whether or not the variance is constant, so you do not need to know the exact pattern.

There are several versions:

  • HC0: White's original estimator; tends to be too small in small samples.
  • HC1: HC0 with a degrees-of-freedom correction; the default for robust in Stata.
  • HC2 and HC3: adjust for each observation's leverage. HC3 performs well in small and moderate samples and is a sensible default (it is the default in R's sandwich::vcovHC()).

In R, use lmtest::coeftest(model, vcov = sandwich::vcovHC(model, type = "HC3")). In Stata, regress y x, vce(hc3). In Python's statsmodels, fit(cov_type="HC3"). In SPSS, the GENLIN procedure or the PROCESS macro (which offers HC0 to HC4 options) can produce them.

If your observations are clustered (students within classes, repeated measures on the same firm), use cluster-robust standard errors instead. They handle heteroscedasticity and within-cluster correlation together. The fixed effects vs random effects guide covers this for panel data.

2. Transform the outcome

If the spread grows in proportion to the level of the outcome, a log transformation of a positive, right-skewed outcome often stabilizes the variance. Square-root transformations can help with counts. The cost is interpretation: coefficients now describe changes in log units (roughly percentage changes), and you must explain that to readers. Do not transform just to make a test pass; transform when the transformed scale makes substantive sense.

3. Weighted least squares (WLS)

If you know, or can credibly model, how the variance changes, WLS gives each observation a weight inversely proportional to its error variance. In the example, assuming the variance grows with income squared (weights of 1/income²) gives a slope of 0.688 with a standard error of 0.036. WLS can be more precise than OLS, but only if the variance model is right. If you are not sure, combine WLS with robust standard errors, or stay with OLS plus HC3.

4. Fix the model

Check for a missing nonlinear term, a missing interaction, or an omitted group variable. If adding the right term removes the funnel, the original problem was misspecification, not just unequal variance. For count or binary outcomes, a generalized linear model (Poisson, negative binomial, logistic) is usually more appropriate than OLS in the first place.

Heteroscedasticity and other regression diagnostics

Heteroscedasticity is one of several assumption checks for linear regression. It is separate from multicollinearity, which concerns correlation among predictors rather than the error variance; see the guide to the variance inflation factor (VIF). Check normality of residuals and influential observations too; a few extreme points can create what looks like a funnel. The regression and mediation analysis guide summarizes the full set of checks.

How to report heteroscedasticity in APA 7 style

State what you checked, what you found, and what you did about it. Report test statistics in italics where your journal uses them (χ², p), with degrees of freedom.

Methods section:

Homoscedasticity was assessed by inspecting a plot of residuals against fitted values and with the studentized Breusch-Pagan test. Because the test indicated heteroscedasticity, we report heteroscedasticity-consistent standard errors (HC3) for all regression coefficients.

Results section:

The residual plot showed increasing spread at higher fitted values, and the Breusch-Pagan test was significant, χ²(1) = 13.83, p < .001. Using HC3 robust standard errors, household income remained a significant predictor of discretionary spending, B = 0.68, SE = 0.085, t(18) = 8.09, p < .001, 95% CI [0.51, 0.86]. The model explained 87.8% of the variance in spending, R² = .878.

Table note:

Note. Standard errors are heteroscedasticity-consistent (HC3).

If you report robust standard errors in a table, say so in the note; readers otherwise assume ordinary OLS standard errors.

Common mistakes

  • Transforming or dropping data until the test is non-significant. Choose the remedy for substantive reasons, and report what you did.
  • Relying on the test alone. Large samples flag tiny, harmless heteroscedasticity; small samples miss real problems. Always look at the plot.
  • Thinking the coefficients are biased. They are not (unless the heteroscedasticity comes from misspecification). The issue is the standard errors.
  • Using HC0 in a small sample. It is often too optimistic. HC3 is the safer default.
  • Not saying which standard errors you used. Reviewers cannot evaluate a p-value without knowing the variance estimator behind it.
  • Using robust standard errors when observations are clustered. Plain HC standard errors assume independent observations; clustered data need cluster-robust standard errors.

FAQ

Can I just use robust standard errors every time?

Many applied researchers do, and it is a defensible default, especially with HC3. With homoscedastic errors, robust standard errors are close to the ordinary ones in moderate and large samples, so little is lost. In very small samples they can be noisier, so it is still worth looking at the residual plot and reporting both if they differ.

Is heteroscedasticity the same as non-normal residuals?

No. Normality concerns the shape of the error distribution; homoscedasticity concerns whether its spread is constant. You can have one problem without the other, although skewed outcomes often produce both.

Does heteroscedasticity matter for logistic regression?

Not in the same way. Logistic regression does not assume constant error variance; the variance of a binary outcome depends on its probability by design. The Breusch-Pagan and White tests are tools for linear regression.

Should I use the Breusch-Pagan or the White test?

Use Breusch-Pagan when you expect variance to change steadily with the predictors, and White when you want to catch more general patterns and have enough observations for the extra terms. Reporting either, together with a residual plot, is usually acceptable.

What does a significant test mean for my hypotheses?

Nothing by itself. It tells you the ordinary standard errors are unreliable. Re-run inference with robust standard errors (or another remedy) and base your conclusions on that.

From data to a full results section

If you have a complete dataset and want a draft paper with the regression, assumption checks, tables, and figures already written up, Data2Paper Generate Paper lets you upload a CSV or XLSX file and preview the first half of the draft for free; unlocking the full paper is a one-time $19.90. It is an AI-generated draft, so check the analysis choices and numbers before you submit.

ニュースレター

コミュニティに参加

最新のニュースとアップデートをニュースレターでお届けします