forecast

Предскажите демонстрационные пути из переключающей порог модели динамической регрессии

Описание

пример

YF = forecast(Mdl,Y,numPeriods) возвращает оптимальные прогнозы точки "один шаг вперед" YF из полностью заданной переключающей порог модели Mdl динамической регрессии по горизонту прогноза длины numPeriods. Предсказанные ответы представляют продолжение данных об ответе Y.

пример

YF = forecast(Mdl,Y,numPeriods,Name,Value) дополнительные опции использования заданы одними или несколькими аргументами name-value. Например, forecast(Mdl,Y,10,Type="exogenous",Z=z) задает прогнозы внешнего типа и период прогноза, внешние пороговые данные о переменной z.

пример

[YF,EstCov] = forecast(___) возвращает основанные на симуляции прогнозы YF и соответствующие ковариации ошибки прогноза EstCov, использование любой из комбинаций входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

В этом примере показано, как вычислить итеративные прогнозы точки условного среднего значения самовозбуждающегося порога авторегрессивная модель (SETAR). Задайте все значения параметров (этот пример использует произвольные значения).

Создайте полностью заданную модель для DGP

Создайте дискретный пороговый переход на уровне 0.

t = 0;
tt = threshold(t)
tt = 
  threshold with properties:

          Type: 'discrete'
        Levels: 0
         Rates: []
    StateNames: ["1"    "2"]
     NumStates: 2

tt полностью заданный threshold объект, который описывает переключающийся механизм переключающей порог модели.

Примите, что следующие одномерные модели описывают процесс ответа системы:

  • Состояние 1: yt=-1+0.6yt-1+εt.

  • Состояние 2: yt=1+0.6yt-1+εt.

  • εtΝ(0,0.5).

Для каждого режима используйте arima создать модель AR, которая описывает процесс ответа в режиме.

c1 = -1;
c2 = 1;
ar = 0.6;       

mdl1 = arima(Constant=c1,AR=ar)
mdl1 = 
  arima with properties:

     Description: "ARIMA(1,0,0) Model (Gaussian Distribution)"
    Distribution: Name = "Gaussian"
               P: 1
               D: 0
               Q: 0
        Constant: -1
              AR: {0.6} at lag [1]
             SAR: {}
              MA: {}
             SMA: {}
     Seasonality: 0
            Beta: [1×0]
        Variance: NaN
mdl2 = arima(Constant=c2,AR=ar)
mdl2 = 
  arima with properties:

     Description: "ARIMA(1,0,0) Model (Gaussian Distribution)"
    Distribution: Name = "Gaussian"
               P: 1
               D: 0
               Q: 0
        Constant: 1
              AR: {0.6} at lag [1]
             SAR: {}
              MA: {}
             SMA: {}
     Seasonality: 0
            Beta: [1×0]
        Variance: NaN

mdl1 и mdl2 эффективно, полностью заданный arima объекты. Инновационные отклонения подмоделей не заданы; объект tsVAR задает инновационное отклонение всей модели.

Сохраните подмодели в векторе с порядком, соответствующим режимам в tt.StateNames.

mdl = [mdl1; mdl2];

Используйте tsVAR создать модель TAR из переключающегося механизма tt и подмодели состояния специфичные mdl. Задайте инновационное отклонение всей модели 0,5.

Mdl = tsVAR(tt,mdl,Covariance=0.5)
Mdl = 
  tsVAR with properties:

         Switch: [1x1 threshold]
      Submodels: [2x1 varm]
      NumStates: 2
      NumSeries: 1
     StateNames: ["1"    "2"]
    SeriesNames: "1"
     Covariance: 0.5000

Mdl.Submodels(2)
ans = 
  varm with properties:

     Description: "AR-Stationary 1-Dimensional VAR(1) Model"
     SeriesNames: "Y1" 
       NumSeries: 1
               P: 1
        Constant: 1
              AR: {0.6} at lag [1]
           Trend: 0
            Beta: [1×0 matrix]
      Covariance: NaN

Mdl полностью заданный tsVAR объект, представляющий одномерную модель TAR с двумя состояниями. tsVAR хранилища задали arima подмодели как varm объекты.

