forecast

Прогнозные ответы модели коррекции ошибок вектора (VEC)

Описание

пример

Y = forecast(Mdl,numperiods,Y0) возвращает путь прогнозов минимальной квадратичной невязки (MMSE) (Y) по длине numperiods прогнозный горизонт с использованием полностью заданной модели VEC (p - 1) Mdl. Прогнозируемые отклики представляют продолжение предварительных образцов данных Y0.

пример

Y = forecast(Mdl,numperiods,Y0,Name,Value) использует дополнительные опции, заданные одним или несколькими аргументами пары "имя-значение". Для примера, 'X',X,'YF',YF задает X как будущие экзогенные данные предиктора для регрессионного компонента и YF как будущие данные отклика для условного прогнозирования.

пример

[Y,YMSE] = forecast(___) возвращает соответствующую среднюю квадратичную невязку (MSE) каждого прогнозируемого отклика, используя любой из входных параметров в предыдущих синтаксисах.

Примеры

свернуть все

Рассмотрим модель VEC для следующих семи макроэкономических рядов. Затем подбирайте модель к данным и прогнозным откликам на 12 кварталов в будущее.

  • Валовой внутренний продукт (ВВП)

  • Неявный дефлятор цен ВВП

  • Выплаченная компенсация работникам

  • Нерезультатное рабочее время всех лиц

  • Эффективная ставка федеральных средств

  • Расходы на личное потребление

  • Валовые частные внутренние инвестиции

Предположим, что подходят коинтегрирующий ранг 4 и один краткосрочный срок, то есть рассмотрим модель VEC (1).

Загрузите Data_USEconVECModel набор данных.

load Data_USEconVECModel

Для получения дополнительной информации о наборе данных и переменных введите Description в командной строке.

Определите, нужно ли предварительно обработать данные, построив график ряда на отдельных графиках.

figure;
subplot(2,2,1)
plot(FRED.Time,FRED.GDP);
title('Gross Domestic Product');
ylabel('Index');
xlabel('Date');
subplot(2,2,2)
plot(FRED.Time,FRED.GDPDEF);
title('GDP Deflator');
ylabel('Index');
xlabel('Date');
subplot(2,2,3)
plot(FRED.Time,FRED.COE);
title('Paid Compensation of Employees');
ylabel('Billions of $');
xlabel('Date');
subplot(2,2,4)
plot(FRED.Time,FRED.HOANBS);
title('Nonfarm Business Sector Hours');
ylabel('Index');
xlabel('Date');

Figure contains 4 axes. Axes 1 with title Gross Domestic Product contains an object of type line. Axes 2 with title GDP Deflator contains an object of type line. Axes 3 with title Paid Compensation of Employees contains an object of type line. Axes 4 with title Nonfarm Business Sector Hours contains an object of type line.

figure;
subplot(2,2,1)
plot(FRED.Time,FRED.FEDFUNDS);
title('Federal Funds Rate');
ylabel('Percent');
xlabel('Date');
subplot(2,2,2)
plot(FRED.Time,FRED.PCEC);
title('Consumption Expenditures');
ylabel('Billions of $');
xlabel('Date');
subplot(2,2,3)
plot(FRED.Time,FRED.GPDI);
title('Gross Private Domestic Investment');
ylabel('Billions of $');
xlabel('Date');

Figure contains 3 axes. Axes 1 with title Federal Funds Rate contains an object of type line. Axes 2 with title Consumption Expenditures contains an object of type line. Axes 3 with title Gross Private Domestic Investment contains an object of type line.

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

FRED.GDP = 100*log(FRED.GDP);      
FRED.GDPDEF = 100*log(FRED.GDPDEF);
FRED.COE = 100*log(FRED.COE);       
FRED.HOANBS = 100*log(FRED.HOANBS); 
FRED.PCEC = 100*log(FRED.PCEC);     
FRED.GPDI = 100*log(FRED.GPDI);

Создайте модель VEC (1) с помощью синтаксиса shorthand. Задайте имена переменных.

Mdl = vecm(7,4,1);
Mdl.SeriesNames = FRED.Properties.VariableNames;

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

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

