www.gusucode.com > econ 案例源码程序 matlab代码 > econ/ForecastaUnitRootNonstationaryProcessUsingMonteCarloSimuExample.m
%% Forecast a Unit Root Nonstationary Process Using Monte Carlo Simulations % Regress the unit root nonstationary, quarterly log GDP onto the CPI using % a regression model with ARIMA(1,1,1) errors with known intercept. Forecast % log GDP using Monte Carlo simulation. %% % Load the US Macroeconomic data set and preprocess the data. load Data_USEconModel; numObs = length(DataTable.GDP); logGDP = log(DataTable.GDP(1:end-15)); cpi = DataTable.CPIAUCSL(1:end-15); T = length(logGDP); frstHzn = T+1:numObs; % Forecast horizon hoCPI = DataTable.CPIAUCSL(frstHzn); % Holdout sample %% % Fit a regression model with ARIMA(1,1,1). The intercept is not identifiable % in a model with integrated errors, so fix its value before estimation. intercept = 5.867; ToEstMdl = regARIMA('ARLags',1,'MALags',1,'D',1,... 'Intercept',intercept); EstMdl = estimate(ToEstMdl,logGDP,'X',cpi); %% % Infer unconditional disturbances. [~,u0] = infer(EstMdl,logGDP,'X',cpi); %% % Simulate 1000 paths with 15 observations each. Use the inferred unconditional % disturbances as presample data. rng(1); % For reproducibility GDPF = simulate(EstMdl,15,'NumPaths',1000,... 'U0',u0,'X',hoCPI); %% % Plot the simulation mean forecast and approximate 95% forecast intervals. lower = prctile(GDPF,2.5,2); upper = prctile(GDPF,97.5,2); mn = mean(GDPF,2); figure plot(dates(end-65:end),log(DataTable.GDP(end-65:end)),'Color',... [.7,.7,.7]) datetick hold on h1 = plot(dates(frstHzn),lower,'r:','LineWidth',2); plot(dates(frstHzn),upper,'r:','LineWidth',2) h2 = plot(dates(frstHzn),mn,'k','LineWidth',2); h = gca; ph = patch([repmat(dates(frstHzn(1)),1,2) repmat(dates(frstHzn(end)),1,2)],... [h.YLim fliplr(h.YLim)],... [0 0 0 0],'b'); ph.FaceAlpha = 0.1; legend([h1 h2],{'95% Interval','Simulation Mean'},'Location','NorthWest',... 'AutoUpdate','off') axis tight title('{\bf log GDP Forecast - 15 Quarter Horizon}') hold off %% % The unconditional disturbances, $u_{t}$, are nonstationary, therefore % the widths of the forecast intervals grow with time.