Симулируйте данные об ответе из DGP

forecast требует, чтобы достаточно данных перед горизонтом прогноза инициализировало модель. Симулируйте 120 наблюдений от DGP.

rng(1); % For reproducibility
y = simulate(Mdl,120);

y является 120 1 случайным путем ответов. Опции по умолчанию simulate, и весь tsVAR возразите функциям, укажите, что пороговая переменная yt-1.

Вычислите оптимальные прогнозы точки

Обработайте первые 100 наблюдений за данными о симулированном отклике как предварительная выборка для прогноза и обработайте последние 10 наблюдений как выборку затяжки.

idx0 = 1:100;
idx1 = 101:120;
y0 = y(idx0);
y1 = y(idx1);

Вычислите 1-через 20 шагов вперед оптимальные прогнозы точки из модели.

yf = forecast(Mdl,y0,20);

yf 20 1 вектор из оптимальных прогнозов точки.

Отобразите на графике данные о симулированном отклике и прогнозы.

figure
hold on
plot(idx0,y0,'b');
h = plot(idx1,y1,'b--');
h1 = plot(idx1,yf,'r');
yfill = [ylim fliplr(ylim)];
xfill = [idx0(end) idx0(end) idx1(end) idx1(end)];
fill(xfill,yfill,'k','FaceAlpha',0.05)
legend([h h1],["Actual" "Optimal"],'Location','NorthWest')
title('Forecasts')
hold off

Figure contains an axes object. The axes object with title Forecasts contains 4 objects of type line, patch. These objects represent Actual, Optimal.

forecast должен использовать Методы Монте-Карло, чтобы оценить отклонения ошибки прогноза. Поэтому, когда simulate возвращает дисперсии ошибки прогноза, это использует Методы Монте-Карло, чтобы вычислить прогнозы точки.

Создайте модель SETAR в, Вычисляют Оптимальные Прогнозы Точки.

t = 0;
tt = threshold(t);
c1 = -1;
c2 = 1;
ar = 0.6;       
mdl1 = arima(Constant=c1,AR=ar);
mdl2 = arima(Constant=c2,AR=ar);
mdl = [mdl1; mdl2];

Mdl = tsVAR(tt,mdl,Covariance=0.5);

forecast требует, чтобы достаточно данных перед горизонтом прогноза инициализировало модель. Симулируйте 120 наблюдений от DGP.

rng(100); % For reproducibility
fh = 20;
y = simulate(Mdl,100+fh);

Обработайте первые 100 наблюдений за данными о симулированном отклике как предварительная выборка для прогноза и обработайте последние 20 наблюдений как выборку затяжки.

idx0 = 1:100;
idx1 = 101:(100 + fh);
y0 = y(idx0);
y1 = y(idx1);

Вычислите 1-через 20 шагов вперед оптимальные прогнозы точки из модели.

yf1 = forecast(Mdl,y0,fh);

yf1 20 1 вектор из оптимальных прогнозов точки.

Вычислите 1-через 20 шагов вперед прогнозы точки Монте-Карло путем возвращения предполагаемых дисперсий ошибки прогноза.

[yf2,estVar] = forecast(Mdl,y0,fh);

yf2 20 1 вектор из прогнозов точки Монте-Карло. estVAR 20 1 вектор из соответствующих предполагаемых отклонений ошибки прогноза.

Отобразите на графике данные о симулированном отклике, прогнозы и 95%-е интервалы прогноза с помощью оценок Монте-Карло.

figure
hold on
plot(idx0,y0,'b');
h = plot(idx1,y1,'b--');
h1 = plot(idx1,yf1,'r');
h2 = plot(idx1,yf2,'m');
ciu = yf2 + 1.96*sqrt(estVar); % Upper 95% confidence level
cil = yf2 - 1.96*sqrt(estVar); % Lower 95% confidence level
plot(idx1,ciu,'m-.');
plot(idx1,cil,'m-.'); 
yfill = [ylim,fliplr(ylim)];
xfill = [idx0(end) idx0(end) idx1(end) idx1(end)];
fill(xfill,yfill,'k','FaceAlpha',0.05)
legend([h h1 h2],["Actual" "Optimal" "Estimated"],...
    'Location',"NorthWest")
