www.gusucode.com > econ 案例源码程序 matlab代码 > econ/TestForStructuralBreakInVolatility1Example.m

    %% Test for Structural Break in Volatility
% Check whether a cusum of squares test can detect a structural break in
% volatility in simulated data.
%%
% Simulate a series of data from this regression model
%
% $$\left\{ {\begin{array}{*{20}{c}}
% {{y_t} = \left[ {\begin{array}{*{20}{c}}
% 1&2&3
% \end{array}} \right]{x_t} + {\varepsilon _{1t}};\;t = 1,...,50}\\
% {{y_t} = \left[ {\begin{array}{*{20}{c}}
% 1&2&3
% \end{array}} \right]{x_t} + {\varepsilon _{2t}};t = 51,...,100}
% \end{array}} \right..$$
% 
% $x_t$ is a series of observations from three standard Gaussian predictor
% variables. $\varepsilon_{1t}$ and $\varepsilon_{2t}$ are series of
% Gaussian innovations both with mean 0 and standard deviation 0.1 and 0.2,
% respectively.
rng(1); % For reproducibility
T = 100;
X = randn(T,3);
sigma1 = 0.1;
sigma2 = 0.2;
e = [sigma1*randn(T/2,1); sigma2*randn(T/2,1)];
b = (1:3)';
y = X*b + e;
%%
% Conduct a cusum of squares test using a 5% level of significance. Plot
% the test statistics and critical region bands.  Indicate that there is no
% model intercept.  Request to return whether the test statistics cross into
% critical region at each iteration.
[~,H] = cusumtest(X,y,'Test','cusumsq','Plot','on',...
    'Direction',{'forward','backward'},'Display','off','Intercept',false);
%%
% Because the test statistics cross the critical lines at least once for
% both tests, the tests reject the null hypothesis of constant volatility
% at 5% level.  The test statistics change direction around iteration 50,
% which is consistent with the simulated break in volatility in the data.
%%
% |H| is a 2-by-97 logical matrix containing the sequence of decisions for
% each iteration of each cusum of squares test. The first row corresponds to the
% forward cusum of squares test, and the second row corresponds to the
% backward cusum of squares test.
%%
% For the forward test, determine the iterations that result in the test
% statistics crossing the critical line.
bp = find(H(1,:) == 1)