моделировать

Класс: arima

Симуляция Монте-Карло моделей 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 s.

numObs

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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.

Примечания

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

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

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

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

Y

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

E

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

V

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

Примеры

развернуть все

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

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

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

где ε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.18555         2.3191        0.020392
    AR{1}       -0.074393      0.081985        -0.9074         0.36419
    MA{1}         0.31126      0.077266         4.0284      5.6151e-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. Г. М. Дженкинс и Г. К. Рейнсель. Анализ timeseries: Предсказывая и Управление 3-й редактор Englewood Cliffs, NJ: Prentice Hall, 1994.

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

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