title("Point and Interval Forecasts")
hold off

Figure contains an axes object. The axes object with title Point and Interval Forecasts contains 7 objects of type line, patch. These objects represent Actual, Optimal, Estimated.

Когда forecast выполняет Методы Монте-Карло, чтобы оценить прогнозы точки и ковариации ошибки прогноза, можно настроить количество путей к выборке путем определения NumPaths опция.

Создайте модель SETAR в, Вычисляют Оптимальные Прогнозы Точки.

t = 0;
tt = threshold(t);
c1 = -1;
c2 = 1;
ar = 0.6;       
mdl1 = arima(Constant=c1,AR=ar);
mdl2 = arima(Constant=c2,AR=ar);
mdl = [mdl1; mdl2];

Mdl = tsVAR(tt,mdl,Covariance=0.5);

forecast требует, чтобы достаточно данных перед горизонтом прогноза инициализировало модель. Симулируйте 120 наблюдений от DGP.

rng(100); % For reproducibility
fh = 20;
y = simulate(Mdl,100+fh);

Обработайте первые 100 наблюдений за данными о симулированном отклике как предварительная выборка для прогноза и обработайте последние 20 наблюдений как выборку затяжки.

idx0 = 1:100;
idx1 = 101:(100 + fh);
y0 = y(idx0);
y1 = y(idx1);

Вычислите 1-через 20 шагов вперед оптимальные прогнозы точки из модели.

yf1 = forecast(Mdl,y0,fh);

Вычислите 1-через 20 шагов вперед прогнозы точки Монте-Карло путем возвращения предполагаемых дисперсий ошибки прогноза. Задайте выборку Монте-Карло 1 000 путей.

[yf2,estVar] = forecast(Mdl,y0,fh,NumPaths=1000);

yf2 20 1 вектор из прогнозов точки Монте-Карло. estVAR 20 1 вектор из соответствующих предполагаемых отклонений ошибки прогноза.

Отобразите на графике данные о симулированном отклике, прогнозы и 95%-е интервалы прогноза с помощью оценок Монте-Карло.

figure
hold on
plot(idx0,y0,'b');
h = plot(idx1,y1,'b--');
h1 = plot(idx1,yf1,'r');
h2 = plot(idx1,yf2,'m');
ciu = yf2 + 1.96*sqrt(estVar); % Upper 95% confidence level
cil = yf2 - 1.96*sqrt(estVar); % Lower 95% confidence level
plot(idx1,ciu,'m-.');
plot(idx1,cil,'m-.'); 
yfill = [ylim,fliplr(ylim)];
xfill = [idx0(end) idx0(end) idx1(end) idx1(end)];
fill(xfill,yfill,'k',FaceAlpha=0.05)
legend([h h1 h2],["Actual" "Optimal" "Estimated"],Location="NorthWest")
title("Point and Interval Forecasts")
hold off

Figure contains an axes object. The axes object with title Point and Interval Forecasts contains 7 objects of type line, patch. These objects represent Actual, Optimal, Estimated.

Рассмотрите логистическую переключающую порог модель (LSTAR) для действительного темпа роста GDP США, где каждая подмодель является AR (4), и пороговая переменная является темпом роста безработицы.

Создайте частично заданный пороговый переход для темпа роста безработицы. Задайте логистическую функцию перехода, и неизвестное, допускающее оценку, среднего уровня и уровень. Пометьте состояния "Contaction" и "Expansion".

tt = threshold(NaN,Type="logistic",Rates=NaN,...
    StateNames=["Contraction" "Expansion"]);

tt частично заданный threshold объект, и это - агностик переменной и данных, которые это представляет.

Создайте переключающую порог модель для действительного темпа роста GDP США.

p = 4;
mdl = [arima(ARLags=p); arima(ARLags=p)];
Mdl = tsVAR(tt,mdl);

Mdl частично заданный tsVAR объект, задающий sturcture модели и какие параметры являются допускающими оценку.

Загрузите ежеквартальные США макроэкономический набор данных Data_USEconModel. Удалите ведущие отсутствующие значения в ряду. Вычислите действительный рост процента GDP и рост безработицы.

