chowtest

Syntax

Description

Chow tests assess the stability of coefficients β in
a multiple linear regression model of the form y = Xβ + ε.
Data are split at specified break points. Coefficients are estimated
in initial subsamples, then tested for compatibility with data in
complementary subsamples.

h = chowtest(___,Name,Value) uses
any of the input arguments in the previous syntaxes and additional
options specified by one or more Name,Value pair
arguments. For example, you can specify which type of Chow test to
conduct or specify whether to include an intercept in the multiple
regression model.

Conduct two break point Chow tests at 5% level of significance. For the first test, set the break point at 1941. Set the break point of the other test at 1948.

bp = find(preWarIdx,1,'last');
h1941 = chowtest([LP LI],LQ,bp)

h1941 = logical
1

h1948 = chowtest([LP LI],LQ,bp + 1)

h1948 = logical
0

h1941 = 1 indicates that there is significant evidence reject the null hypothesis that the coefficients are stable when the break points occur before the war. However, h1948 = 0 indicates that there is not enough evidence to reject coefficient stability if the break point is after the war. This result suggests that the data at 1948 are influential.

Alternatively, you can supply a vector of break points to conduct three Chow tests.

A clear break in food price elasticity exists between subsamples before and after the war. However, income elasticity does not appear to have such a break.

Conduct two Chow tests to determine whether there is statistical evidence to reject model continuity for both regression models. Because there are more observations in the complementary subsample than coefficients, conduct a break point test. Consider the elasticities in the test only. That is, specify 0 or false for the intercept (first coefficient), and 1 or true for elasticity (second coefficient).

The first summary suggests to reject the null hypothesis that price elasticities are equivalent across subsamples at 5% level of significance. The second summary suggests to not reject the null hypothesis that income elasticities are equivalent across subsamples.

Consider a regression model of log consumption onto the logs of price and income. Conduct two break point tests: one that compares price elasticity across subsamples only, and another that compares income elasticity only.

Model Structural Change

Simulate data for a linear model including a structural break in the intercept and one of the predictor coefficients. Then, choose specific coefficients to test for equality across a break point using the Chow test. Adjust parameters to assess the sensitivity of the Chow test.

Specify four predictors, 50 observations, and a break point at period 44 for the simulated linear model.

numPreds = 4;
numObs = 50;
bp = 44;
rng(1); % For reproducibility

Form the predictor data by specifying means for the predictors, and then adding random, standard Gaussian noise to each of the means.

mu = [0 1 2 3];
X = repmat(mu,numObs,1) + randn(numObs,numPreds);

Add a column of ones to the predictor data.

X = [ones(numObs,1) X];

Specify the true values of the regression coefficients and that the intercept and the coefficient of the second predictor jump by 10%.

Specify a 2-by-5 logical matrix that indicates to first test the intercept and second regression coefficient, and then test all other coefficients.

test1 = [true false true false false];
Coeffs = [test1; ~test1]

Coeffs = 2x5 logical array
1 0 1 0 0
0 1 0 1 1

The null hypothesis for the first test (Coeffs(1,:)) is equality of the intercepts and the coefficients of the second predictor across subsamples. The null hypothesis for second test (Coeffs(2,:)) is equality of the first, third, and fourth predictors across subsamples.

Simulate data for the linear model

y=[X100X2][beta1beta2]+innov.

Create innov as a vector of random Gaussian variates with mean zero and standard deviation 0.2.

Tbl — Combined predictor and response datatabular array

The first numPreds columns of Tbl are
the predictor data, and the last column is the response data.

Data Types: table

bp — Break pointspositive integer | vector of positive integers

Break points for the tests, specified as a positive integer
or a vector of positive integers.

Each break point is an index of a specific observation (row)
in the data. The element bp(j) specifies to split
the data into the initial and complementary samples indexed by 1:bp(j) and (bp(j)
+ 1):numObs, respectively.

Data Types: double

Notes

NaNs in the data indicate missing
values. chowtest removes missing values using
list-wise deletion. Removal of rows in the data reduces the effective
sample size and changes the time base of the series.

If bp is a scalar, then the number
of tests, numTests, is the common dimension of
name-value pair argument values. In this case, chowtest uses
the same bp in each test. Otherwise, the length
of bp determines numTests, and chowtest runs
separate tests for each value in bp.

