Этот пример показывает, как моделировать пути расчета из стационарного процесса 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
устанавливает два требуемых наблюдения presample равными безусловному среднему значению процесса
Безусловное отклонение процесса
Вычислите безусловное среднее значение и отклонение процесса.
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
Сгенерируйте много путей к образцам
Сгенерируйте 1000 путей выборки, каждый с 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
Ошибка Монте-Карло уменьшается, когда генерируется больше реализаций. В отклонении симуляции гораздо меньше изменчивости, которая сильно колеблется вокруг теоретического отклонения.