load Data_USEconModel
DataTable = rmmissing(DataTable,DataVariables=["GDP" "GDPDEF" "UNRATE"]);
RGDP = DataTable.GDP./DataTable.GDPDEF;
rRGDP = price2ret(RGDP);            % Response data
gUNRATE = diff(DataTable.UNRATE);   % Exogenous thresold data
dts = DataTable.Time(2:end);
T = numel(dts);

Протяните следующие наборы от оценки:

  • Первые четыре наблюдения как предварительная выборка для оценки.

  • Итоговые 25% как горизонт прогноза, чтобы соответствовать прогнозам.

fh = ceil(0.25*T);
idxPre = 1:p;
idxEst = (idxPre(end)+1):(T-fh);
idxF = (T-fh+1):T;

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

tt0 = threshold(0,Type=tt.Type);

Подбирайте модель LSTAR к периоду оценки ряда темпа роста GDP США. Задайте следующие параметры:

  • Установите Y0 к ответам перед периодом оценки, чтобы инициализировать компоненты подмодели AR.

  • Установите Type к "exogenous" охарактеризовать пороговую переменную.

  • Установите Z к пороговым данным о переменной gUNRATE в период оценки.

EstMdl = estimate(Mdl,tt0,rRGDP(idxEst),Y0=rRGDP(idxPre),...
    Type="exogenous",Z=gUNRATE(idxEst));

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

yF = forecast(EstMdl,rRGDP(idxEst),fh,Type="exogenous",Z=gUNRATE(idxF));

Постройте действительный ряд темпа роста GDP с прогнозами.

figure
hold on
h1 = plot(dts(idxEst),rRGDP(idxEst),'b');
h2 = plot(dts(idxF),rRGDP(idxF),'b--');
h3 = plot(dts(idxF),yF,'r');
yfill = [ylim,fliplr(ylim)];
xfill = dts([idxEst(end) idxEst(end) idxF(end) idxF(end)]);
fill(xfill,yfill,'k',FaceAlpha=0.05)
legend([h1 h2 h3],["Data (estimation)" "Data (hold out)" "Forecasts"],...
    Location="NorthWest")
title("Real GDP Growth Rate Point Forecasts")
hold off

Figure contains an axes object. The axes object with title Real GDP Growth Rate Point Forecasts contains 4 objects of type line, patch. These objects represent Data (estimation), Data (hold out), Forecasts.

Рассмотрите следующую 2D модель LSETAR.

  • Состояние 1, "Low": yt=[1-1]+ε1,t, где ε1,tN([00],[1-0.1-0.11]).

  • Состояние 2, "Med": yt=[2-2]+[0.50.10.50.5]yt-1+ε2,t, где ε2,tN([00],[2-0.2-0.22]).

  • Состояние 3, "High": yt=[3-3]+[0.25000]yt-1+[000.250]yt-2+ε3,t, где ε3,tN([00],[3-0.3-0.33]).

  • Система находится в состоянии 1 когда y2,t-4<-1, система находится в состоянии 2 когда -1y2,t-4<1, и система находится в состоянии 3 в противном случае.

  • Функция перехода является логистической. Уровень перехода от состояния 1 - 2 3.5, и уровень перехода от состояния 1 - 3 1.5.

Создайте логистические пороговые переходы в середине уровней-1 и 1 с уровнями 3.5 и 1.5 соответственно. Пометьте состояния.

t = [-1 1];
r = [3.5 1.5];
stateNames = ["Low" "Med" "High"];
tt = threshold(t,Type="logistic",Rates=[3.5 1.5],StateNames=stateNames);

Создайте подмодели VAR при помощи varm. Сохраните подмодели в векторе с порядком, соответствующим режимам в tt.StateNames.

% Constants (numSeries x 1 vectors)
C1 = [1; -1];
C2 = [2; -2];
C3 = [3; -3];

% Autoregression coefficients (numSeries x numSeries matrices)
AR1 = {};                            % 0 lags
AR2 = {[0.5 0.1; 0.5 0.5]};          % 1 lag
AR3 = {[0.25 0; 0 0] [0 0; 0.25 0]}; % 2 lags

