Statistical Tests Open Access

Ramsey RESET Test

Diagram of a scatterplot with a curved true relationship and a straight regression line fitted through it, illustrating the functional-form misspecification the Ramsey RESET Test is designed to detect.
Figure 1. The Ramsey RESET Test checks whether a regression's functional form is missing systematic curvature-such as omitted squared or cubed terms-by testing whether powers of the fitted values help explain the outcome beyond the original linear specification.

Introduction

The Ramsey RESET Test (Regression Equation Specification Error Test) checks whether a regression model's functional form is correctly specified-or whether it is missing systematic nonlinearity that a straight-line specification simply can't capture. If you are asking questions like "does experience really predict wages in a straight line, or does it flatten out at higher levels?", "is my model missing a squared or interaction term?", or "would a curved relationship fit this data noticeably better than the linear one I fitted?"-this is usually the test you are looking for.

By the end of this article you will be able to state exactly when a Ramsey RESET Test applies, compute the statistic completely by hand on two different worked examples, understand how it differs from variance-focused tests like Breusch-Pagan and White's Test, interpret the result correctly, know what to do if misspecification is detected, and run the same test in one line of Python with statsmodels.

What Is the Ramsey RESET Test?

Ordinary least squares regression assumes the relationship between the outcome and the predictors is correctly specified-typically linear in the included variables, unless polynomial or interaction terms have deliberately been added. In practice this often fails silently: a true relationship might flatten out at high values (diminishing returns), curve upward sharply, or depend on an interaction between two predictors that a plain linear specification never captures. The regression will still produce coefficients and a fitted line, but that line will be systematically wrong in a way that a simple R-squared or t-test won't reveal on its own.

The test works by asking a clever question: if I add powers of my own fitted values back into the model, do they help explain anything extra? If the original specification is correct, the fitted values already summarize everything the linear model has to offer, and their squares or cubes should add no real explanatory power. If the specification is missing curvature, those power terms act as a flexible stand-in for whatever nonlinear shape is missing, and they will pick up a real, testable improvement in fit.

It exists because a misspecified functional form doesn't just produce a slightly worse fit-it can bias the coefficient estimates themselves, unlike heteroskedasticity, which leaves coefficients unbiased but damages the standard errors. Catching neglected nonlinearity before trusting a model's coefficients and predictions is the entire purpose of running a Ramsey RESET Test as a standard regression diagnostic.

Core idea in one line: add powers of the fitted values back into the regression as extra regressors, and check whether they explain a meaningful amount of additional variation-if they do, the original model's functional form is missing something systematic.

When to Use It

Use a Ramsey RESET Test after fitting any ordinary least squares regression whenever you want to formally check whether the functional form-linear in the included predictors-is adequate, before trusting the model's coefficients and predictions. The key requirement: you already have a fitted linear regression, and you suspect (or simply want to routinely verify) that the true relationship might be curved, or that an important nonlinear or interaction term has been left out.

ScenarioRegressionWhat's Being Checked
Wage/experience modelingWage vs experience, educationWhether returns to experience flatten out (diminishing returns) rather than growing linearly
House price modelingSale price vs square footage, ageWhether price rises in a curved rather than straight-line way with size
Production/output modelsOutput vs labor, capital inputsWhether the model is missing diminishing-returns or interaction effects
Dose-response studiesResponse vs dosageWhether a linear dose-response line misses a genuinely curved relationship
Any routine OLS diagnostic checkAny linear regressionWhether the linear functional form itself is a reasonable choice
A routine check, not just a special-case test. Because functional-form problems are easy to miss just by looking at R-squared, many analysts run the Ramsey RESET Test as a standard part of every regression workflow, alongside variance checks like Breusch-Pagan and autocorrelation checks like the Durbin-Watson Test.

Key Assumptions

  • Independent observations: the augmented regression assumes observations are independent of one another, just like the original regression.
  • Constant error variance (for the classical F-test version): the standard RESET F-test assumes homoskedastic errors; if heteroskedasticity is also present, a robust covariance version of the test is preferable-see Checking Assumptions in Practice.
  • The fitted values carry the relevant nonlinearity: RESET's standard "fitted" form assumes that powers of the fitted values \( \hat{y}_i \) are a reasonable stand-in for whatever nonlinear terms are missing-this works well in most cases but is not guaranteed to catch every possible misspecification.
  • Large-sample approximation for asymptotic inference: in small samples, the exact F-distribution used by the test is still valid under normal errors, but power to detect subtle misspecification can be limited with very few observations.
  • No perfect multicollinearity in the augmented regression: because the added terms are powers of the fitted values, they are usually well-behaved, but in models with very few distinct fitted values (e.g., mostly binary predictors) the augmented regression can become numerically unstable.

