simulate

Класс: regARIMA

Симуляция Монте-Карло регрессионной модели с ошибками ARIMA

Синтаксис

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

Описание

[Y,E] = simulate(Mdl,numObs) симулирует один выборочный путь наблюдений (Y) и инновации (E) из регрессионной модели с ошибками временных рядов ARIMA, Mdl. Программа моделирует numObs наблюдения и инновации на каждый путь выборки.

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

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

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

Mdl

Регрессионая модель с ошибками ARIMA, заданная как regARIMA модель, возвращенная regARIMA или estimate.

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

numObs

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

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

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

'E0'

Предварительный пример нововведений, которые имеют среднее 0 и обеспечивают начальные значения для модели ошибки ARIMA, заданный как разделенная разделенными запятой парами, состоящая из 'E0' и вектор-столбец или матрица.

  • Если E0 является вектор-столбец, затем применяется к каждому выводимому пути.

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

  • E0 должен содержать не менее Mdl.Q строки. Если E0 содержит больше строк, чем требуется, затем simulate использует последние нововведения presample. Последняя строка содержит последние нововведения presample.

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

'NumPaths'

Количество путей (столбцов) для генерации Y, E, и U, заданная как разделенная разделенными запятой парами, состоящая из 'NumPaths' и положительное целое число.

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

'U0'

Предварительная выборка безусловных нарушений порядка, которые обеспечивают начальные значения для модели ошибки ARIMA, заданный как разделенная разделенными запятой парами, состоящая из 'U0' и вектор-столбец или матрица.

  • Если U0 является вектор-столбец, затем применяется к каждому выводимому пути.

  • Если U0 является матрицей, тогда это требует как минимум NumPaths столбцы. Если U0 содержит больше столбцов, чем требуется, затем infer использует первую NumPaths столбцы.

  • U0 должен содержать не менее Mdl.P строки. Если U0 содержит больше строк, чем требуется, затем simulate использует последние предварительные безусловные нарушения порядка. Последняя строка содержит последний перед выборкой безусловного нарушения порядка.

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

'X'

Данные предиктора в регрессионной модели, заданные как разделенная разделенными запятой парами, состоящая из 'X' и матрицу.

Столбцы X являются отдельными синхронизированными временными рядами с последней строкой, содержащей последние наблюдения. X должно иметь по крайней мере numObs строки. Если количество строк X превышает требуемое число, затем simulate использует последние наблюдения.

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

Примечания

  • NaNs в E0, U0, и X указать отсутствующие значения и simulate удаляет их. Программа объединяет предварительные наборы данных (E0 и U0), затем использует список удаления, чтобы удалить любое NaNс. simulate точно так же удаляет NaNs из X. Удаление NaNs в данных уменьшает размер выборки, а также может создавать неправильные временные ряды.

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

  • Все предикторы (т.е. столбцы в X) связаны с каждым путем отклика в Y.

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

Y

Симулированные отклики, возвращенные как numObs-by- NumPaths матрица.

E

Моделируется, означает 0 инноваций, возвращается как numObs-by- NumPaths матрица.

U

Моделируемые безусловные нарушения порядка, возвращенные как numObs-by- NumPaths матрица.

Примеры

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

Симулируйте пути ответов, инноваций и безусловных нарушений порядка от регрессионой модели с SARIMA(2,1,1)12 ошибки.

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

yt=X[1.5-2]+ut(1-0.2L-0.1L2)(1-L)(1-0.01L12)(1-L12)ut=(1+0.5L)(1+0.02L12)εt,

где εt следует t-распределению с 15 степенями свободы.

Distribution = struct('Name','t','DoF',15);
Mdl = regARIMA('AR',{0.2, 0.1},'MA',{0.5},'SAR',0.01,...
    'SARLags',12,'SMA',0.02,'SMALags',12,'D',1,...
    'Seasonality',12,'Beta',[1.5; -2],'Intercept',0,...
    'Variance',0.1,'Distribution',Distribution)
