www.gusucode.com > econ 案例源码程序 matlab代码 > econ/SimulateanMAProcessExample.m
%% Simulate an MA Process % This example shows how to simulate sample paths from a stationary MA(12) % process without specifying presample observations. % Copyright 2015 The MathWorks, Inc. %% Step 1. Specify a model. % Specify the MA(12) model % % $${y_t} = 0.5 + {\varepsilon _t} + 0.8{\varepsilon _{t - 1}} + 0.2{\varepsilon _{t - 12}},$$ % % where the innovation distribution is Gaussian with variance 0.2. model = arima('Constant',0.5,'MA',{0.8,0.2},... 'MALags',[1,12],'Variance',0.2); %% Step 2. Generate sample paths. % Generate 200 sample paths, each with 60 observations. rng('default') Y = simulate(model,60,'NumPaths',200); figure plot(Y,'Color',[.85,.85,.85]) hold on h = plot(mean(Y,2),'k','LineWidth',2) legend(h,'Simulation Mean','Location','NorthWest') title('MA(12) Process') hold off %% % For an MA process, the constant term is the unconditional mean. The simulation % mean is around 0.5, as expected. %% Step 3. Plot the simulation variance. % The unconditional variance for the model is % % $$(1 + \theta _1^2 + \theta _{12}^2)\sigma _\varepsilon ^2 = (1 + {0.8^2} + {0.2^2}) \times 0.2 = 0.336.$$ % % Because the model is stationary, the unconditional variance should be % constant across all times. Plot the simulation variance, and compare it % to the theoretical variance. figure plot(var(Y,0,2),'Color',[.75,.75,.75],'LineWidth',1.5) xlim([0,60]) title('Unconditional Variance') hold on plot(1:60,.336*ones(60,1),'k--','LineWidth',2) legend('Simulation','Theoretical',... 'Location','SouthEast') hold off %% % There appears to be a short burn-in period at the beginning of the simulation. % During this time, the simulation variance is lower than expected. Afterwards, % the simulation variance fluctuates around the theoretical variance. %% Step 4. Generate more sample paths. % Simulate 10,000 paths from the model, each with length 1000. Look at the % simulation variance. rng('default') YM = simulate(model,1000,'NumPaths',10000); figure plot(var(YM,0,2),'Color',[.75,.75,.75],'LineWidth',1.5) ylim([0.3,0.36]) title('Unconditional Variance') hold on plot(1:1000,.336*ones(1000,1),'k--','LineWidth',2) legend('Simulation','Theoretical',... 'Location','SouthEast') hold off %% % The Monte Carlo error is reduced when more realizations are generated. % There is much less variability in the simulation variance, which tightly % fluctuates around the theoretical variance.