Hypotheses

The Ramsey RESET Test formally tests whether the regression's functional form is missing systematic nonlinearity:

  • Null Hypothesis (\( H_0 \)): the model is correctly specified-there is no neglected nonlinearity that powers of the fitted values could explain.
  • Alternative Hypothesis (\( H_1 \)): the model is misspecified-some systematic nonlinearity remains unexplained by the current functional form.

(Formally, if the original model is \( y_i = \beta_0 + \beta_1 x_{1i} + \cdots + \beta_k x_{ki} + \varepsilon_i \) and the augmented model adds powers of the fitted values \( \hat{y}_i^2, \hat{y}_i^3, \ldots \) with coefficients \( \gamma_1, \gamma_2, \ldots \), the null hypothesis states \( \gamma_1 = \gamma_2 = \cdots = 0 \), while the alternative states that at least one \( \gamma_j \neq 0 \).)

The Formula, Explained

Start with a fitted regression \( y_i = \beta_0 + \beta_1 x_{1i} + \cdots + \beta_k x_{ki} + \varepsilon_i \) and its fitted values \( \hat{y}_i \). The RESET procedure follows four steps:

Step 1. Fit the original (restricted) model and obtain its fitted values \( \hat{y}_i \) and residual sum of squares \( SSR_r \).

Step 2. Build the augmented (unrestricted) model by adding powers of the fitted values-typically the square and cube-as extra regressors:

\[ y_i = \beta_0 + \beta_1 x_{1i} + \cdots + \beta_k x_{ki} + \gamma_1 \hat{y}_i^2 + \gamma_2 \hat{y}_i^3 + \varepsilon_i \]

Step 3. Fit the augmented model and obtain its residual sum of squares \( SSR_u \).

Step 4. Compute the F-statistic comparing the two models:

\[ F = \frac{(SSR_r - SSR_u) / q}{SSR_u / (n - k_u)} \]

where \( q \) is the number of power terms added (2 in the standard case: squared and cubed fitted values), \( n \) is the sample size, and \( k_u \) is the total number of parameters in the augmented model (including the intercept). Under \( H_0 \) (correct specification), this statistic follows an F-distribution:

\[ F \;\sim\; F_{q,\, n-k_u} \quad \text{under } H_0 \]

Intuitively: if the linear specification really is adequate, the fitted values already summarize everything useful about the predictors, so their squares and cubes shouldn't explain any additional variation in \( y \)-\( SSR_u \) should be barely smaller than \( SSR_r \), and \( F \) should be small. If nonlinearity is missing from the model, the power terms act as a flexible proxy for that missing curvature, meaningfully reducing \( SSR_u \) and inflating \( F \).

An F-test comparing nested models. Unlike the Breusch-Pagan Test, which is a Score (Lagrange Multiplier) Test needing only the restricted model, RESET is a classic nested F-test: it genuinely fits both the restricted and the unrestricted model and compares how much the fit improves.

Choosing the Powers to Include

Ramsey's original 1969 formulation and most modern software default to adding the square and cube of the fitted values (\( \hat{y}_i^2 \) and \( \hat{y}_i^3 \)), giving \( q = 2 \) and an \( F_{2, n-k_u} \) reference distribution. This is usually enough to catch common forms of neglected curvature without adding excessive degrees of freedom.

  • Using only the square (\( \hat{y}_i^2 \)): a lighter version with \( q = 1 \), useful in small samples where degrees of freedom are tight, but it can miss cubic-shaped nonlinearity.
  • Using square, cube, and higher powers: adds flexibility to detect more exotic nonlinear shapes, but consumes more degrees of freedom and can suffer from multicollinearity between the power terms in small samples.
  • Powers of the original regressors instead of fitted values: some implementations offer an alternative "exog" form that adds powers of the original predictors themselves rather than the fitted values-useful when you want to test a specific predictor's functional form directly rather than the model's overall fit.
In practice, the default (square and cube of fitted values) is a safe first choice. It is what statsmodels' linear_reset uses out of the box, and it balances sensitivity to common nonlinear patterns against the cost of extra degrees of freedom.

Worked Example 1: A Small Numerical Example by Hand