Mdl = 
  regARIMA with properties:

     Description: "Regression with ARIMA(2,1,1) Error Model Seasonally Integrated with Seasonal AR(12) and MA(12) (t Distribution)"
    Distribution: Name = "t", DoF = 15
       Intercept: 0
            Beta: [1.5 -2]
               P: 27
               D: 1
               Q: 13
              AR: {0.2 0.1} at lags [1 2]
             SAR: {0.01} at lag [12]
              MA: {0.5} at lag [1]
             SMA: {0.02} at lag [12]
     Seasonality: 12
        Variance: 0.1

Моделируйте и стройте график 500 путей с 25 наблюдениями каждый.

T = 25;
rng(1)
X = randn(T,2);
[Y,E,U] = simulate(Mdl,T,'NumPaths',500,'X',X);

figure
subplot(2,1,1);
plot(Y)
axis tight
title('{\bf Simulated Response Paths}')
subplot(2,2,3);
plot(E)
axis tight
title('{\bf Simulated Innovations Paths}')
subplot(2,2,4);
plot(U)
axis tight
title('{\bf Simulated Unconditional Disturbances Paths}')

Figure contains 3 axes. Axes 1 with title {\bf Simulated Response Paths} contains 500 objects of type line. Axes 2 with title {\bf Simulated Innovations Paths} contains 500 objects of type line. Axes 3 with title {\bf Simulated Unconditional Disturbances Paths} 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:25,lower,'r:',1:25,middle,'k',...
			1:25,upper,'r:')
title('\bf{95% Percentile Confidence Interval for the Response}')
legend('95% Interval','Median','Location','Best')

Figure contains an axes. The axes with title \bf{95% Percentile Confidence Interval for the Response} contains 3 objects of type line. These objects represent 95% Interval, Median.

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

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

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

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

Регрессируйте стационарный ежеквартальный логарифмический ВВП в ИПЦ с помощью регрессионой модели с ошибками ARMA (1,1) и прогнозируйте логарифмический ВВП с помощью симуляции Монте-Карло .

Загрузите набор макроэкономических данных США и предварительно обработайте данные.

load Data_USEconModel;
logGDP = log(DataTable.GDP);
dlogGDP = diff(logGDP);          % For stationarity
dCPI = diff(DataTable.CPIAUCSL); % For stationarity
numObs = length(dlogGDP);
gdp = dlogGDP(1:end-15);   % Estimation sample
cpi = dCPI(1:end-15);
T = length(gdp);        % Effective sample size
frstHzn =  T+1:numObs;  % Forecast horizon
hoCPI = dCPI(frstHzn);  % Holdout sample
dts = dates(2:end);     % Date nummbers

Подбор регрессионной модели с ошибками ARMA (1,1 ).

Mdl = regARIMA('ARLags',1,'MALags',1);
EstMdl = estimate(Mdl,gdp,'X',cpi);
 
    Regression with ARMA(1,1) Error Model (Gaussian Distribution):
 
                   Value       StandardError    TStatistic      PValue  
                 __________    _____________    __________    __________

    Intercept      0.014793      0.0016289        9.0818      1.0684e-19
    AR{1}           0.57601        0.10009        5.7548      8.6754e-09
    MA{1}          -0.15258        0.11978       -1.2738         0.20272
    Beta(1)       0.0028972      0.0013989         2.071        0.038355
    Variance     9.5734e-05     6.5562e-06        14.602       2.723e-48

Вывод безусловных нарушений порядка.

[~,u0] = infer(EstMdl,gdp,'X',cpi);

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

rng(1); % For reproducibility
gdpF = simulate(EstMdl,15,'NumPaths',1000,...
   'U0',u0,'X',hoCPI);

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

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

figure
plot(dts(end-65:end),dlogGDP(end-65:end),'Color',[.7,.7,.7])
datetick
hold on
h1 = plot(dts(frstHzn),lower,'r:','LineWidth',2);
plot(dts(frstHzn),upper,'r:','LineWidth',2)
h2 = plot(dts(frstHzn),mn,'k','LineWidth',2);
h = gca;
ph = patch([repmat(dts(frstHzn(1)),1,2) repmat(dts(frstHzn(end)),1,2)],...
   [h.YLim fliplr(h.YLim)],...
   [0 0 0 0],'b');
