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

    %% Convergence of AR Forecasts  
% This example shows how to forecast a stationary AR(12) process using |forecast|.
% Evaluate the asymptotic convergence of the forecasts, and compare forecasts
% made with and without using presample data.   

% Copyright 2015 The MathWorks, Inc.


%% Step 1. Specify an AR(12) model. 
% Specify the model 
%
% $${y_t} = 3 + 0.7{y_{t - 1}} + 0.25{y_{t - 12}} + {\varepsilon _t},$$
%
% where the innovations are Gaussian with variance 2. Generate a realization
% of length 300 from the process. Discard the first 250 observations as
% burn-in. 
model = arima('Constant',3,'AR',{0.7,0.25},'ARLags',[1,12],...
              'Variance',2);

rng('default')
Y = simulate(model,300);
Y = Y(251:300);

figure
plot(Y)
xlim([0,50])
title('Simulated AR(12) Process')     

%% Step 2. Forecast the process using presample data. 
% Generate forecasts (and forecast errors) for a 150-step time horizon.
% Use the simulated series as presample data. 
[Yf,YMSE] = forecast(model,150,'Y0',Y);
upper = Yf + 1.96*sqrt(YMSE);
lower = Yf - 1.96*sqrt(YMSE);

figure
plot(Y,'Color',[.75,.75,.75])
hold on
plot(51:200,Yf,'r','LineWidth',2)
plot(51:200,[upper,lower],'k--','LineWidth',1.5)
xlim([0,200])
hold off    

%%
% The MMSE forecast sinusoidally decays, and begins converging to the unconditional
% mean, given by 
%
% $$\mu  = \frac{c}{{\left( {1 - {\phi _1} - {\phi _{12}}} \right)}} = \frac{3}{{(1 - 0.7 - 0.25)}} = 60.$$
%
%% Step 3. Calculate the asymptotic variance. 
% The MSE of the process converges to the unconditional variance of the
% process ($\sigma _\varepsilon ^2 = 2$). You can
% calculate the variance using the impulse response function. The impulse
% response function is based on the infinite-degree MA representation of
% the AR(2) process. 
%
% The last few values of |YMSE| show the convergence toward the unconditional
% variance. 
ARpol = LagOp({1,-.7,-.25},'Lags',[0,1,12]);
IRF = cell2mat(toCellArray(1/ARpol));
sig2e = 2;

variance = sum(IRF.^2)*sig2e % Display the variance
YMSE(145:end) % Display the forecast MSEs 

%%
% Convergence is not reached within 150 steps, but the forecast MSE is approaching
% the theoretical unconditional variance.  

%% Step 4. Forecast without using presample data. 
% Repeat the forecasting without using any presample data. 
[Yf2,YMSE2] = forecast(model,150);
upper2 = Yf2 + 1.96*sqrt(YMSE2);
lower2 = Yf2 - 1.96*sqrt(YMSE2);

YMSE2(145:end) % Display the forecast MSEs

figure
plot(Y,'Color',[.75,.75,.75])
hold on
plot(51:200,Yf2,'r','LineWidth',2)
plot(51:200,[upper2,lower2],'k--','LineWidth',1.5)
xlim([0,200])
hold off    

%%
% The convergence of the forecast MSE is the same without using presample
% data. However, all MMSE forecasts are the unconditional mean. This is
% because |forecast| initializes the AR model with the unconditional mean
% when you do not provide presample data.