Suppose a simple regression of \( y \) on a single predictor \( x \) for 8 observations produces the following data. The true relationship is actually quadratic (the outcome accelerates as \( x \) grows), but only a straight line has been fitted:

Observation\( x_i \)\( y_i \)
116.2
229.5
3317.5
4422.9
5532.4
6640.4
7753.2
8863.9

Step 1: Fit the restricted model (\( y \) on \( x \) only)

Ordinary least squares on \( y_i = \beta_0 + \beta_1 x_i + \varepsilon_i \) gives:

\[ \hat{\beta}_0 \approx -6.782, \qquad \hat{\beta}_1 \approx 8.341, \qquad SSR_r \approx 68.551 \]

Step 2: Build the augmented model with \( \hat{y}_i^2 \) and \( \hat{y}_i^3 \)

Using the restricted model's fitted values \( \hat{y}_i = -6.782 + 8.341 x_i \), fit the augmented model:

\[ y_i = \beta_0 + \beta_1 x_i + \gamma_1 \hat{y}_i^2 + \gamma_2 \hat{y}_i^3 + \varepsilon_i \]

Step 3: Compute the augmented model's residual sum of squares

Fitting this augmented regression by least squares yields:

\[ SSR_u \approx 5.113 \]

Step 4: Compute the RESET F-statistic

With \( n = 8 \), \( q = 2 \) power terms added, and \( k_u = 4 \) total parameters in the augmented model (so \( n - k_u = 4 \) denominator degrees of freedom):

\[ F = \frac{(68.551 - 5.113) / 2}{5.113 / 4} = \frac{31.719}{1.278} \approx 24.81 \]

Step 5: Compare against the critical value

With \( (q, n-k_u) = (2, 4) \) degrees of freedom, the critical value at \( \alpha = 0.05 \) is \( F_{2,4,0.05} \approx 6.944 \). Since \( F \approx 24.81 > 6.944 \) (p-value \( \approx 0.0056 \)), we reject \( H_0 \): the model has neglected nonlinearity-consistent with how the data was generated, where the true relationship included a real quadratic term the straight-line model never captured.

Worked Example 2: Wage Regression in Python

A more realistic case involves multiple predictors, where hand-computing the augmented regression becomes impractical. An analyst regresses hourly wage on years of experience and years of education for 60 workers, suspecting that returns to experience might not be perfectly linear.

import numpy as np
import statsmodels.api as sm
from statsmodels.stats.diagnostic import linear_reset

np.random.seed(3)
n = 60
experience = np.random.uniform(0, 30, n)
education = np.random.uniform(8, 20, n)

# True relationship: wage rises with experience but bends downward (diminishing returns)
wage = 15 + 1.8*education + 3.2*experience - 0.09*experience**2 + np.random.normal(0, 2.0, n)

# Model 1: omits experience^2 (misspecified)
X = sm.add_constant(np.column_stack([experience, education]))
model = sm.OLS(wage, X).fit()

reset_result = linear_reset(model, power=3, test_type='fitted', use_f=True)
print(f"F statistic: {reset_result.statistic:.3f}")
print(f"p-value: {reset_result.pvalue:.6f}")
print(f"df: ({reset_result.df_num:.0f}, {reset_result.df_denom:.0f})")

Output:

F statistic: 18.043
p-value: 0.000001
df: (2, 55)

The p-value is far below \( 0.05 \), giving strong evidence that the model omitted in this example on purpose is missing systematic nonlinearity-exactly as expected, since the wage-generating process included a genuine \( experience^2 \) term the fitted model never saw.

Confirming the Fix Resolves It

Adding the missing \( experience^2 \) term and re-running the test on the corrected model should no longer find evidence of neglected nonlinearity:

# Model 2: includes experience^2 (correctly specified)
X2 = sm.add_constant(np.column_stack([experience, experience**2, education]))
model2 = sm.OLS(wage, X2).fit()

reset_result2 = linear_reset(model2, power=3, test_type='fitted', use_f=True)
print(f"F statistic: {reset_result2.statistic:.3f}")
print(f"p-value: {reset_result2.pvalue:.4f}")
print(f"df: ({reset_result2.df_num:.0f}, {reset_result2.df_denom:.0f})")

Output:

F statistic: 0.845
p-value: 0.4351
df: (2, 54)

