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 не может содержать NaNs.

numObs

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

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

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

'E0'

Средние нулевые преддемонстрационные инновации, которые вводят начальные значения для модели. 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- NumPaths матрица симулированных данных об ответе.

E

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

V

numObs- 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')

Постройте 2.5th, 50-й (медиана), и 97.5th процентили симулированных путей к ответу.

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')

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

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

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

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

Задайте и симулируйте путь длины 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')

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

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

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.18556          2.3191       0.020392
    AR{1}       -0.074397      0.081985        -0.90744        0.36417
    MA{1}         0.31126      0.077265          4.0285     5.6137e-05
    Variance       27.826       0.63625          43.735              0

Симулируйте 1 000 путей с 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

Ссылки

[1] Поле, G. E. P. Г. М. Дженкинс и Г. К. Рейнсель. Анализ Временных Рядов: Предсказывая и Управление 3-й редактор Englewood Cliffs, NJ: Prentice Hall, 1994.

[2] Enders, W. Прикладные эконометрические временные ряды. Хобокен, NJ: John Wiley & Sons, 1995.

[3] Гамильтон, J. D. Анализ Временных Рядов. Принстон, NJ: Издательство Принстонского университета, 1994.

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