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

Модель Regression с ошибками ARIMA в виде regARIMA модель возвращена regARIMA или estimate.

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

numObs

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

Аргументы name-value

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

E0

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

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

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

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

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

NumPaths

Количество демонстрационных путей (столбцы), чтобы сгенерировать для YE, и 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), затем использует мудрое списком удаление, чтобы удалить любой NaNs. simulate так же удаляет NaNs от X. Удаление NaNs в данных уменьшает объем выборки и может также создать неправильные временные ряды.

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

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

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

Y

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

E

Симулированные, средние 0 инноваций, возвращенных как numObs- NumPaths матрица.

U

Симулированные безусловные воздействия, возвращенные как numObs- 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 objects. Axes object 1 with title blank S i m u l a t e d blank R e s p o n s e blank P a t h s contains 500 objects of type line. Axes object 2 with title blank S i m u l a t e d blank I n n o v a t i o n s blank P a t h s contains 500 objects of type line. Axes object 3 with title blank S i m u l a t e d blank U n c o n d i t i o n a l blank D i s t u r b a n c e s blank P a t h s contains 500 objects of type line.

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

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 object. The axes object with title 9 5 % blank P e r c e n t i l e blank C o n f i d e n c e blank I n t e r v a l blank f o r blank t h e blank R e s p o n s e 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 object. The axes object with title Response Distribution at Time 20 contains an object of type histogram.

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

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

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

Симулируйте 1 000 путей с 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 object. The axes object with title blank l o g blank G D P blank F o r e c a s t blank - blank 1 5 blank Q u a r t e r blank H o r i z o n contains 5 objects of type line, patch. These objects represent 95% Interval, Simulation Mean.

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

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

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.8737e-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);

Симулируйте 1 000 путей с 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 object. The axes object with title blank l o g blank G D P blank F o r e c a s t blank - blank 1 5 blank Q u a r t e r blank H o r i z o n contains 5 objects of type line, patch. These objects represent 95% Interval, Simulation Mean.

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

Ссылки

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

[2] Дэвидсон, R. и Дж. Г. Маккиннон. Эконометрическая теория и методы. Оксфорд, Великобритания: Издательство Оксфордского университета, 2004.

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

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

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

[6] Tsay, R. S. Анализ Финансовых Временных рядов. 2-й редактор Хобокен, NJ: John Wiley & Sons, Inc., 2005.