% Innovations covariances (numSeries x numSeries matrices)
Sigma1 = [1 -0.1; -0.1 1];
Sigma2 = [2 -0.2; -0.2 2];
Sigma3 = [3 -0.3; -0.3 3];

% VAR Submodels
mdl1 = varm('Constant',C1,'AR',AR1,'Covariance',Sigma1);
mdl2 = varm('Constant',C2,'AR',AR2,'Covariance',Sigma2);
mdl3 = varm('Constant',C3,'AR',AR3,'Covariance',Sigma3);

mdl = [mdl1; mdl2; mdl3];

Создайте модель LSETAR из переключающегося механизма tt и подмодели состояния специфичные mdl. Пометьте серию Y1 и Y2.

Mdl = tsVAR(tt,mdl,SeriesNames=["Y1" "Y2"])
Mdl = 
  tsVAR with properties:

         Switch: [1x1 threshold]
      Submodels: [3x1 varm]
      NumStates: 3
      NumSeries: 2
     StateNames: ["Low"    "Med"    "High"]
    SeriesNames: ["Y1"    "Y2"]
     Covariance: []

Mdl полностью заданный tsVAR объект, представляющий многомерную модель LSETAR с тремя состояниями. tsVAR объектные функции позволяют вам задать пороговые характеристики переменной и данные.

Симулируйте ответы для предварительной выборки прогноза

Необходимо задать достаточно преддемонстрационных наблюдений, чтобы инициализировать все компоненты AR в моделях VAR и эндогенной пороговой переменной. Самый большой порядок компонента AR равняется 2, и пороговая задержка переменной равняется 4, поэтому simulate и forecast потребуйте 4 преддемонстрационных наблюдений на ряд и путь.

Симулируйте один 2D путь 100 наблюдений из модели. Задайте эндогенную пороговую переменную и ее задержку, y2,t-4.

rng(1)  % For reproducibility
numObs = 100;
Y0F = simulate(Mdl,numObs,Delay=4,Index=2);

Y0F 100 2 матрица, представляющая один случайный путь, симулированный от Mdl.

Предскажите ответы

Предскажите модель LSETAR в горизонт с 50 периодами. Задайте эндогенную пороговую переменную и ее задержку.

fh = 50;
YF = forecast(Mdl,Y0F,fh,Index=2,Delay=4);

Y 20 2 матрица 20 пошаговых предсказанных ответов от Mdl.

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

tiledlayout(2,1)
nexttile
plot(1:100,Y0F(:,1),"b",101:(100+fh),YF(:,1),"r--")
title("Y1")
legend(["Presample" "Forecasts"])
nexttile
plot(1:100,Y0F(:,2),"b",101:(100+fh),YF(:,2),"r--")
legend(["Presample" "Forecasts"])
title("Y2")

Figure contains 2 axes objects. Axes object 1 with title Y1 contains 2 objects of type line. These objects represent Presample, Forecasts. Axes object 2 with title Y2 contains 2 objects of type line. These objects represent Presample, Forecasts.

Рассмотрите включая компоненты регрессии для внешних переменных в каждой подмодели переключающей порог модели динамической регрессии в Прогнозе Многомерную Модель LSETAR.

Полностью задайте модель LSETAR

Создайте логистические пороговые переходы в середине уровней-1 и 1 с уровнями 3.5 и 1.5 соответственно. Пометьте состояния.

t = [-1 1];
r = [3.5 1.5];
stateNames = ["Low" "Med" "High"];
tt = threshold(t,Type="logistic",Rates=[3.5 1.5],StateNames=stateNames)
tt = 
  threshold with properties:

          Type: 'logistic'
        Levels: [-1 1]
         Rates: [3.5000 1.5000]
    StateNames: ["Low"    "Med"    "High"]
     NumStates: 3

