В этом примере показано, как симулировать демонстрационные пути от стационарного AR (2) процесс, не задавая преддемонстрационные наблюдения.
Шаг 1. Задайте модель.
Задайте модель AR (2)
где инновационный процесс является Гауссовым с отклонением 0.1.
model = arima('Constant',0.5,'AR',{0.7,0.25},'Variance',.1);
Шаг 2. Сгенерируйте один демонстрационный путь.
Сгенерируйте один демонстрационный путь (с 50 наблюдениями) из заданной модели и графика.
rng('default') Y = simulate(model,50); figure plot(Y) xlim([0,50]) title('Simulated AR(2) Process')
Поскольку преддемонстрационные данные не были заданы, simulate
устанавливает два необходимых преддемонстрационных наблюдения, равные безусловному среднему значению процесса,
Шаг 3. Сгенерируйте много демонстрационных путей.
Сгенерируйте 1 000 демонстрационных путей, каждого с 50 наблюдениями.
rng('default') Y = simulate(model,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,.83*ones(50,1),'k--','LineWidth',1.5) legend('Simulation','Theoretical',... 'Location','SouthEast') hold off
Среднее значение симуляции является постоянным в зависимости от времени. Это сопоставимо с определением стационарного процесса. Отклонение процесса не является постоянным в зависимости от времени, как бы то ни было. Существуют переходные эффекты в начале симуляции из-за отсутствия преддемонстрационных данных.
Симулированное отклонение приближается к теоретическому отклонению,
приблизительно 50-м наблюдением.
Шаг 4. Сверхдискретизируйте процесс.
Чтобы уменьшать переходные эффекты, одна опция должна сверхдискретизировать процесс. Например, чтобы произвести 50 наблюдений, можно сгенерировать пути больше чем с 50 наблюдениями и отбросить все кроме последних 50 наблюдений как выжигание дефектов. Здесь, симулируйте пути длины 150 и отбросьте первые 100 наблюдений.
rng('default') Y = simulate(model,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,.83*ones(50,1),'k--','LineWidth',1.5) legend('Simulation','Theoretical',... 'Location','SouthEast') hold off
Реализация теперь похожа, чертит от стационарного стохастического процесса. Отклонение симуляции колеблется (из-за ошибки Монте-Карло) вокруг теоретического отклонения.
В этом примере показано, как симулировать демонстрационные пути от стационарного MA (12) процесс, не задавая преддемонстрационные наблюдения.
Шаг 1. Задайте модель.
Задайте модель MA (12)
где инновационное распределение является Гауссовым с отклонением 0.2.
model = arima('Constant',0.5,'MA',{0.8,0.2},... 'MALags',[1,12],'Variance',0.2);
Шаг 2. Сгенерируйте демонстрационные пути.
Сгенерируйте 200 демонстрационных путей, каждого с 60 наблюдениями.
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)
h = Line with properties: Color: [0 0 0] LineStyle: '-' LineWidth: 2 Marker: 'none' MarkerSize: 6 MarkerFaceColor: 'none' XData: [1x60 double] YData: [1x60 double] ZData: [1x0 double] Show all properties
legend(h,'Simulation Mean','Location','NorthWest') title('MA(12) Process') hold off
Для процесса MA постоянный термин является безусловным средним значением. Среднее значение симуляции - приблизительно 0,5, как ожидалось.
Шаг 3. Постройте отклонение симуляции.
Безусловное отклонение для модели
Поскольку модель является стационарной, безусловное отклонение должно быть постоянным через все случаи. Постройте отклонение симуляции и сравните его с теоретическим отклонением.
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
Кажется, существует короткая электротермотренировка в начале симуляции. В это время отклонение симуляции ниже, чем ожидалось. Впоследствии, отклонение симуляции колеблется вокруг теоретического отклонения.
Шаг 4. Сгенерируйте более демонстрационные пути.
Симулируйте 10 000 путей из модели, каждого с длиной 1000. Посмотрите на отклонение симуляции.
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
Ошибка Монте-Карло уменьшается, когда больше реализации сгенерировано. В отклонении симуляции существует намного меньше изменчивости, которое плотно колеблется вокруг теоретического отклонения.