Симулируйте стационарные процессы

Симулируйте процесс AR

В этом примере показано, как симулировать демонстрационные пути от стационарного AR (2) процесс, не задавая преддемонстрационные наблюдения.

Шаг 1. Задайте модель.

Задайте модель AR (2)

yt=0.5+0.7yt-1+0.25yt-2+εt,

где инновационный процесс является Гауссовым с отклонением 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 устанавливает два необходимых преддемонстрационных наблюдения, равные безусловному среднему значению процесса,

c(1-ϕ1-ϕ2)=0.5(1-0.7-0.25)=10.

Шаг 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

Среднее значение симуляции является постоянным в зависимости от времени. Это сопоставимо с определением стационарного процесса. Отклонение процесса не является постоянным в зависимости от времени, как бы то ни было. Существуют переходные эффекты в начале симуляции из-за отсутствия преддемонстрационных данных.

Симулированное отклонение приближается к теоретическому отклонению,

(1-ϕ2)(1+ϕ2)σε2(1-ϕ2)2-ϕ12=(1-.25)(1+.25)0.1(1-.25)2-0.72=0.83,

приблизительно 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

В этом примере показано, как симулировать демонстрационные пути от стационарного MA (12) процесс, не задавая преддемонстрационные наблюдения.

Шаг 1. Задайте модель.

Задайте модель MA (12)

yt=0.5+εt+0.8εt-1+0.2εt-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. Постройте отклонение симуляции.

Безусловное отклонение для модели

(1+θ12+θ122)σε2=(1+0.82+0.22)×0.2=0.336.

Поскольку модель является стационарной, безусловное отклонение должно быть постоянным через все случаи. Постройте отклонение симуляции и сравните его с теоретическим отклонением.

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

Ошибка Монте-Карло уменьшается, когда больше реализации сгенерировано. В отклонении симуляции существует намного меньше изменчивости, которое плотно колеблется вокруг теоретического отклонения.

Смотрите также

|

Связанные примеры

Больше о

Для просмотра документации необходимо авторизоваться на сайте