Примите, что следующие модели VARX описывают процессы ответа системы:

  • Состояние 1: yt=[1-1]+[1-1]x1,t+ε1,t, где ε1,tN([00],[1-0.1-0.11]).

  • Состояние 2: yt=[2-2]+[22-2-2]x2,t+[0.50.10.50.5]yt-1+ε2,t, где ε2,tN([00],[2-0.2-0.22]).

  • Состояние 3: yt=[3-3]+[333-3-3-3]x3,t+[0.25000]yt-1+[000.250]yt-2+ε3,t, где ε3,tN([00],[3-0.3-0.33]).

x1,t представляет одну внешнюю переменную, x2,t представляет две внешних переменные, и x3,t представляет три внешних переменные. Сохраните подмодели в векторе.

% Constants (numSeries x 1 vectors)
C1 = [1; -1];
C2 = [2; -2];
C3 = [3; -3];

% Regression coefficients (numSeries x numRegressors matrices)
Beta1 = [1; -1];            % 1 regressor
Beta2 = [2 2; -2 -2];       % 2 regressors
Beta3 = [3 3 3; -3 -3 -3];  % 3 regressors

% Autoregression coefficients (numSeries x numSeries matrices)
AR1 = {};                            
AR2 = {[0.5 0.1; 0.5 0.5]};          
AR3 = {[0.25 0; 0 0] [0 0; 0.25 0]}; 

% Innovations covariances (numSeries x numSeries matrices)
Sigma1 = [1 -0.1; -0.1 1];
Sigma2 = [2 -0.2; -0.2 2];
Sigma3 = [3 -0.3; -0.3 3];

%VARX submodels
mdl1 = varm(Constant=C1,AR=AR1,Beta=Beta1,Covariance=Sigma1);
mdl2 = varm(Constant=C2,AR=AR2,Beta=Beta2,Covariance=Sigma2);
mdl3 = varm(Constant=C3,AR=AR3,Beta=Beta3,Covariance=Sigma3);

mdl = [mdl1; mdl2; mdl3];

Создайте модель LSETAR из переключающегося механизма tt и подмодели состояния специфичные mdl. Пометьте серию Y1 и Y2.

Mdl = tsVAR(tt,mdl,SeriesNames=["Y1" "Y2"]);

Предскажите ответы, игнорирующие компонент регрессии

Если вы не снабжаете внешними данными, forecast игнорирует компоненты регрессии в подмоделях.

Получите предварительную выборку, от которой можно предсказать путем симуляции одного 2D пути 100 наблюдений из модели. Задайте эндогенную пороговую переменную и ее задержку, y2,t-4.

rng(1)  % For reproducibility
numObs = 100;
Y0F = simulate(Mdl,numObs,Delay=4,Index=2);

Предскажите модель LSETAR в горизонт с 50 периодами. Задайте эндогенную пороговую переменную и ее задержку.

fh = 50;
YF = forecast(Mdl,Y0F,fh,Index=2,Delay=4);

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

figure;
plot(1:numObs,Y0F(:,1),"b",(numObs+1):(numObs+fh),YF(:,1),"r--")
title("Y1")
legend(["Presample" "Forecasts"])
nexttile

Figure contains an axes object. The axes object with title Y1 contains 2 objects of type line. These objects represent Presample, Forecasts.

plot(1:numObs,Y0F(:,2),"b",(numObs+1):(numObs+fh),YF(:,2),"r--")
legend(["Presample" "Forecasts"])
title("Y2")

Figure contains an axes object. The axes object with title Y2 contains 2 objects of type line. These objects represent Presample, Forecasts.

Симулируйте данные включая компонент регрессии

forecast требует внешних данных для того, чтобы сгенерировать случайные пути из модели.

Примите следующие модели AR для регрессоров:

  • x1,t=1+0.1x1,t-1+ν1,t, где ν1,tΝ(0,1).

  • x2,t=2+0.2x2,t-2+ν2,t, где ν2,tΝ(0,2).

  • x3,t=3+0.3x3,t-3+ν3,t, где ν1,tΝ(0,3).

MdlX1 = arima(Constant=1,AR={0.1},Variance=1);
MdlX2 = arima(Constant=2,AR={0 0.2},Variance=2);
MdlX3 = arima(Constant=3,AR={0 0 0.3},Variance=3);

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

X10F = simulate(MdlX1,numObs);
X20F = simulate(MdlX2,numObs);
X30F = simulate(MdlX3,numObs);
X0F = [X10F X20F X30F];

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

