www.gusucode.com > econ 案例源码程序 matlab代码 > econ/VerifyPredictiveAbilityRobustnessOfARegARIMAModelExample.m
%% Verify Predictive Ability Robustness of a regARIMA Model % This example shows how to forecast a regression model with ARIMA errors, % and how to check the model predictability robustness. %% % Load the Credit Defaults data set, assign the response (|IGD|) to |y| and % the predictors |AGE|, |CPF|, and |SPR| to |X|. For illustration, specify % that the response series is a regression model with AR(1) errors. To % avoid distraction from the purpose of this example, assume that all % predictor series are stationary. % Copyright 2015 The MathWorks, Inc. load Data_CreditDefaults y = Data(:,5); X = Data(:,[1 3:4]); T = size(X,1); % Sample size Mdl = regARIMA(1,0,0); %% % Vary the validation sample size (|m|), and forecast responses from |Mdl| % recursively. That is, for each validation sample size: % % # Fit the model to the data (|EstMdlY|). % # Forecast responses from the estimated model (|yF|). % # Compute the two performance statistics, root mean square error (RMSE) % and root prediction mean square error (RPMSE). m = 4:10; % Validation sample lengths rPMSE = m; % Preallocate rPMSE rMSE = m; % Preallocate rMSE for k = 1:numel(m); yEst = y(1:(T-m(k))); % Response data for estimation yVal = y((T-m(k)+1):T); % Validation sample EstMdlY = estimate(Mdl,yEst,'X',X,'display','off'); yHat = EstMdlY.Intercept + X(1:(T-m(k)),:)*EstMdlY.Beta';... % Estimation sample predicted values [e0,u0] = infer(EstMdlY,yEst,'X',X); yF = forecast(EstMdlY,m(k),'Y0',yEst,... 'X0',X(1:T-m(k),:),'XF',X((T-m(k)+1):T,:));... % Validation sample predicted values rMSE(k) = sqrt(mean((yEst - yHat).^2)); rPMSE(k) = sqrt(mean((yF - yVal).^2)); end %% % |rMSE| and |rPMSE| are vectors that contain the RMSE and RPMSE, % respectively, for each validation sample. %% % Display the performance measures. fprintf('\n m | rMSE | rPMSE\n') fprintf('====================\n') for k = 1:length(m) fprintf('%2d | %0.4f | %0.4f\n',m(k),rMSE(k),rPMSE(k)) end %% % The predictive ability of this model is fairly robust because |rPMSE| % changes slightly for increasing |m|. However, |rMSE| is less than % |rPMSE| for all |m|. This signifies poor predictive ability. %% % Search for a better model by specifying, e.g., more AR or MA lags in the % error model, and compare the PMSEs over these models. Choose the model % with the lowest PMSE for a given validation sample size.