Name-Value Pair Arguments

Specify optional
comma-separated pairs of Name,Value arguments. Name is
the argument name and Value is the corresponding value.
Name must appear inside quotes. You can specify several name and value
pair arguments in any order as
Name1,Value1,...,NameN,ValueN.

Example: 'Intercept',false,'Test','forecast' specifies
to exclude an intercept term from the regression model and to conduct
a forecast test.

Indicate whether to include an intercept when chowtest fits
the regression model, specified as the comma-separated pair consisting
of 'Intercept' and true, false,
or a logical vector of length numTests.

Flags indicating which elements of β to
test for equality, specified as the comma-separated pair consisting
of a logical vector or array. Vector values must be of length numCoeffs.
Array values must be of size numTests-by-numCoeffs.

If 'Intercept' contains mixed logical values:

numCoeffs is numPreds +
1

chowtest ignores values in the
first column of 'Coeffs' for models without an
intercept.

For example, suppose the regression model has three
predictors (numPreds is 3) in a linear model, and
you want to conduct two Chow tests (numTests is
2). Each test includes all regression parameters in the linear model.
Also, you want chowtest to fit an
intercept in the linear model for the first test only. Therefore, Intercept must
be the logical array [1 0]. Because there is at
least one model for which chowtest fits an
intercept, Coeffs must be a 2-by-4 logical array
(numTests is 2 and numCoeffs is numPreds +
1). The elements of Coeffs(:,1) correspond to whether
to test the intercept irrespective of its presence
in the model. Therefore, one way to specify Coeffs is true(2,4).
For the second test, chowtest does not fit
an intercept, and so it ignores the value true in Coeffs(2,1).
Because chowtest ignores Coeffs(2,1), Coeffs = [true(1,4);
false true(1,3)] yields the same result.

The default is true(numTests,numCoeffs),
which tests all of β for all tests.

Nominal significance levels for the tests, specified as the
comma-separated pair consisting of 'Alpha' and
a numeric scalar or vector of length numTests.
All elements of Alpha must be in the interval (0,1).

cValue — Critical values for the testsnumeric scalar | numeric vector

More About

Chow Tests

Chow tests assess the
stability of the coefficients (β) in a multiple
linear regression model of the form y = Xβ + ε.
Chow (1960) introduces two variations: the break point and forecast
tests [1].

The break point test is a standard F test
from the analysis of covariance. The forecast test makes use of the
standard theory of prediction intervals. Chow’s contribution
is to place both tests within the general linear hypothesis framework,
and then to develop appropriate test statistics for testing subsets
of coefficients (see Coeffs). For test-statistic
formulae, see [1].

Tips

Chow tests assume continuity of the innovations variance
across structural changes. Heteroscedasticity can distort the size
and power of the test. You should verify the innovations-variance-continuity
assumption holds before using the test results for inference.

If both subsamples contain more than numCoeffs observations,
then you can conduct a forecast test instead of a break point test.
However, the forecast test might have lower power relative to the
break point test [1]. Nevertheless, Wilson (1978)
suggests conducting the forecast test in the presence of unknown specification
errors .

You can apply the forecast test to cases where both
subsamples have size greater than numCoeffs, where
you would typically apply a breakpoint test. In such cases, the forecast
test might have significantly reduced power relative to a break point
test [1]. Nevertheless, Wilson (1978)
suggests use of the forecast test in the presence of unknown specification
errors [4].

The forecast test is based on the unbiased predictions,
with zero mean error, which result from stable coefficients. However,
zero mean forecast error does not, in general, guarantee coefficient
stability. Thus, forecast tests are most effective in checking for
structural breaks, rather than model continuity [3].

To obtain diagnostic statistics for each subsample,
such as regression coefficient estimates, their standard errors, error
sums of squares, and so on, pass the appropriate data to fitlm. For details on working with LinearModel model objects,
see Multiple Linear Regression (Statistics and Machine Learning Toolbox).

This website uses cookies to improve your user experience, personalize content and ads, and analyze website traffic. By continuing to use this website, you consent to our use of cookies. Please see our Privacy Policy to learn more about cookies and how to change your settings.