Моделируйте стационарные процессы

Моделируйте процесс 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

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

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

|

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

Больше о