simulate

Симуляция Монте-Карло моделей ARIMA или ARIMAX

Синтаксис

[Y,E] = simulate(Mdl,numObs)
[Y,E,V] = simulate(Mdl,numObs)
[Y,E,V] = simulate(Mdl,numObs,Name,Value)

Описание

[Y,E] = simulate(Mdl,numObs) моделирует пути расчета и инновации из модели ARIMA, Mdl. Ответы могут включать эффекты сезонности.

[Y,E,V] = simulate(Mdl,numObs) дополнительно моделирует условные отклонения, V.

[Y,E,V] = simulate(Mdl,numObs,Name,Value) моделирует пути расчета с дополнительными опциями, заданными одним или несколькими Name,Value аргументы в виде пар.

Входные параметры

Mdl

Модель ARIMA или ARIMAX, заданная как arima модель, возвращенная arima или estimate.

Свойства Mdl не может содержать NaNс.

numObs

Положительное целое число, которое указывает количество наблюдений (строк), которые генерируются для каждого пути выходов Y, E, и V.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

'E0'

Среднее нулевое значение нововведений presample, которые обеспечивают начальные значения для модели. E0 - вектор-столбец или матрица с, по крайней мере NumPaths столбцы и достаточно строк, чтобы инициализировать модель и любую модель условного отклонения. Количество необходимых наблюдений, по крайней мере Mdl.Q, но может быть и больше, если вы задаете модель условного отклонения. Если количество строк превышает необходимое, то simulate использует только самые последние наблюдения. Если количество столбцов превышает NumPaths, затем simulate использует только первое NumPaths столбцы. Если E0 является вектор-столбец, затем применяется к каждому моделируемому пути. Последняя строка содержит самое последнее предварительное наблюдение.

По умолчанию: simulate устанавливает необходимые предварительные наблюдения равными 0.

'NumPaths'

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

По умолчанию: 1

'V0'

Положительный перед выборкой условных дисперсий, которые обеспечивают начальные значения для любой модели условного отклонения. Если отклонение модели постоянно, то V0 излишне. V0 - вектор-столбец или матрица с, по крайней мере NumPaths столбцы и достаточно строк, чтобы инициализировать модель отклонения. Если количество строк превышает необходимое, то simulate использует только самые последние наблюдения. Если количество столбцов превышает NumPaths, затем simulate использует только первое NumPaths столбцы. Если V0 является вектор-столбец, тогда simulate применяет его к каждому моделируемому пути. Последняя строка содержит самое последнее наблюдение.

По умолчанию: simulate устанавливает необходимые наблюдения предварительного образца на безусловное отклонение процесса условного отклонения.

'X'

Матрица данных предиктора с Mdl.Beta длины столбцы отдельных серий. Количество наблюдений (строк) X должен равняться или превышать numObs. Если количество наблюдений X превышает numObs, затем simulate использует только самые последние наблюдения. simulate применяет целую матрицу X к каждому симулированному отклику серии. Последняя строка содержит самое последнее наблюдение.

По умолчанию: simulate не использует регрессионный компонент независимо от значения Mdl.Beta.

'Y0'

Предварительный образец данных отклика, который обеспечивает начальные значения для модели. Y0 - вектор-столбец или матрица с, по крайней мере Mdl.P строки и NumPaths столбцы. Если количество строк превышает Mdl.P, затем simulate использует только самые последние Mdl.P наблюдения. Если количество столбцов превышает NumPaths, затем simulate использует только первое NumPaths столбцы. Если Y0 является вектор-столбец, затем применяется к каждому моделируемому пути. Последняя строка содержит самое последнее предварительное наблюдение.

По умолчанию: simulate устанавливает необходимые предварительные наблюдения на безусловное среднее, если процесс AR является стабильным, или на 0 для нестабильных процессов или когда вы задаете X.

Примечания

  • NaNs указывают отсутствующие значения, и simulate удаляет их. Программа объединяет предварительные данные, затем использует список удаления, чтобы удалить любые NaNs в предварительной матрице данных или X. То есть simulate устанавливает PreSample = [Y0 E0 V0], затем он удаляет любую строку в PreSample или X который содержит, по крайней мере, один NaN.

  • Удаление NaNs в основных данных уменьшает эффективный размер выборки. Такое удаление может также создать неправильные временные ряды.

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

Выходные аргументы

Y

numObs-by- NumPaths матрица симулированного отклика данных.

E

numObs-by- NumPaths матрица моделируемых средних нулевых инноваций.

V

numObs-by- NumPaths матрица моделируемых условных отклонений нововведений в E.

Примеры

расширить все

Моделируйте пути отклика и инновации из мультипликативной сезонной модели.

Задайте модель

(1-L)(1-L12)yt=(1-0.5L)(1+0.3L12)εt,

где εt следует Гауссову распределению со средним 0 и отклонением 0,1.

Mdl = arima('MA',-0.5,'SMA',0.3,...
	'SMALags',12,'D',1,'Seasonality',12,...
	'Variance',0.1,'Constant',0);

Симулируйте 500 путей со 100 наблюдениями каждый.

rng default % For reproducibility
[Y,E] = simulate(Mdl,100,'NumPaths',500);

