В этом примере показано, как симулировать демонстрационные пути от стационарного AR (2) процесс, не задавая преддемонстрационные наблюдения.
Создайте модель
Задайте модель AR (2)
где инновационный процесс является Гауссовым с отклонением 0.1.
Mdl = arima('Constant',0.5,'AR',{0.7 0.25},'Variance',.1);
Сгенерируйте один демонстрационный путь
Сгенерируйте один демонстрационный путь (с 50 наблюдениями) из заданной модели и графика.
rng(5)
Y = simulate(Mdl,50);
figure
plot(Y)
xlim([0,50])
title('Simulated AR(2) Process')
Поскольку преддемонстрационные данные не были заданы, simulate
устанавливает два необходимых преддемонстрационных наблюдения, равные безусловному среднему значению процесса
Безусловное отклонение процесса
Вычислите безусловное среднее значение и отклонение процесса.
c = Mdl.Constant; phi = Mdl.AR; sigmaEps2 = Mdl.Variance; mu = c/(1-phi{1}-phi{2})
mu = 10.0000
sigma2 = (1-phi{2})/(1+phi{2})*sigmaEps2/((1-phi{2})^2 - phi{1}^2)
sigma2 = 0.8276
Сгенерируйте много демонстрационных путей
Сгенерируйте 1 000 демонстрационных путей, каждого с 50 наблюдениями.
Y = simulate(Mdl,50,'NumPaths',1000); figure subplot(2,1,1) plot(Y,'Color',[.85,.85,.85]) title('Simulated AR(2) Process') hold on h = plot(mean(Y,2),'k','LineWidth',2); legend(h,'Simulation Mean','Location','NorthWest') hold off subplot(2,1,2) plot(var(Y,0,2),'r','LineWidth',2) title('Process Variance') hold on plot(1:50,sigma2*ones(50,1),'k--','LineWidth',1.5) legend('Simulation','Theoretical',... 'Location','SouthEast') hold off
Среднее значение симуляции является постоянным в зависимости от времени. Это сопоставимо с определением стационарного процесса. Отклонение процесса не является постоянным в зависимости от времени, как бы то ни было. Существуют переходные эффекты в начале симуляции из-за отсутствия преддемонстрационных данных.
Вокруг наблюдения 50, симулированное отклонение приближается к теоретическому отклонению.
Сверхдискретизируйте, чтобы уменьшать переходные эффекты
Чтобы уменьшать переходные эффекты, одна опция должна сверхдискретизировать процесс. Например, чтобы произвести 50 наблюдений, можно сгенерировать пути больше чем с 50 наблюдениями и отбросить все кроме последних 50 наблюдений как выжигание дефектов. Здесь, симулируйте пути длины 150 и отбросьте первые 100 наблюдений.
Y = simulate(Mdl,150,'NumPaths',1000); Y = Y(101:end,:); figure subplot(2,1,1) plot(Y,'Color',[.85,.85,.85]) title('Simulated AR(2) Process') hold on h = plot(mean(Y,2),'k','LineWidth',2); legend(h,'Simulation Mean','Location','NorthWest') hold off subplot(2,1,2) plot(var(Y,0,2),'r','LineWidth',2) xlim([0,50]) title('Process Variance') hold on plot(1:50,sigma2*ones(50,1),'k--','LineWidth',1.5) legend('Simulation','Theoretical',... 'Location','SouthEast') hold off
Реализация теперь похожа, чертит от стационарного стохастического процесса. Отклонение симуляции колеблется (из-за ошибки Монте-Карло) вокруг теоретического отклонения.
В этом примере показано, как симулировать демонстрационные пути от стационарного MA (12) процесс, не задавая преддемонстрационные наблюдения.
Создайте модель
Задайте модель MA (12)
где инновационное распределение является Гауссовым с отклонением 0.2.
Mdl = arima('Constant',0.5,'MA',{0.8,0.2},... 'MALags',[1,12],'Variance',0.2);
Сгенерируйте демонстрационные пути
Сгенерируйте 200 демонстрационных путей, каждого с 60 наблюдениями.
rng(5) Y = simulate(Mdl,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
Для процесса MA постоянный термин является безусловным средним значением. Среднее значение симуляции приблизительно = 0.5.
Постройте отклонение симуляции
Безусловное отклонение процесса
Вычислите безусловное отклонение.
theta = cell2mat(Mdl.MA); sigmaEps2 = Mdl.Variance; sigma2 = (1+sum(theta.^2))*sigmaEps2
sigma2 = 0.3360
Поскольку модель является стационарной, безусловное отклонение должно быть постоянным через все случаи. Постройте отклонение симуляции и сравните его с теоретическим отклонением.
figure plot(var(Y,0,2),'Color',[.75,.75,.75],'LineWidth',1.5) xlim([0,60]) title('Unconditional Variance') hold on plot(1:60,sigma2*ones(60,1),'k--','LineWidth',2) legend('Simulation','Theoretical',... 'Location','SouthEast') hold off
Кажется, существует короткая электротермотренировка в начале симуляции. В это время отклонение симуляции ниже, чем ожидалось. Впоследствии, отклонение симуляции колеблется вокруг теоретического отклонения.
Сгенерируйте много демонстрационных путей
Симулируйте 10 000 путей из модели, каждого с длиной 1000. Постройте отклонение симуляции.
YM = simulate(Mdl,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,sigma2*ones(1000,1),'k--','LineWidth',2) legend('Simulation','Theoretical',... 'Location','SouthEast') hold off
Ошибка Монте-Карло уменьшается, когда больше реализации сгенерировано. В отклонении симуляции существует намного меньше изменчивости, которое плотно колеблется вокруг теоретического отклонения.