A regression coefficient describes a relationship in a model. Hypothesis testing asks whether the data are compatible with a specific restriction on that relationship. Structural-break testing asks a further question: can one set of coefficients describe the whole period, or does the relationship change?
Learning goals and conventions
- Test an individual coefficient against zero or another benchmark.
- Test several linear restrictions jointly and connect t² to F.
- Derive the known-break Chow test and its interaction-regression equivalent.
- Interpret a CAPM intercept shift separately from a beta shift.
- Recognize when heteroscedasticity, dependence, nonnormality, or breakpoint selection invalidates a classical reference distribution.
Use n for observations and p for the number of coefficients in one regime, including the intercept. For a CAPM with an intercept and one market factor, p=2. Use q for the number of independent restrictions. A two-regime unrestricted model generally has 2p coefficients; its residual degrees of freedom are n−2p, not n−p.
1. The normal linear model: what exact inference assumes
Write y=Xβ+ε, with X of dimension n×p and full column rank. Conditional on X, assume:
ε∼Nₙ(0,σ²Iₙ), with σ²>0 and n>p.
This means joint Gaussian errors, zero conditional means, one common variance, and no correlation between observations’ errors. Gaussian marginal histograms alone do not establish the joint assumption. For time-series regressors, conditioning on the full design is a substantive assumption, not a consequence of having lagged variables.
OLS gives β̂=(XᵀX)⁻¹Xᵀy, so:
β̂∼Nₚ(β,σ²(XᵀX)⁻¹).
Let e=y−Xβ̂, RSS=eᵀe, and s²=RSS/(n−p). Then E[s²]=σ². Under the normal model, RSS/σ²∼χ²ₙ₋ₚ, independently of β̂. That independence is what makes the exact Student-t and F distributions possible.
The fitting formula does not require normality. Its exact small-sample tests do require these stronger distributional assumptions, or another justified framework.
2. An individual coefficient: zero is only one possible null
For H₀:βⱼ=b₀, define:
SE(β̂ⱼ)=s√[(XᵀX)⁻¹]ⱼⱼ,
tⱼ=(β̂ⱼ−b₀)/SE(β̂ⱼ).
Under H₀, tⱼ has a Student-t distribution with n−p degrees of freedom. For a two-sided alternative, the p-value is 2P(T≥abs(tⱼ)) for T∼tₙ₋ₚ. A one-sided alternative requires a direction specified for the question; do not choose the direction after seeing the sign.
Worked example: is market beta equal to one?
Suppose a CAPM regression uses n=62 observations, p=2 coefficients, and reports β̂=1.12, SE(β̂)=0.08. Testing H₀:β=1 gives:
t=(1.12−1)/0.08=1.5, with 60 degrees of freedom.
Using the approximate 95% critical value t₀.₉₇₅,₆₀≈2.000, the interval is 1.12±2.000×0.08≈[0.96,1.28]. It contains one, so this two-sided test does not reject β=1 at 5%.
Testing β=0 instead would give t=14. The same estimate can strongly reject zero while failing to reject one. The null hypothesis determines the scientific question.
What a coefficient test does not say
Testing βⱼ=0 asks about that coefficient conditional on the other included columns. A predictor represented by several basis terms or factor indicators may require a joint test to exclude the whole effect. With interactions, a main effect is evaluated at the interacting variable’s reference value.
A nonsignificant result does not establish equality or irrelevance; uncertainty can be large. Demonstrating practical equivalence requires a tolerance and an appropriate equivalence procedure. A significant result is not automatically causal, economically large, or profitable after costs. Testing many stocks, factors, and dates also introduces multiple-comparison concerns.
3. Joint restrictions: the general F-test
Write a linear hypothesis as H₀:Rβ=r, where R is q×p with independent rows. This includes setting several coefficients to zero, equating two coefficients, or testing a nonzero benchmark.
Fit the full model to obtain RSS and the constrained model to obtain RSS₀. Since the full model permits every restricted fit, RSS₀≥RSS. Under H₀ and the classical normal model:
F=[(RSS₀−RSS)/q]/[RSS/(n−p)]∼F_q,n−p.
The numerator measures fit lost per imposed restriction. The denominator estimates residual noise using the full model. The equivalent matrix expression is:
F={(Rβ̂−r)ᵀ[R(XᵀX)⁻¹Rᵀ]⁻¹(Rβ̂−r)}/(q s²).
If the restricted model has k free parameters, q=p−k. Count independent estimable restrictions, not merely the number of equations written down.
Worked sub-model comparison
Suppose n=50, the full model has p=5, RSS=90, and a nested restricted model imposes q=2 restrictions with RSS₀=110. Then:
F=[(110−90)/2]/[90/(50−5)]=10/2=5, with 2 and 45 degrees of freedom.
The models must use the same response values, observations, weights, and compatible error assumptions. Comparing a model with missing rows to another using all rows can confound a sample change with a restriction test. Arbitrary non-nested models do not support this RSS F-test.
Why F=t² for one restriction
When q=1, the matrix quadratic form is precisely the squared standardized coefficient contrast. Thus F=t² when the hypothesis, sample, model, and covariance estimate match. The upper-tail F test corresponds to the two-sided t-test; it loses the sign of the effect. Robust Wald versions retain this algebraic square relationship for one contrast, but do not automatically inherit exact classical F or t reference distributions.
4. One model or two regimes? Deriving the Chow test
Split the sample at a fixed, specified date into Period A with n_A observations and Period B with n_B, where n=n_A+n_B. Each period has the same p predictor columns, including its intercept:
y_A=X_Aβ+ε_A; y_B=X_Bγ+ε_B.
The no-break hypothesis is H₀:β=γ, imposing p restrictions. The unrestricted fit uses two regressions, with:
RSS_U=RSS_A+RSS_B, and 2p free parameters.
The restricted fit uses one pooled coefficient vector and yields RSS_P. Therefore:
F_break=[(RSS_P−RSS_U)/p]/[RSS_U/(n−2p)]∼F_p,n−2p under H₀.
This is the classical known-break Chow test. Exact inference requires a common error variance across the periods as well as the normal spherical-error assumptions. Both regime designs must have sufficient observations and full rank. A break in the residual variance alone is different from a break in the conditional mean coefficients.
Worked break calculation
Take n_A=40, n_B=60, and p=2. Suppose RSS_A=42, RSS_B=38, and RSS_P=100. Then:
RSS_U=80; F_break=[(100−80)/2]/[80/(100−4)]=12, with 2 and 96 degrees of freedom.
The calculation tests two restrictions jointly: common intercept and common slope. It does not tell us that both changed individually. An intercept-only shift model or slope-only shift model answers narrower questions with different restriction counts.
5. The same test using dummy variables and interactions
Let Dₜ=0 in Period A and Dₜ=1 in Period B. For a one-factor regression:
yₜ=α+βxₜ+δαDₜ+δβ(Dₜxₜ)+εₜ.
| Coefficient meaning | Period A | Period B |
|---|---|---|
| Intercept | α | α+δα |
| Market slope | β | β+δβ |
This is simply a reparameterization of the two separate regressions. It has four coefficients, and testing δα=δβ=0 reproduces the joint Chow test on the same sample.
The R formula y ~ x * D expands to y ~ x + D + x:D. With numeric D coded 0/1, the dummy estimates the intercept difference and the interaction estimates the slope difference. Omitting D while retaining x:D forces a shared intercept and changes the hypothesis. With more predictors, interacting D with the full predictor set permits all slopes to change.
To estimate Period B’s beta uncertainty, account for covariance:
Var(β̂+δ̂β)=Var(β̂)+Var(δ̂β)+2Cov(β̂,δ̂β).
Adding the two reported standard errors is not the correct calculation. The shift’s t-test tests δβ=0; a test of Period B beta equal to one tests β+δβ=1 instead.
6. R walkthrough with explicitly simulated data
The following example generates synthetic returns rather than downloading GE. Returns use decimal units, dates are monthly, the split is fixed in advance for the simulation, and all fits use the same complete rows. It requires the car and sandwich packages for the sections that name them. No output below is represented as an executed GE result.
set.seed(642)
n <- 84L
d <- data.frame(
date = seq(as.Date("2017-01-01"), by = "month", length.out = n),
market_excess = rnorm(n, mean = 0.005, sd = 0.04)
)
d$periodB <- as.integer(d$date >= as.Date("2019-01-01"))
d$asset_excess <- -0.004 + 0.774 * d$market_excess +
0.008 * d$periodB +
0.354 * d$periodB * d$market_excess +
rnorm(n, mean = 0, sd = 0.025)
d <- d[complete.cases(d), ]
d <- d[order(d$date), ]
stopifnot(all(c(0L, 1L) %in% d$periodB))
pooled <- lm(asset_excess ~ market_excess, data = d)
shift <- lm(asset_excess ~ market_excess * periodB, data = d)
stopifnot(nobs(pooled) == nobs(shift),
shift$rank == ncol(model.matrix(shift)))
# summary() dispatches to summary.lm(): coefficient tests are against zero.
summary(shift)
# A different question: pooled market beta equals one.
car::linearHypothesis(pooled, "market_excess = 1", test = "F")
# Joint intercept-and-slope stability test.
anova(pooled, shift)
R <- matrix(0, nrow = 2, ncol = length(coef(shift)),
dimnames = list(NULL, names(coef(shift))))
R[1, "periodB"] <- 1
R[2, "market_excess:periodB"] <- 1
car::linearHypothesis(shift, R, rhs = c(0, 0), test = "F")
# A slope shift alone is a one-restriction test.
car::linearHypothesis(shift, "market_excess:periodB = 0", test = "F")
# Period B beta and its classical standard error.
contrast <- setNames(rep(0, length(coef(shift))), names(coef(shift)))
contrast[c("market_excess", "market_excess:periodB")] <- 1
beta_B <- sum(contrast * coef(shift))
se_beta_B <- sqrt(drop(t(contrast) %*% vcov(shift) %*% contrast))
c(beta_B = beta_B, standard_error = se_beta_B)
The numbers 0.774 and 0.354 are simulation inputs inspired by the supplied example, not estimates recovered from GE. Random errors mean the fitted values need not equal those inputs. To use actual returns, replace the simulation with a documented, aligned total-return dataset and matched-period risk-free and market series.
With multiple model objects, anova(pooled, shift) compares nested fits. By contrast, anova(shift) produces a sequential term-addition table, which can depend on term order. See the official R ANOVA documentation and car reference manual.
7. The supplied GE case: interpret the claims carefully
The lecture notes describe GE returns over 2017–2023, split into 2017–2018 and 2019–2023, and report:
- A cumulative standardized-residual plot with a negative trend before late December 2018 and a positive trend afterward.
- A joint break-test p-value below 0.0001.
- A negative-to-positive intercept shift.
- Period A beta of 0.774, with a beta shift of 0.354, giving Period B beta 1.128.
These are reported lecture results. The underlying observations, return frequency, exact sample endpoints, factor definitions, data adjustments, and covariance assumptions were not supplied, so the result and p-value have not been independently reproduced here.
The arithmetic 0.774+0.354=1.128 indicates a higher estimated market sensitivity. It does not by itself establish that the beta shift is individually significant; that requires the shift estimate’s uncertainty or its own contrast test. Similarly, a joint rejection of constant parameters does not prove that both alpha and beta changed significantly. An alpha sign change alone is not a significance test.
For replication, document total-return treatment, corporate actions and distributions, stock-series identity, frequency, market proxy, risk-free rate units, and missing-date handling. A modern vendor’s historical GE series need not reproduce an older teaching dataset exactly. Statistical association also does not identify the economic cause of a break.
8. Cumulative residuals: useful evidence, not a free breakpoint
A cumulative residual plot can reveal runs of positive or negative prediction errors that a static fit obscures. With an intercept, full-sample OLS residuals sum to zero, so their cumulative sum returns to zero at the end. This endpoint is an algebraic property, not proof that no instability exists.
Raw standardized-residual cumulative sums are not automatically a calibrated CUSUM test. Recursive-residual, OLS-residual, and other fluctuation tests use different normalizations and reference boundaries. The strucchange authors’ paper describes formal fluctuation tests and sequences of break statistics.
Predetermined versus selected break dates
The exact known-break F reference treats the split as specified rather than selected to maximize evidence in the same data. Inspecting a residual plot, choosing the most striking date, and reporting its ordinary Chow p-value ignores that selection.
When the date is unknown, use a justified procedure such as a sup-F test over a trimmed candidate range, an appropriate multiple-break method, or a bootstrap calibrated to the search and dependence structure. Minimum segment lengths and repeated searches matter. A date chosen for a genuinely external reason answers a different question from one selected after examining returns.
Rejecting stability does not establish a permanent new regime, a precise break date, or a profitable real-time regime-detection rule. A historical split can exploit information unavailable at the time of a trading decision.
9. When classical assumptions fail
Unequal variance across periods
If σ_A²≠σ_B², the ordinary pooled-RSS Chow statistic generally loses its exact F distribution. This does not require replacing every test with a generalized likelihood-ratio test.
One option is a robust Wald test on the interaction regression. For independent observations with suitable moment and design conditions, a heteroscedasticity-consistent covariance estimator addresses unequal error variance. With serial dependence, a suitable HAC estimator may be needed instead. A correctly specified GLS or Gaussian likelihood with regime-specific variances is another approach; a likelihood-ratio test must fit those nuisance variances under both hypotheses and justify its reference law.
Robust Wald formulation
Let V̂ consistently estimate Cov(β̂) in the model being tested. For q restrictions:
W=(Rβ̂−r)ᵀ(RV̂Rᵀ)⁻¹(Rβ̂−r).
Under suitable large-sample conditions and H₀, W→χ²_q in distribution. W/q is sometimes reported against an approximate F law, but that is not the classical exact finite-sample RSS F-test. The covariance estimate must match the actual sampling structure.
# Unequal variance, assuming independence across observations.
V_HC3 <- sandwich::vcovHC(shift, type = "HC3")
car::linearHypothesis(shift, R, rhs = c(0, 0),
vcov. = V_HC3, test = "Chisq")
# Time dependence: data are already sorted by date.
# Automatic bandwidth and prewhitening are modeling choices to inspect.
V_HAC <- sandwich::NeweyWest(shift, lag = NULL,
prewhite = TRUE, adjust = TRUE)
car::linearHypothesis(shift, R, rhs = c(0, 0),
vcov. = V_HAC, test = "Chisq")
The sandwich covariance overview and Newey–West documentation explain these estimators and options. Neither correction repairs endogeneity, omitted predictors, a selected breakpoint, or a misspecified mean model. With a single change in variances, a global HAC calculation still needs conditions supporting its consistency; more complicated nonstationarity can require specialized methods.
Autocorrelated errors: diagnose before interpreting
| Diagnostic | Main use | Qualification |
|---|---|---|
| Residual time plot and ACF | Locate persistence, clusters, or breaks | Visual patterns do not provide calibrated significance by themselves |
| Durbin–Watson | Detect certain first-order serial-correlation patterns | Conventional inference depends on the regression design and is problematic with lagged dependent variables |
| Ljung–Box | Test a group of autocorrelations through a chosen lag | Reference distribution and residual degrees-of-freedom treatment depend on the fitted model |
| Turning-point test | Check local ordering patterns under an independent continuous-series reference | Not a comprehensive test for every form of serial dependence; ties and fitted residuals need care |
The official Box.test documentation notes the p+q degrees-of-freedom adjustment for residuals from an ARMA(p,q) fit. Do not blindly substitute the number of regression coefficients into that rule for every OLS residual sequence. Zero autocorrelations also do not imply general independence, especially with conditional heteroscedasticity.
Nonnormality and large samples
Nonnormal errors do not automatically make OLS biased. With exogeneity, an appropriate central limit theorem, sufficient moments, and stable design, coefficient estimates can be asymptotically normal, and a correctly standardized Wald statistic can be asymptotically chi-square.
Merely having many observations is not enough: heavy tails, dependence, weak identification, unit roots, or structural instability can invalidate an assumed limit. If heteroscedasticity or serial correlation is present, use an appropriate covariance estimator. A robust or model-aware bootstrap can help in some settings but must preserve the relevant structure. Switching the printed distribution label from F to chi-square does not fix a wrong standard error.
10. A practical analysis sequence
- State the null precisely: beta equals zero, beta equals one, no intercept shift, no slope shift, or joint stability.
- Specify the return units, frequency, observation set, regressors, and proposed break date before calculating the test where possible.
- Count parameters and restrictions; verify rank and enough observations within each segment.
- Fit nested models on identical complete rows and inspect coefficient contrasts, not only a joint p-value.
- Diagnose the residual mean, variance, and time dependence. Choose exact or asymptotic inference supported by those assumptions.
- Account for searching across dates or models. Report uncertainty and effect sizes alongside p-values.
- For forecasting, evaluate subsequent data using only information available at each forecast date. A retrospective structural-break test is not itself a prospective trading signal.
11. Practice questions
- With n=80 and an intercept plus three predictors, what are p and the residual degrees of freedom?
- An estimated beta is 0.9 with SE 0.1. What is the t statistic for beta=1? For beta=0?
- A full model has n=40, p=4, and RSS=72. A restricted model imposes q=2 constraints and has RSS₀=92. Find F and its classical degrees of freedom.
- A two-regime CAPM has n=120 total observations. How many unrestricted coefficients and no-break restrictions are there? What are the break test’s degrees of freedom?
- In an interaction model, β̂=0.7 and δ̂β=0.4. What is Period B beta? Can its standard error be found by adding the two coefficient standard errors?
- Does joint rejection of intercept and slope stability imply both shifted individually?
- Can a break date selected from the largest in-sample F statistic use the ordinary single-date F p-value without adjustment?
- Do unequal variances force a likelihood-ratio approach? Does a large sample alone justify chi-square inference?
Answers
- p=4, with 76 residual degrees of freedom.
- −1 against one; 9 against zero.
- F=[20/2]/[72/36]=5, with 2 and 36 degrees of freedom.
- Four unrestricted coefficients and two restrictions; F₂,₁₁₆ under the classical known-break assumptions.
- 1.1. No: the covariance of the two estimates is also needed.
- No. At least one restriction conflicts with the data under the joint test; individual claims require corresponding contrast tests.
- No. The search changes the null distribution and requires an appropriate search-adjusted procedure.
- No to both. Robust Wald tests or justified covariance models are alternatives, and asymptotic inference still requires valid assumptions and covariance estimation.
Further reading
- R: ANOVA for linear models for nested comparisons and identical-sample requirements.
carpackage manual for linear restrictions and supplied covariance matrices.- strucchange: Testing for structural change for fluctuation tests and unknown-break procedures.
A useful conclusion names the tested restriction, its estimated economic size, the assumptions behind the uncertainty calculation, and whether the breakpoint was fixed or discovered in the data.