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

    %% Forecast Responses of a Regression Model with ARIMA Errors  
% Forecast responses from the following regression model with ARMA(2,1)
% errors over a 30-period horizon: 
%
% $$\begin{array}{*{20}{l}}
% \begin{array}{c}
% {y_t} = {X_t}\left[ {\begin{array}{*{20}{c}}
% {0.1}\\
% { - 0.2}
% \end{array}} \right] + {u_t}\\
% {u_t} = 0.5{u_{t - 1}} - 0.8{u_{t - 2}} + {\varepsilon _t} - 0.5{\varepsilon _{t - 1}},
% \end{array}
% \end{array}$$
%
% where $\varepsilon_{t}$ is Gaussian with variance 0.1.   

% Copyright 2015 The MathWorks, Inc.


%% 
% Specify the model. Simulate responses from the model and two predictor
% series. 
Mdl = regARIMA('Intercept',0,'AR',{0.5 -0.8},...
    'MA',-0.5,'Beta',[0.1 -0.2],'Variance',0.1);
rng(1); % For reproducibility
X =  randn(130,2);
y = simulate(Mdl,130,'X',X);  

%% 
% Fit the model to the first 100 observations, and reserve the remaining
% 30 observations to evaluate forecast performance. 
ToEstMdl = regARIMA('ARLags',1:2);
EstMdl = estimate(ToEstMdl,y(1:100),'X',X(1:100,:));
[yF,yMSE] = forecast(EstMdl,30,'Y0',y(1:100),...
    'X0',X(1:100,:),'XF',X(101:end,:)); 

%%
% |EstMdl| is a new |regARIMA| model containing the estimates. 
% The estimates are close to their true values.  

%% 
% Use |EstMdl| to forecast a 30-period horizon. Visually compare the forecasts
% to the holdout data using a plot. 
[yF,yMSE] = forecast(EstMdl,30,'Y0',y(1:100),...
    'X0',X(1:100,:),'XF',X(101:end,:));

figure
plot(y,'Color',[.7,.7,.7]);
hold on
plot(101:130,yF,'b','LineWidth',2);
plot(101:130,yF+1.96*sqrt(yMSE),'r:',...
		'LineWidth',2);
plot(101:130,yF-1.96*sqrt(yMSE),'r:','LineWidth',2);
h = gca;
ph = patch([repmat(101,1,2) repmat(130,1,2)],...
        [h.YLim fliplr(h.YLim)],...
        [0 0 0 0],'b');
ph.FaceAlpha = 0.1;
legend('Observed','Forecast',...
		'95% Forecast Interval','Location','Best');
title(['30-Period Forecasts and Approximate 95% '...
			'Forecast Intervals'])
axis tight
hold off    

%%
% Many observations in the holdout sample fall beyond the 95% forecast intervals.
% Two reasons for this are: 
%  
% * The predictors are randomly generated in this example. |estimate| treats
% the predictors as fixed. Subsequently, the 95% forecast intervals based
% on the estimates from |estimate| do not account for the variability in
% the predictors.  
% * By shear chance, the estimation period seems less volatile than the
% forecast period. |estimate| uses the less volatile estimation period data
% to estimate the parameters. Therefore, forecast intervals based on the
% estimates should not cover observations that have an underlying innovations
% process with larger variability.