figure
subplot(2,1,1);
plot(Y)
title('Simulated Response')

subplot(2,1,2);
plot(E)
title('Simulated Innovations')

Figure contains 2 axes. Axes 1 with title Simulated Response contains 500 objects of type line. Axes 2 with title Simulated Innovations contains 500 objects of type line.

Постройте графики 2,5-го, 50-го (медиана) и 97,5-го процентилей симулированного отклика путей.

lower = prctile(Y,2.5,2);
middle = median(Y,2);
upper = prctile(Y,97.5,2);

figure
plot(1:100,lower,'r:',1:100,middle,'k',...
			1:100,upper,'r:')
legend('95% Interval','Median')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent 95% Interval, Median.

Вычислите статистику по второму измерению (через пути), чтобы суммировать пути расчета.

Постройте гистограмму моделируемых путей в момент 100.

figure
histogram(Y(100,:),10)
title('Response Distribution at Time 100')

Figure contains an axes. The axes with title Response Distribution at Time 100 contains an object of type histogram.

Симулируйте три ряда предикторов и ряд откликов.

Задайте и симулируйте путь длины 20 для каждого из трех рядов предикторов, смоделированных

(1-0.2L)xit=2+(1+0.5L-0.3L2)ηit,

где ηit следует Гауссову распределению со средним 0 и отклонением 0,01, и i = {1,2,3}.

[MdlX1,MdlX2,MdlX3] = deal(arima('AR',0.2,'MA',...
    {0.5,-0.3},'Constant',2,'Variance',0.01));

rng(4); % For reproducibility 
simX1 = simulate(MdlX1,20);
simX2 = simulate(MdlX2,20);
simX3 = simulate(MdlX3,20);
SimX = [simX1 simX2 simX3];

Задайте и симулируйте путь длины 20 для серии откликов, смоделированной

(1-0.05L+0.02L2-0.01L3)(1-L)1yt=0.05+xt[0.5-0.03-0.7]+(1+0.04L+0.01L2)εt,

где εt следует Гауссову распределению со средним 0 и отклонением 1.

MdlY = arima('AR',{0.05 -0.02 0.01},'MA',...
    {0.04,0.01},'D',1,'Constant',0.5,'Variance',1,...
    'Beta',[0.5 -0.03 -0.7]);
simY = simulate(MdlY,20,'X',SimX);

Постройте график серии вместе.

figure
plot([SimX simY])
title('Simulated Series')
legend('{X_1}','{X_2}','{X_3}','Y')

Figure contains an axes. The axes with title Simulated Series contains 4 objects of type line. These objects represent {X_1}, {X_2}, {X_3}, Y.

Прогнозируйте ежедневный составной индекс NASDAQ с помощью симуляций Монте-Карло.

Загрузите данные NASDAQ, включенные в тулбокс. Извлеките первые 1500 наблюдений для подбора кривой.

load Data_EquityIdx
nasdaq = DataTable.NASDAQ(1:1500);
n = length(nasdaq);

Задайте, а затем подбирайте модель ARIMA (1,1,1 ).

NasdaqModel = arima(1,1,1);
NasdaqFit = estimate(NasdaqModel,nasdaq);
 
    ARIMA(1,1,1) Model (Gaussian Distribution):
 
                  Value      StandardError    TStatistic      PValue  
                _________    _____________    __________    __________

    Constant      0.43031       0.18555          2.3191       0.020391
    AR{1}       -0.074389      0.081985        -0.90735        0.36422
    MA{1}         0.31126      0.077266          4.0284     5.6166e-05
    Variance       27.826       0.63625          43.735              0

Симулируйте 1000 путей с 500 наблюдениями каждый. Используйте наблюдаемые данные как предварительные данные.

rng default;
Y = simulate(NasdaqFit,500,'NumPaths',1000,'Y0',nasdaq);

Постройте график среднего прогноза симуляции и приблизительных 95% интервалов прогноза.

lower = prctile(Y,2.5,2);
upper = prctile(Y,97.5,2);
mn = mean(Y,2);

figure
plot(nasdaq,'Color',[.7,.7,.7])
hold on
h1 = plot(n+1:n+500,lower,'r:','LineWidth',2);
plot(n+1:n+500,upper,'r:','LineWidth',2)
h2 = plot(n+1:n+500,mn,'k','LineWidth',2);

legend([h1 h2],'95% Interval','Simulation Mean',...
			'Location','NorthWest')
title('NASDAQ Composite Index Forecast')
hold off

Figure contains an axes. The axes with title NASDAQ Composite Index Forecast contains 4 objects of type line. These objects represent 95% Interval, Simulation Mean.

Ссылки

[1] Box, G. E. P., G. M. Jenkins, and G. C. Reinsel. Анализ временных рядов: прогнозирование и управление 3-м эд. Englewood Cliffs, NJ: Prentice Hall, 1994.

[2] Enders, W. Applied Econometric Time Series. Hoboken, NJ: John Wiley & Sons, 1995.

[3] Гамильтон, Дж. Д. Анализ временных рядов. Princeton, NJ: Princeton University Press, 1994.

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