EstMdl = estimate(Mdl,FRED.Variables)
EstMdl = 
  vecm with properties:

             Description: "7-Dimensional Rank = 4 VEC(1) Model"
             SeriesNames: "GDP"  "GDPDEF"  "COE"  ... and 4 more
               NumSeries: 7
                    Rank: 4
                       P: 2
                Constant: [14.1329 8.77841 -7.20359 ... and 4 more]'
              Adjustment: [7×4 matrix]
           Cointegration: [7×4 matrix]
                  Impact: [7×7 matrix]
   CointegrationConstant: [-28.6082 109.555 -77.0912 ... and 1 more]'
      CointegrationTrend: [4×1 vector of zeros]
                ShortRun: {7×7 matrix} at lag [1]
                   Trend: [7×1 vector of zeros]
                    Beta: [7×0 matrix]
              Covariance: [7×7 matrix]

EstMdl является расчетным vecm объект модели. Он полностью задан, потому что все параметры имеют известные значения. По умолчанию estimate накладывает ограничения на H1 форму модели Johansen VEC путем удаления коинтегрирующего тренда и линейных терминов тренда из модели. Исключение параметра из оценки эквивалентно наложению ограничений равенства на нуль.

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

numperiods = 12;
Y0 = FRED.Variables;
Y = forecast(EstMdl,numperiods,Y0);

Y - матрица прогнозируемых ответов 12 на 7. Строки соответствуют прогнозному горизонту, а столбцы - переменным в EstMdl.SeriesNames.

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

fh = dateshift(FRED.Time(end),'end','quarter',1:12);