With \( experience^2 \) included, the RESET F-statistic drops sharply and the p-value rises to \( 0.4351 \)-comfortably above \( 0.05 \), so we fail to reject \( H_0 \). This side-by-side comparison is exactly the pattern RESET is meant to reveal: a clear reject when curvature is missing, and a clean pass once the right term is added back in.

How to Interpret Results

The significance level \( \alpha = 0.05 \) is the standard threshold used to decide whether functional-form misspecification is "statistically detected."

ConditionInterpretation
\( p < 0.05 \)Reject \( H_0 \)-the model is likely missing systematic nonlinearity; the functional form should be reconsidered.
\( p \geq 0.05 \)Fail to reject \( H_0 \)-not enough evidence of neglected nonlinearity; the linear functional form remains a reasonable choice.
Note. Unlike heteroskedasticity, which leaves OLS coefficients unbiased even when detected, a genuine functional-form misspecification can bias the coefficient estimates themselves, not just the standard errors-which is why a significant RESET result deserves attention to the model specification, not just a switch to robust standard errors. See What to Do If Misspecification Is Detected.

Checking Assumptions in Practice

  • Plot residuals against fitted values and against each predictor: a curved pattern in a scatterplot of \( e_i \) versus \( x_i \) often reveals neglected nonlinearity visually before running any formal test-Worked Example 1 above would show this pattern clearly.
  • Check for heteroskedasticity separately: since variance problems and specification problems can produce overlapping symptoms, pair a RESET result with a Breusch-Pagan or White's Test to get the full picture.
  • Consider robust standard errors for the RESET F-test itself: if heteroskedasticity is also suspected, use a robust covariance type (e.g., HC3) when running RESET, since the classical F-test assumes homoskedastic errors.
  • Try the default power choice first: squares and cubes of the fitted values catch most common nonlinear patterns-see Choosing the Powers to Include before reaching for a more elaborate specification.
  • Sample size: the F-test is exact under normal errors, but with very small samples the test has limited power to detect subtle misspecification-a non-significant result in a tiny sample is weaker evidence of correct specification than the same result in a large one.

What to Do If Misspecification Is Detected

  • Add polynomial terms: if a predictor is suspected of a nonlinear relationship, add its square (or cube) directly to the model, as shown in the Python Example-often the simplest and most interpretable fix.
  • Transform the outcome or predictors: a log transform of the outcome (or a predictor) can capture diminishing-returns relationships more naturally than adding polynomial terms, especially for money- or count-based variables.
  • Add interaction terms: if the neglected nonlinearity comes from how two predictors jointly affect the outcome rather than either one alone, an interaction term (\( x_1 \times x_2 \)) may resolve it.
  • Consider a fundamentally different functional form: if polynomial terms and transformations don't resolve the problem, a genuinely nonlinear model (e.g., a spline, a log-linear model, or a nonparametric approach) may be more appropriate than continuing to force a linear specification.
  • Re-run RESET after each change: as shown in Worked Example 2, re-testing after adding a candidate term is the most direct way to confirm the fix actually resolved the flagged misspecification.

Advantages

  • General-purpose: does not require the analyst to specify in advance which predictor or which functional form is misspecified-the fitted-value powers act as a flexible catch-all proxy.
  • Directly targets a different and important assumption-functional form-than variance-focused tests like Breusch-Pagan or White's Test, making it a useful complement to them.
  • Simple to compute and widely implemented-just one extra regression using quantities already available after any regression fit.
  • The exact F-distribution reference makes it well suited to small-to-moderate sample sizes, unlike asymptotic chi-square-based tests.
  • Easy to re-run after adding a candidate fix, providing a direct before-and-after check that the misspecification has actually been resolved, as shown in Worked Example 2.

Limitations

  • Does not identify which predictor, power, or interaction is responsible for a significant result-only that some form of neglected nonlinearity exists.
  • The classical F-test version assumes homoskedastic errors-pair with a robust covariance option, or run a variance test alongside it, when heteroskedasticity is also suspected.
  • Relies on powers of the fitted values as a proxy for missing nonlinearity, which works well in most cases but is not mathematically guaranteed to catch every possible specification error.
  • Like other specification tests, a significant result does not by itself say how to fix the model-only that the current functional form should be reconsidered; see What to Do If Misspecification Is Detected.
  • Power to detect subtle misspecification can be limited in very small samples, where a non-significant result should be interpreted cautiously rather than as strong confirmation of correct specification.