X1F = forecast(MdlX1,numObs,Y0=X10F);
X2F = forecast(MdlX2,numObs,Y0=X20F);
X3F = forecast(MdlX3,numObs,Y0=X30F);
XF = [X1F X2F X3F];

Получите преддемонстрационные данные об ответе, из которых можно предсказать путем симуляции одного 2D пути 100 наблюдений из модели. Задайте эндогенную пороговую переменную и ее задержку, и задайте симулированные внешние данные.

Y0FX = simulate(Mdl,numObs,Delay=4,Index=2,X=X0F);

Предскажите модель LSETAR в горизонт с 50 периодами. Укажите, что эндогенная пороговая переменная и ее задержка, ans задает внешние данные в горизонте прогноза.

YFX = forecast(Mdl,Y0FX,fh,Index=2,Delay=4,X=XF);

figure;
plot(1:numObs,Y0FX(:,1),"b",(numObs+1):(numObs+fh),YFX(:,1),"r--")
title("Y1")
legend(["Presample" "Forecasts"])
nexttile

Figure contains an axes object. The axes object with title Y1 contains 2 objects of type line. These objects represent Presample, Forecasts.

plot(1:numObs,Y0FX(:,2),"b",(numObs+1):(numObs+fh),YFX(:,2),"r--")
legend(["Presample" "Forecasts"])
title("Y2")

Figure contains an axes object. The axes object with title Y2 contains 2 objects of type line. These objects represent Presample, Forecasts.

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

свернуть все

Полностью заданная переключающая порог модель динамической регрессии в виде tsVAR объект модели возвращен tsVAR или estimate. Свойства полностью заданного объекта модели не содержат NaN значения.

Данные об ответе, которые вводят начальные значения для прогнозов в виде numObs- numSeries числовая матрица.

numObs объем выборки. numSeries количество переменных отклика (Mdl.NumSeries).

Строки соответствуют наблюдениям, и последняя строка содержит последнее наблюдение. Столбцы соответствуют отдельным переменным отклика.

Y должен содержать достаточно наблюдений, чтобы инициализировать термины AR всех подмоделей. Для самовозбуждающихся моделей, Y должен также содержать достаточно наблюдений, чтобы инициализировать отсроченную реакцию y j, td.

Прогнозы YF представляйте продолжение Y.

Типы данных: double

Предскажите горизонт или количество моментов времени в период прогноза в виде положительного целого числа.

Типы данных: double

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

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

Пример: 'X',X использует матричный X как внешние данные в горизонте прогноза, чтобы оценить компоненты регрессии в модели.

Тип пороговых данных о переменной в виде значения в этой таблице.

ЗначениеОписание
"endogenous"

Модель является самовозбуждающейся с пороговыми данными о переменной zt=yj,(td),сгенерированный ответом j, где

  • Аргумент 'Delay' значения имени задает задержку d.

  • Аргумент 'Index' значения имени задает j компонента многомерной переменной отклика.

"exogenous"Пороговая переменная является внешней к системе. Аргумент 'Z' значения имени задает пороговые данные о переменной и требуется.

Пример: Type="exogenous",Z=z задает данные z для внешней пороговой переменной.

Пример: Type="endogenous",Index=2,Delay=4 задает эндогенную пороговую переменную как y 2, t −4, чьими данными является Y(:,2).

Типы данных: char | string | cell

Данные о переменной Threshold в горизонте прогноза, для прогнозов типа "exogenous"В виде числового вектора из длины numPeriods.

Типы данных: double

Переменная Threshold задерживает d в y j, td, для прогнозов типа "endogenous"В виде положительного целого числа.

Пример: Delay=4 указывает, что пороговой переменной является y 2, td, где j является значением Index

Типы данных: double

Переменная Threshold индексирует j в y j, td, для прогнозов типа "endogenous"В виде скаляра в 1:Mdl.NumSeries.

forecast игнорирует Index для одномерных моделей AR.

Пример: Index=2 указывает, что пороговой переменной является y 2, td, где d является значением Delay

Типы данных: double