ph.FaceAlpha = 0.1;
legend([h1 h2],{'95% Interval','Simulation Mean'},'Location','NorthWest',...
    'AutoUpdate','off')
axis tight
title('{\bf log GDP Forecast - 15 Quarter Horizon}')
hold off

Figure contains an axes. The axes with title {\bf log GDP Forecast - 15 Quarter Horizon} contains 5 objects of type line, patch. These objects represent 95% Interval, Simulation Mean.

Регрессируйте корневой нестационарный, ежеквартальный журнал ВВП модуля на ИПЦ, используя регрессионую модель с ошибками ARIMA (1,1,1) с известными точками пересечения. Прогнозный логарифмический ВВП с помощью симуляции Монте-Карло .

Загрузите набор макроэкономических данных США и предварительно обработайте данные.

load Data_USEconModel;
numObs = length(DataTable.GDP);
logGDP = log(DataTable.GDP(1:end-15));
cpi = DataTable.CPIAUCSL(1:end-15);
T = length(logGDP);
frstHzn =  T+1:numObs;                % Forecast horizon
hoCPI = DataTable.CPIAUCSL(frstHzn);  % Holdout sample

Подбор регрессионной модели с ARIMA (1,1,1). Точка пересечения не идентифицируется в модели с интегрированными ошибками, поэтому исправьте его значение перед оценкой .

intercept = 5.867;
Mdl = regARIMA('ARLags',1,'MALags',1,'D',1,'Intercept',intercept);
EstMdl = estimate(Mdl,logGDP,'X',cpi);
 
    Regression with ARIMA(1,1,1) Error Model (Gaussian Distribution):
 
                   Value       StandardError    TStatistic      PValue   
                 __________    _____________    __________    ___________

    Intercept         5.867              0           Inf                0
    AR{1}           0.92271       0.030978        29.786      5.8728e-195
    MA{1}          -0.38785       0.060354       -6.4263       1.3076e-10
    Beta(1)       0.0039668      0.0016498        2.4044         0.016199
    Variance     0.00010894      7.272e-06        14.981       9.7345e-51

Вывод безусловных нарушений порядка.

[~,u0] = infer(EstMdl,logGDP,'X',cpi);

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

rng(1); % For reproducibility
GDPF = simulate(EstMdl,15,'NumPaths',1000,...
    'U0',u0,'X',hoCPI);

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

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

figure
plot(dates(end-65:end),log(DataTable.GDP(end-65:end)),'Color',...
   [.7,.7,.7])
datetick
hold on
h1 = plot(dates(frstHzn),lower,'r:','LineWidth',2);
plot(dates(frstHzn),upper,'r:','LineWidth',2)
h2 = plot(dates(frstHzn),mn,'k','LineWidth',2);
h = gca;
ph = patch([repmat(dates(frstHzn(1)),1,2) repmat(dates(frstHzn(end)),1,2)],...
    [h.YLim fliplr(h.YLim)],...
    [0 0 0 0],'b');
ph.FaceAlpha = 0.1;
legend([h1 h2],{'95% Interval','Simulation Mean'},'Location','NorthWest',...
    'AutoUpdate','off')
axis tight
title('{\bf log GDP Forecast - 15 Quarter Horizon}')
hold off

Figure contains an axes. The axes with title {\bf log GDP Forecast - 15 Quarter Horizon} contains 5 objects of type line, patch. These objects represent 95% Interval, Simulation Mean.

Безусловные нарушения порядка, ut, являются нестационарными, поэтому ширина прогнозируемых интервалов увеличивается со временем.

Ссылки

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

[2] Davidson, R., and J. G. MacKinnon. Эконометрическая теория и методы. Оксфорд, Великобритания: Oxford University Press, 2004.

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

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

[5] Pankratz, A. Прогнозирование с динамическими регрессиоными моделями. John Wiley & Sons, Inc., 1991.

[6] Tsay, R.S. Analysis of Financial Time Series. 2nd ed. Hoboken, NJ: John Wiley & Sons, Inc., 2005.