figure;
subplot(2,2,1)
h1 = plot(FRED.Time((end-49):end),FRED.GDP((end-49):end));
hold on
h2 = plot(fh,Y(:,1));
title('Gross Domestic Product');
ylabel('Index (scaled)');
xlabel('Date');
h = gca;
fill([FRED.Time(end) fh([end end]) FRED.Time(end)],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off
subplot(2,2,2)
h1 = plot(FRED.Time((end-49):end),FRED.GDPDEF((end-49):end));
hold on
h2 = plot(fh,Y(:,2));
title('GDP Deflator');
ylabel('Index (scaled)');
xlabel('Date');
h = gca;
fill([FRED.Time(end) fh([end end]) FRED.Time(end)],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off
subplot(2,2,3)
h1 = plot(FRED.Time((end-49):end),FRED.COE((end-49):end));
hold on
h2 = plot(fh,Y(:,3));
title('Paid Compensation of Employees');
ylabel('Billions of $ (scaled)');
xlabel('Date');
h = gca;
fill([FRED.Time(end) fh([end end]) FRED.Time(end)],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off
subplot(2,2,4)
h1 = plot(FRED.Time((end-49):end),FRED.HOANBS((end-49):end));
hold on
h2 = plot(fh,Y(:,4));
title('Nonfarm Business Sector Hours');
ylabel('Index (scaled)');
xlabel('Date');
h = gca;
fill([FRED.Time(end) fh([end end]) FRED.Time(end)],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off

Figure contains 4 axes. Axes 1 with title Gross Domestic Product contains 3 objects of type line, patch. These objects represent True, Forecast. Axes 2 with title GDP Deflator contains 3 objects of type line, patch. These objects represent True, Forecast. Axes 3 with title Paid Compensation of Employees contains 3 objects of type line, patch. These objects represent True, Forecast. Axes 4 with title Nonfarm Business Sector Hours contains 3 objects of type line, patch. These objects represent True, Forecast.

figure;
subplot(2,2,1)
h1 = plot(FRED.Time((end-49):end),FRED.FEDFUNDS((end-49):end));
hold on
h2 = plot(fh,Y(:,5));
title('Federal Funds Rate');
ylabel('Percent');
xlabel('Date');
h = gca;
fill([FRED.Time(end) fh([end end]) FRED.Time(end)],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off
subplot(2,2,2)
h1 = plot(FRED.Time((end-49):end),FRED.PCEC((end-49):end));
hold on
h2 = plot(fh,Y(:,6));
title('Consumption Expenditures');
ylabel('Billions of $ (scaled)');
xlabel('Date');
h = gca;
fill([FRED.Time(end) fh([end end]) FRED.Time(end)],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off
subplot(2,2,3)
h1 = plot(FRED.Time((end-49):end),FRED.GPDI((end-49):end));
hold on
h2 = plot(fh,Y(:,7));
title('Gross Private Domestic Investment');
ylabel('Billions of $ (scaled)');
xlabel('Date');
h = gca;
fill([FRED.Time(end) fh([end end]) FRED.Time(end)],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off

Figure contains 3 axes. Axes 1 with title Federal Funds Rate contains 3 objects of type line, patch. These objects represent True, Forecast. Axes 2 with title Consumption Expenditures contains 3 objects of type line, patch. These objects represent True, Forecast. Axes 3 with title Gross Private Domestic Investment contains 3 objects of type line, patch. These objects represent True, Forecast.

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

Загрузите Data_USEconVECModel набор данных и предварительная обработка данных.

load Data_USEconVECModel
FRED.GDP = 100*log(FRED.GDP);      
FRED.GDPDEF = 100*log(FRED.GDPDEF);
FRED.COE = 100*log(FRED.COE);       
FRED.HOANBS = 100*log(FRED.HOANBS); 
FRED.PCEC = 100*log(FRED.PCEC);     
FRED.GPDI = 100*log(FRED.GPDI);

The Data_Recessions набор данных содержит начальные и конечные последовательные даты спада. Загрузите набор данных. Преобразуйте матрицу серийных номеров дат в массив datetime.

load Data_Recessions
dtrec = datetime(Recessions,'ConvertFrom','datenum');

Создайте фиктивную переменную, которая определяет периоды, в которые США находились в рецессии или хуже. В частности, переменная должна быть 1 если FRED.Time происходит во время рецессии, и 0 в противном случае.

isin = @(x)(any(dtrec(:,1) <= x & x <= dtrec(:,2)));
isrecession = double(arrayfun(isin,FRED.Time));

Создайте модель VEC (1) с помощью синтаксиса shorthand. Предположим, что соответствующий ранг коинтеграции равен 4. Вы не должны задавать наличие регрессионного компонента при создании модели. Задайте имена переменных.

Mdl = vecm(7,4,1);
Mdl.SeriesNames = FRED.Properties.VariableNames;

Оцените модель, используя все, кроме последних трех лет данных. Укажите предиктор, идентифицирующий, было ли измерено наблюдение во время рецессии.

bfh = FRED.Time(end) - years(3);
estIdx = FRED.Time < bfh;
EstMdl = estimate(Mdl,FRED{estIdx,:},'X',isrecession(estIdx));

Прогнозируйте путь ежеквартальных ответов на три года в будущее.

Y0 = FRED{estIdx,:};
Y = forecast(EstMdl,12,Y0,'X',isrecession(~estIdx));

Y является матрицей 12 на 7 симулированные отклики. Строки соответствуют прогнозному горизонту, а столбцы - переменным в EstMdl.SeriesNames.

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

figure;
subplot(2,2,1)
h1 = plot(FRED.Time((end-39):end),FRED.GDP((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,1));
title('Gross Domestic Product');
ylabel('Index (scaled)');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off
subplot(2,2,2)
h1 = plot(FRED.Time((end-39):end),FRED.GDPDEF((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,2));
title('GDP Deflator');
ylabel('Index (scaled)');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off
subplot(2,2,3)
h1 = plot(FRED.Time((end-39):end),FRED.COE((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,3));
title('Paid Compensation of Employees');
ylabel('Billions of $ (scaled)');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off
subplot(2,2,4)
h1 = plot(FRED.Time((end-39):end),FRED.HOANBS((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,4));
title('Nonfarm Business Sector Hours');
ylabel('Index (scaled)');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off

Figure contains 4 axes. Axes 1 with title Gross Domestic Product contains 3 objects of type line, patch. These objects represent True, Forecast. Axes 2 with title GDP Deflator contains 3 objects of type line, patch. These objects represent True, Forecast. Axes 3 with title Paid Compensation of Employees contains 3 objects of type line, patch. These objects represent True, Forecast. Axes 4 with title Nonfarm Business Sector Hours contains 3 objects of type line, patch. These objects represent True, Forecast.

figure;
subplot(2,2,1)
h1 = plot(FRED.Time((end-39):end),FRED.FEDFUNDS((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,5));
title('Federal Funds Rate');
ylabel('Percent');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off
subplot(2,2,2)
h1 = plot(FRED.Time((end-39):end),FRED.PCEC((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,6));
title('Consumption Expenditures');
ylabel('Billions of $ (scaled)');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off
subplot(2,2,3)
h1 = plot(FRED.Time((end-39):end),FRED.GPDI((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,7));
title('Gross Private Domestic Investment');
ylabel('Billions of $ (scaled)');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2],'True','Forecast','Location','Best')
hold off

Figure contains 3 axes. Axes 1 with title Federal Funds Rate contains 3 objects of type line, patch. These objects represent True, Forecast. Axes 2 with title Consumption Expenditures contains 3 objects of type line, patch. These objects represent True, Forecast. Axes 3 with title Gross Private Domestic Investment contains 3 objects of type line, patch. These objects represent True, Forecast.

Анализ точности прогноза с помощью интервалов прогноза на трехлетнем горизонте. Этот пример следует из Прогнозирования Безусловного Ряда Отклика из Модели VEC.

Загрузите Data_USEconVECModel набор данных и предварительная обработка данных.

load Data_USEconVECModel
FRED.GDP = 100*log(FRED.GDP);      
FRED.GDPDEF = 100*log(FRED.GDPDEF);
FRED.COE = 100*log(FRED.COE);       
FRED.HOANBS = 100*log(FRED.HOANBS); 
FRED.PCEC = 100*log(FRED.PCEC);     
FRED.GPDI = 100*log(FRED.GPDI);

Оцените модель VEC (1). Резервируйте последние три года данных для оценки точности прогноза. Предположим, что соответствующий ранг коинтеграции равен 4, и H1 форма Йохансена подходит для модели .

bfh = FRED.Time(end) - years(3);
estIdx = FRED.Time < bfh;
Mdl = vecm(7,4,1);
Mdl.SeriesNames = FRED.Properties.VariableNames;
EstMdl = estimate(Mdl,FRED{estIdx,:});

Прогнозные отклики от предполагаемой модели на трехлетний горизонт. Задайте все наблюдения в выборке как предварительная выборка. Возвращает MSE прогнозов.

numperiods = 12;
Y0 = FRED{estIdx,:};
[Y,YMSE] = forecast(EstMdl,numperiods,Y0);

Y - матрица прогнозируемых ответов 12 на 7. YMSE является вектором камеры 12 на 1 из матриц 7 на 7, соответствующих MSE.

Извлеките основные диагональные элементы из матриц в каждой камере YMSE. Примените квадратный корень результата, чтобы получить стандартные ошибки.

extractMSE = @(x)diag(x)';
MSE = cellfun(extractMSE,YMSE,'UniformOutput',false);
SE = sqrt(cell2mat(MSE));

Оцените примерно 95% интервалов прогноза для каждой серии ответов.

YFI = zeros(numperiods,Mdl.NumSeries,2);

YFI(:,:,1) = Y - 2*SE;
YFI(:,:,2) = Y + 2*SE;

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

figure;
subplot(2,2,1)
h1 = plot(FRED.Time((end-39):end),FRED.GDP((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,1));
h3 = plot(FRED.Time(~estIdx),YFI(:,1,1),'k--');
plot(FRED.Time(~estIdx),YFI(:,1,2),'k--');
title('Gross Domestic Product');
ylabel('Index (scaled)');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2 h3],'True','Forecast','95% Forecast interval',...
    'Location','best');
hold off
subplot(2,2,2)
h1 = plot(FRED.Time((end-39):end),FRED.GDPDEF((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,2));
h3 = plot(FRED.Time(~estIdx),YFI(:,2,1),'k--');
plot(FRED.Time(~estIdx),YFI(:,2,2),'k--');
title('GDP Deflator');
ylabel('Index (scaled)');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2 h3],'True','Forecast','95% Forecast interval',...
    'Location','best');
hold off
subplot(2,2,3)
h1 = plot(FRED.Time((end-39):end),FRED.COE((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,3));
h3 = plot(FRED.Time(~estIdx),YFI(:,3,1),'k--');
plot(FRED.Time(~estIdx),YFI(:,3,2),'k--');
title('Paid Compensation of Employees');
ylabel('Billions of $ (scaled)');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2 h3],'True','Forecast','95% Forecast interval',...
    'Location','best');
hold off
subplot(2,2,4)
h1 = plot(FRED.Time((end-39):end),FRED.HOANBS((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,4));
h3 = plot(FRED.Time(~estIdx),YFI(:,4,1),'k--');
plot(FRED.Time(~estIdx),YFI(:,4,2),'k--');
title('Nonfarm Business Sector Hours');
ylabel('Index (scaled)');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2 h3],'True','Forecast','95% Forecast interval',...
    'Location','best');
hold off

Figure contains 4 axes. Axes 1 with title Gross Domestic Product contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval. Axes 2 with title GDP Deflator contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval. Axes 3 with title Paid Compensation of Employees contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval. Axes 4 with title Nonfarm Business Sector Hours contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval.

figure;
subplot(2,2,1)
h1 = plot(FRED.Time((end-39):end),FRED.FEDFUNDS((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,5));
h3 = plot(FRED.Time(~estIdx),YFI(:,5,1),'k--');
plot(FRED.Time(~estIdx),YFI(:,5,2),'k--');
title('Federal Funds Rate');
ylabel('Percent');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2 h3],'True','Forecast','95% Forecast interval',...
    'Location','best');
hold off
subplot(2,2,2)
h1 = plot(FRED.Time((end-39):end),FRED.PCEC((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,6));
h3 = plot(FRED.Time(~estIdx),YFI(:,6,1),'k--');
plot(FRED.Time(~estIdx),YFI(:,6,2),'k--');
title('Consumption Expenditures');
ylabel('Billions of $ (scaled)');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2 h3],'True','Forecast','95% Forecast interval',...
    'Location','best');
hold off
subplot(2,2,3)
h1 = plot(FRED.Time((end-39):end),FRED.GPDI((end-39):end));
hold on
h2 = plot(FRED.Time(~estIdx),Y(:,7));
h3 = plot(FRED.Time(~estIdx),YFI(:,7,1),'k--');
plot(FRED.Time(~estIdx),YFI(:,7,2),'k--');
title('Gross Private Domestic Investment');
ylabel('Billions of $ (scaled)');
xlabel('Date');
h = gca;
fill([bfh h.XLim([2 2]) bfh],h.YLim([1 1 2 2]),'k',...
    'FaceAlpha',0.1,'EdgeColor','none');
legend([h1 h2 h3],'True','Forecast','95% Forecast interval',...
    'Location','best');
hold off

Figure contains 3 axes. Axes 1 with title Federal Funds Rate contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval. Axes 2 with title Consumption Expenditures contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval. Axes 3 with title Gross Private Domestic Investment contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval.

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

свернуть все

Модель VEC, заданная как vecm объект модели, созданный vecm или estimate. Mdl должен быть полностью задан.

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

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

Примитивируйте отклики, которые обеспечивают начальные значения для прогнозов, заданные как numpreobs-by- numseries числовая матрица или numpreobs-by- numseries-by- numprepaths числовой массив.

numpreobs - количество предварительных наблюдений. numseries Количество серий отклика (Mdl.NumSeries). numprepaths - количество предварительно выбранных путей отклика.

Строки соответствуют предварительным образцам наблюдений, а последняя строка содержит последнее наблюдение. Y0 должен содержать не менее Mdl.P строки. Если вы поставляете больше строк, чем нужно, forecast использует только последние Mdl.P наблюдения.

Столбцы должны соответствовать именам ответных рядов в Mdl.SeriesNames.

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

  • Если вы не задаете YF аргумент пары "имя-значение", затем forecast инициализирует каждый прогнозируемый путь (страницу) с помощью соответствующей страницы Y0. Поэтому выходной аргумент Y имеет numprepaths страниц.

  • Если вы задаете YF аргумент пары "имя-значение", затем forecast выполняет одно из таких действий.

    • Если Y0 является матрицей, тогда forecast инициализирует каждый путь прогноза (страница) в YF использование Y0. Поэтому все пути в выходном аргументе Y получают из общих начальных условий.

    • В противном случае, forecast применяется Y0 (:,:, j) для инициализации пути прогнозирования j. Y0 должно иметь по крайней мере numpaths страниц, и forecast использует только первое numpaths страниц.

    Среди всех страниц наблюдения в определенной строке происходят одновременно.

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

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

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

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

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

numpreds - количество переменных предиктора (size(Mdl.Beta,2)).

Строки соответствуют наблюдениям. Строка j содержит j-теплового прогноза. X должно иметь по крайней мере numperiods строки. Если вы поставляете больше строк, чем нужно, forecast использует только самую раннюю numperiods наблюдения. Первая строка содержит самое раннее наблюдение.

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

forecast применяется X на каждый путь (страницу); то есть X представляет один путь наблюдаемых предикторов.

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

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

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

Будущий многомерный ряд отклика для условного прогнозирования, заданный как разделенная разделенными запятой парами, состоящая из 'YF' и числовую матрицу или трехмерный массив, содержащую numseries столбцы.

Строки соответствуют наблюдениям в прогнозном горизонте, а первая строка является самым ранним наблюдением. В частности, строка j в пути расчета k (YF (j:, k)) содержит ответы j периоды в будущее. YF должно иметь по крайней мере numperiods строки для покрытия прогнозируемого горизонта. Если вы поставляете больше строк, чем нужно, forecast использует только первое numperiods строки.

Столбцы соответствуют переменным отклика в Y0.

Страницы соответствуют образцам путей. В частности, путь k (YF (:,:, k)) захватывает состояние, или знание, серии откликов по мере их развития из предварительной выборки прошлого (Y0) в будущее.

  • Если YF является матрицей, тогда forecast применяется YF каждому из numpaths выходные пути (см. Y0).

  • В противном случае YF должно иметь по крайней мере numpaths страниц. Если вы поставляете больше страниц, чем нужно, forecast использует только первое numpaths страниц.

Элементы YF могут быть числовыми скалярами или отсутствующими значениями (обозначенными NaN значения). forecast рассматривает числовые скаляры как детерминированные будущие отклики, которые известны заранее, например, заданные политикой. forecast прогнозирует ответы для соответствующих NaN значения, обусловленные известными значениями.

По умолчанию YF - массив, состоящий из NaN значения, указывающие на полное отсутствие знаний о будущем состоянии всех откликов в прогнозном горизонте. В этом случае, forecast оценивает обычные прогнозы MMSE.

Для получения дополнительной информации см. «Алгоритмы».

Пример: Рассмотрите прогнозирование одного пути модели VEC, состоящей из четырех серий ответов, трех периодов в будущее. Предположим, что у вас есть предыдущие знания о некоторых будущих значениях ответов, и вы хотите предсказать неизвестные ответы, обусловленные вашими знаниями. Задайте YF как матрица, содержащая значения, которые вы знаете и используете NaN для значений, которые вы не знаете, но хотите предсказать. Для примера, 'YF',[NaN 2 5 NaN; NaN NaN 0.1 NaN; NaN NaN NaN NaN] указывает, что вы не знаете о будущих значениях первой и четвертой серии ответов; вы знаете значение для периода 1 во втором ряду ответов, но не знаете другого значения; и вы знаете значения для периодов 1 и 2 в третьей серии ответов, но не значение для периода 3.

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

Примечание

NaN значения в Y0 и X указать отсутствующие значения. forecast удаляет отсутствующие значения из данных путем перечисленного удаления. Если Y0 является трехмерный массив, тогда forecast выполняет эти шаги.

  1. Горизонтальная конкатенация страниц для формирования numpreobs-by- numpaths*numseries матрица.

  2. Удалите любую строку, содержащую по крайней мере одну NaN из конкатенированных данных.

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

Для отсутствующих значений в X, forecast удаляет соответствующую строку с каждой страницы YF. После удаления строки из X и YF, если количество строк меньше numperiods, затем forecast выдает ошибку.

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

свернуть все

Прогнозы MMSE многомерной серии ответов, возвращенные как numobs-by- numseries числовая матрица или numobs-by- numseries-by- numpaths числовой массив. Y представляет продолжение настроек presample в Y0. Строки соответствуют наблюдениям, столбцы соответствуют переменным отклика, а страницы соответствуют путям расчета. Строка j является j-период-опережающий прогноз.

Если вы задаете будущие отклики для условного прогнозирования с помощью YF аргумент пары "имя-значение", затем известные значения в YF появляются на тех же позициях в Y. Однако Y содержит прогнозные значения для отсутствующих наблюдений в YF.

Матрицы MSE прогнозируемых ответов в Y, возвращается как numperiods-by-1 вектор камеры numseries-by- numseries числовые матрицы. Камеры YMSE составьте временные ряды ковариационных матриц прогнозной ошибки. Камеры j содержит j-period-award MSE матрица.

YMSE идентичен для всех путей.

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

Алгоритмы

  • forecast оценивает безусловные прогнозы используя уравнение

    Δy^t=A^B^y^t1+Φ^1Δy^t1+...+Φ^pΔy^tp+c^+d^t+xtβ^,

    где t = 1,..., numperiods. forecast фильтрует numperiods-by- numseries матрица нулевых инноваций посредством Mdl. forecast использует указанные нововведения presample (Y0) при необходимости.

  • forecast оценивает условные прогнозы с помощью фильтра Калмана.

    1. forecast представляет модель VEC Mdl как модель пространства состояний (ssm объект модели) без ошибки наблюдения.

    2. forecast фильтрует прогнозные данные YF через модель пространства состояний. В период t в прогнозном горизонте, любой неизвестный ответ

      Δy^t=A^B^y^t1+Φ^1Δy^t1+...+Φ^pΔy^tp+c^+d^t+xtβ^,

      где y^s, s < t, является отфильтрованной оценкой y по периодам s в прогнозном горизонте. forecast использует заданные значения предварительной выборки в Y0 для периодов перед прогнозным горизонтом.

    Для получения дополнительной информации см. filter и [4], стр. 612 и 615.

  • Путь forecast определяет numpaths, количество страниц в выходном аргументе Y, зависит от типа прогноза.

    • Если вы оцениваете безусловные прогнозы, что означает, что вы не задаете аргумент пары "имя-значение" YF, затем numpaths количество страниц в входной параметр Y0.

    • Если вы оцениваете условные прогнозы и Y0 и YF иметь более одной страницы, тогда numpaths количество страниц в массиве с меньшим количеством страниц. Если количество страниц в Y0 или YF превышает numpaths, затем forecast использует только первое numpaths страниц.

    • Если вы оцениваете условные прогнозы и Y0 или YF имеет одну страницу, затем numpaths количество страниц в массиве с наибольшим количеством страниц. forecast использует массив с одной страницей для каждого пути.

  • forecast устанавливает временный источник моделей, которые включают линейные временные тренды (t 0) в size(Y0,1)Mdl.P (после удаления отсутствующих значений). Поэтому время в компоненте тренда: t = t 0 + 1, t 0 + 2,..., t 0 + numobs. Это соглашение согласуется с поведением по умолчанию оценки модели, в которой estimate удаляет первый Mdl.P ответы, уменьшение эффективного размера выборки. Хотя forecast явно использует первое Mdl.P примитивируйте отклики в Y0 чтобы инициализировать модель, общее количество наблюдений (исключая отсутствующие значения) определяет t 0.

Ссылки

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

[2] Йохансен, С. Основанный на вероятностях вывод в коинтегрированных векторных авторегрессивных моделях. Oxford: Oxford University Press, 1995.

[3] Juselius, K. Cointegrated VAR Model. Oxford: Oxford University Press, 2006.

[4] Lütkepohl, H. Новое введение в анализ нескольких временных рядов. Берлин: Спрингер, 2005.

См. также

Объекты

Функции

Введенный в R2017b