When NOT to Use It

  • Breusch-Pagan Test or White's Test: use instead when the concern is specifically about non-constant residual variance rather than the functional form of the mean relationship.
  • Durbin-Watson Test: use instead when the concern is serial correlation between consecutive residuals in ordered (typically time-series) data, not curvature in the relationship.
  • Theory strongly dictates the functional form: if domain knowledge already specifies the correct functional form (e.g., a known physical law), a significant RESET result may call for revisiting the data or model implementation rather than adding ad hoc polynomial terms.
  • You already suspect a specific nonlinear term: if you already have a strong candidate (e.g., you know experience should be squared), it can be more direct to simply add that term and compare model fit statistics, rather than running a general-purpose RESET check first.

RESET vs Breusch-Pagan vs White

17.1 Ramsey RESET Test vs Breusch-Pagan Test

AspectRamsey RESET TestBreusch-Pagan Test
What it checksFunctional form of the mean relationship (missing curvature)Constant variance of the residuals (heteroskedasticity)
Augmented/auxiliary regressorsPowers of the fitted values (typically squared and cubed)Original predictors regressed against squared residuals
Test statisticF-test comparing nested models (\( SSR_r \) vs \( SSR_u \))Chi-square (\( LM = nR^2 \))
If coefficients are affectedCan bias coefficients if misspecification is realCoefficients remain unbiased; only standard errors are affected

17.2 Ramsey RESET Test vs White's Test

AspectRamsey RESET TestWhite's Test
Primary targetNeglected nonlinearity in the mean functionNon-constant residual variance, including nonlinear patterns
OverlapCan occasionally flag heteroskedasticity-driven patterns tooCan occasionally flag some functional-form misspecification too
Regressors usedPowers of fitted values only (compact, 2 extra terms by default)Original predictors, their squares, and cross-products (grows quickly)
Best usedAlongside a variance test, not as a substitute for oneAlongside a specification test, not as a substitute for one

17.3 Ramsey RESET Test vs Durbin-Watson Test

AspectRamsey RESET TestDurbin-Watson Test
What it detectsNeglected nonlinearity / functional-form misspecificationSerial correlation between consecutive residuals (autocorrelation)
Requires ordered dataNoYes-observations must be in a meaningful sequence
Typical remedy if significantAdd polynomial/interaction terms, transform variables, or change functional formHAC standard errors, GLS, or an explicit time-series model

Common Misconceptions

  • "The Ramsey RESET Test tells you exactly which term is missing." Not true-it only signals that some systematic nonlinearity has been neglected somewhere; identifying the specific fix requires further investigation, as discussed in Limitations.
  • "A significant RESET result always means heteroskedasticity is present." Not necessarily-RESET targets the functional form of the mean relationship, a different assumption from constant variance; see RESET vs Breusch-Pagan vs White for how the two can overlap without being the same problem.
  • "A high R-squared means the functional form must be correct." Not true-a model can fit reasonably well overall while still being systematically wrong in its curvature, which is exactly the gap RESET is built to expose, as shown in Worked Example 1.
  • "A non-significant RESET result proves the model is perfectly specified." Failing to reject \( H_0 \) only means there was not enough evidence of neglected nonlinearity of the type RESET can detect with this sample-it does not prove the specification is exactly correct.
  • "RESET can tell you whether to drop a predictor." It cannot-RESET is about missing curvature or interaction terms, not about whether an existing predictor belongs in the model; that question is better addressed with t-tests on individual coefficients or a nested F-test comparing models with and without that predictor.

Interview Questions

  1. Describe the four steps of the Ramsey RESET procedure, from the restricted model to the final F-statistic.
  2. Why does the RESET Test use powers of the fitted values rather than powers of the original predictors directly, in its standard form?
  3. Explain why the Ramsey RESET Test is a nested F-test rather than a Score (Lagrange Multiplier) Test like Breusch-Pagan.
  4. What is the difference in interpretation between a significant RESET result and a significant Breusch-Pagan result?
  5. Does functional-form misspecification bias the OLS coefficient estimates, the standard errors, or both? How does this differ from heteroskedasticity?
  6. How would you decide how many powers of the fitted values to include in the augmented regression, and what trade-off does that choice involve?
  7. If a RESET Test is significant, what practical remedies would you consider, and how would you choose between them?
  8. Why might a significant RESET result not immediately tell you which predictor's functional form is wrong?
  9. Compare the Ramsey RESET Test to White's Test-when might both tests be significant on the same model, and why?
  10. After adding a candidate polynomial term to fix a significant RESET result, how would you confirm the fix actually resolved the issue?

