www.gusucode.com > econ 案例源码程序 matlab代码 > econ/AssessModelStabilityUsingRollingWindowAnalysisExample.m
%% Assess Model Stability Using Rolling Window Analysis % This example shows how to use a rolling window to check whether the % parameters of a time-series model are time invariant. This example % analyzes two time series: % % * Time-series 1: simulated data from a known, time-invariant model % * Time-series 2: simulated data from a known, time-varying model % %% % Completely specify this AR(1) model for Time-series 1: % % $$y_t = 0.6 y_{t-1} + \varepsilon_t$$ % % where $\varepsilon_t$ is Gaussian with mean 0 and variance 1. Completely % specify this time-varying model for Time-series 2: % % $$\begin{array}{*{20}{c}} % {{y_t} = 0.2{y_{t - 1}} + {\varepsilon _t}{\rm{; }}t = 1,...,100}\\ % {{y_t} = 0.75{y_{t - 1}} + {\varepsilon _t}{\rm{; }}t = 101,...,150}\\ % {{y_t} = - 0.5{y_{t - 1}} + {\varepsilon _t}{\rm{; }}t = 151,...,200}, % \end{array}$$ % % where $\varepsilon_t$ is Gaussian with mean 0 and variance 1. % Copyright 2015 The MathWorks, Inc. Mdl1 = arima('AR',0.6,'Constant',0,'Variance',1); Mdl2 = cell(3,1); % Preallocate ARMdl2 = [0.2 0.75 -0.5]; for j = 1:3; Mdl2{j} = arima('AR',ARMdl2(j),'Constant',0,'Variance',1); end %% % |Mdl1| is an |arima| model objects. You can access its % properties using dot notation. |Mdl2| is a cell array of |arima| model % objects. You can you cell indexing and dot notation to access properties % of the models within |Mdl2|. For example, to access the AR parameter % value of the third model in |Mdl3|, enter |Mdl2{3}.AR|. %% % Simulate |T| = 200 periods of data from |Mdl1| and |Mdl2|. Use a presample % response of 0 for both series. rng(1); % For reproducibility T = 200; y1 = simulate(Mdl1,T,'Y0',0); timeMdl2 = [100 50 50]; % Number of observations per model in Mdl2 y2 = 0; for k = 1:numel(Mdl2); y2 = [y2; simulate(Mdl2{k},timeMdl2(k),'Y0',y2(end))]; end Y = [y1 y2(2:end)]; %% % Specify empty AR(1) models for the estimation of |Mdl1|, |Mdl2|, and % |Mdl3|. Estimate all three models using the respective data sets and a % rolling window size of 40 periods. Also, use a rolling window increment % of one period. Store the autoregressive parameters and estimated % innovations variance. ToEstMdl = arima('ARLags',1,'Constant',0); m = 100; % Rolling window size N = T - m + 1; % Number of rolling windows EstParams = cell(2,1); % Preallocate for estimates EstParamsMat = zeros(N,2); EstParamsSE = cell(2,1); EstParamsSEMat = zeros(N,2); for j = 1:2; for k = 1:N; idxRW = k:(m + k - 1); % In-sample indices [EstMdl,EstParamCov] = estimate(ToEstMdl,Y(idxRW,j),'Display','off'); EstParamsMat(k,:) = [EstMdl.AR{1} EstMdl.Variance]; EstParamsSEMat(k,:) = sqrt([EstParamCov(2,2) EstParamCov(3,3)]); end EstParams{j} = EstParamsMat; EstParamsSE{j} = EstParamsSEMat; end %% % Plot the estimates and their point-wise confidence intervals over the rolling window index. titleMdls = {'Mdl1','Mdl2'}; for j = 1:2; figure; subplot(2,1,1); Estimates = EstParams{j}; SEs = EstParamsSE{j}; plot(Estimates(:,1),'LineWidth',2); hold on; plot(Estimates(:,1) + 2*SEs(:,1),'r:','LineWidth',2); plot(Estimates(:,1) - 2*SEs(:,1),'r:','LineWidth',2); title(sprintf('%s - AR at Lag 1 Estimate',titleMdls{j})); xlabel 'Rolling window index'; axis tight; hold off; subplot(2,1,2); plot(Estimates(:,2),'LineWidth',2); hold on; plot(Estimates (:,2) + 2*SEs(:,2),'r:','LineWidth',2); plot(Estimates(:,2) - 2*SEs(:,2),'r:','LineWidth',2); title(sprintf('%s - Variance Estimate',titleMdls{j})); xlabel 'Rolling window index'; axis tight; hold off; end %% % For |Mdl1|, the AR estimate does not vary much from 0.6, and the % estimates are not significantly different from one another (pair-wise). % Similar results occur for the variance of |Mdl1|. The AR estimate of % |Mdl2| grows, and then falls, which indicates time dependence. Also, % based on the confidence intervals, there is evidence that some % estimates differ from others. Though the variance did not change % during simulation, there seems to be heteroscedasticity possibly induced % by the instability of the model.