Данные о предикторе в горизонте прогноза раньше оценивали компоненты регрессии во всех подмоделях MdlВ виде числовой матрицы или вектора ячейки из числовых матриц. Первая строка X содержит наблюдения в период после периода, представленного последним наблюдением в Y.

Чтобы использовать подмножество тех же предикторов в каждом состоянии, задайте X как матрица с numPreds столбцы и по крайней мере numPeriods 'Строки' . Столбцы соответствуют отличным переменным предикторам. Подмодели используют первоначальные столбцы связанной матрицы, в порядке, до количества предикторов подмодели. Количество столбцов в Beta свойство Mdl. SubModels (j) определяет количество внешних переменных в компоненте регрессии подмодели j. Если количество строк превышает numPeriodsто forecast использует самые ранние наблюдения.

Чтобы использовать различные предикторы в каждом состоянии, задайте вектор ячейки из таких матриц с длиной numStates.

По умолчанию, forecast игнорирует компоненты регрессии в Mdl.

Типы данных: double

Количество демонстрационных путей, чтобы сгенерировать для симуляции в виде положительного целого числа. Если forecast возвращает только YF, это игнорирует NumPaths.

Пример: NumPaths=1000

Типы данных: double

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

свернуть все

Укажите прогнозы, возвращенные как numPeriods- numSeries числовая матрица.

Если forecast возвращает только YF, представляет пошагово-оптимальные прогнозы. В противном случае, forecast симуляция Монте-Карло использования, чтобы оценить YF.

Ковариации ошибки прогноза, возвращенные как числовой вектор-столбец или числовой массив.

Если подмодели Mdl.SubModels представляйте одномерные модели ARX, EstCov numPeriods- 1 вектор. Если Mdl.SubModels представляйте многомерные модели VARX, EstCov numSeries- numSeries- numPeriods массив.

forecast выполняет симуляцию Монте-Карло, чтобы вычислить EstCov.

Примечание

  • Методы прогнозирования для моделей STAR обсуждены в [6].

  • Прогнозы с одним шагом являются минимальной оптимальной среднеквадратической ошибкой, но могут стать смещенными по расширенным горизонтам [1].

  • Основанные на симуляции прогнозы часто выполняют лучше для расширенных прогнозов [2], [3], [4].

Советы

  • Модели с внешними пороговыми переменными или компонентами регрессии требуют данных 'Z' или 'X', соответственно, в период прогноза. Если такие данные доступны только в период выборки для Y, используйте arima возразите функциям против модели, оценки и прогноза внешний ряд.

Ссылки

[1] Браун, Брайан В. и Роберто С. Мариано. "Предикторы в Динамических Нелинейных Моделях: Поведение большой выборки". Эконометрическая Теория, 5 (декабрь 1989): 430–52. https://doi.org/10.1017/S0266466600012603.

[2] Клементс, Майкл П. и Джереми Смит. "Эффективность Альтернативных Методов прогнозирования для Моделей SETAR". Международный журнал Прогнозирования, 13 (декабрь 1997): 463–75. https://doi.org/10.1016/S0169-2070 (97) 00017-4.

[3] Хиндмен, Роб Дж. "Области Прогноза самой высокой плотности для Нелинейных и Ненормальных Моделей Временных рядов". Журнал Прогнозирования, 14 (сентябрь 1995): 431–41. https://doi.org/10.1002/for.3980140503.

[4] Лин, Jin-легкое и Клайв В. Дж. Грейнджер. "Предсказывая из Нелинейных Моделей на практике". Журнал Прогнозирования, 3 (январь 1994): 1–9. https://doi.org/10.1002/for.3980130102.

[5] Teräsvirta, Tima. "Моделируя экономические отношения с регрессиями плавного перехода". В А. Аллэхэнде и D.E.A. Джайлс (редакторы)., руководство прикладной экономической статистики, 507 — 552. Нью-Йорк: Марсель Деккер, 1998.

[6] ван Дейк, Дик. Модели Плавного перехода: Расширения и Выброс Устойчивый Вывод. Роттердам, Нидерланды: Ряд Исследования Института Тинбергена, 1999.

Смотрите также

Объекты

Функции

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