Frequently Asked Questions

  • The Ramsey RESET Test (Regression Equation Specification Error Test) checks whether a fitted regression model has neglected some systematic nonlinearity-for example, whether wage prediction should really include a squared experience term, or whether house price should be modeled with a curved rather than a straight-line relationship to square footage.
  • Fit the original regression and obtain its fitted values y-hat. Construct an augmented model that adds powers of those fitted values-typically the square and cube-as additional regressors, then refit. The test statistic is an F-test comparing the residual sum of squares of the original model against the augmented model, with numerator degrees of freedom equal to the number of power terms added and denominator degrees of freedom equal to the residual degrees of freedom of the augmented model.
  • If the p-value is below your chosen significance level (commonly alpha = 0.05), you reject the null hypothesis of correct specification and conclude the model is missing systematic nonlinearity-the added power terms explain a meaningful amount of extra variation. If the p-value is at or above alpha, there is not enough evidence of neglected nonlinearity, and the current functional form is a reasonable choice to keep.
  • The Breusch-Pagan Test and White's Test check whether the variance of the residuals is constant across observations-a heteroskedasticity problem. The Ramsey RESET Test checks something different: whether the mean function itself, the regression equation, is missing curvature or interaction terms it should include-a functional-form misspecification problem. A model can pass one test and fail the other, since they target different assumptions.
  • No-the test only signals that some form of neglected nonlinearity exists somewhere in the specification; it does not identify which specific predictor, which power, or which interaction is responsible. Pinpointing the fix usually requires further steps, such as plotting residuals against each predictor individually, trying theory-motivated transformations, or testing candidate polynomial terms one at a time.
  • Common remedies include adding polynomial terms (squares or cubes) of predictors suspected of a nonlinear relationship, applying a transformation such as a log or square root to the outcome or predictors, adding interaction terms between predictors, or considering a fundamentally different functional form, such as a log-linear or genuinely nonlinear model, if polynomial terms alone do not resolve the problem.
  • Yes-because omitted nonlinearity and heteroskedasticity can produce overlapping symptoms in a residual plot, a significant RESET result does not automatically rule out a variance problem, and a significant Breusch-Pagan or White result does not automatically rule out a specification problem. Running both types of test, and inspecting residual plots directly, gives a clearer picture than relying on either test alone.

Key Takeaways

  • The Ramsey RESET Test checks whether a regression's functional form is missing systematic nonlinearity, not whether its residual variance is constant.
  • It works by adding powers of the fitted values (typically squared and cubed) as extra regressors and testing whether they meaningfully reduce the residual sum of squares, using an \( F_{q,\, n-k_u} \) test.
  • Unlike heteroskedasticity, a genuine functional-form problem can bias the coefficient estimates themselves, not just the standard errors-making a significant RESET result worth addressing directly rather than just switching to robust standard errors.
  • RESET does not identify which term is missing-only that something systematic has been neglected; see Limitations for what the test can and cannot tell you.
  • In Python, statsmodels' linear_reset computes the test directly from a fitted OLS model in a single line, and re-running it after adding a candidate fix is a direct way to confirm the misspecification has been resolved, as shown in Worked Example 2.
  • If misspecification is detected, the most common fixes are adding polynomial or interaction terms, transforming variables, or reconsidering the functional form entirely, as outlined in What to Do If Misspecification Is Detected.
  • RESET complements, rather than replaces, variance-focused tests like Breusch-Pagan and White's Test-running both gives a fuller picture of a regression's health.

The Ramsey RESET Test fills a gap that variance-focused diagnostics like Breusch-Pagan and White's Test don't cover: whether the regression's functional form itself-the shape of the relationship between the predictors and the outcome-has been correctly specified. Because a well-fitting R-squared can coexist with systematically missing curvature, RESET's simple trick of feeding the model's own fitted values back in as extra regressors offers a fast, general-purpose way to catch that problem before it quietly biases a model's coefficients and predictions.

The two worked examples above showed the same underlying pattern from two angles: a small, hand-calculated case where a genuinely quadratic relationship was fitted with a straight line, and a wage regression where the same neglected-experience-squared problem showed up clearly in statsmodels' output-and disappeared once the missing term was added back in. Reporting the RESET statistic alongside residual plots against each predictor, and treating a significant result as a prompt to reconsider the functional form rather than just the standard errors, gives a reliable foundation for trusting a regression's coefficients and predictions.