forecast

Предскажите ответы модели векторного исправления ошибок (VEC)

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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

  • GDP неявный ценовой дефлятор

  • Заплаченная компенсация сотрудников

  • Несельскохозяйственные часы делового сектора всех людей

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

  • Частные потребительские расходы

  • Грубые частные внутренние инвестиции

Предположим, что cointegrating ранг 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 objects. Axes object 1 with title Gross Domestic Product contains an object of type line. Axes object 2 with title GDP Deflator contains an object of type line. Axes object 3 with title Paid Compensation of Employees contains an object of type line. Axes object 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 objects. Axes object 1 with title Federal Funds Rate contains an object of type line. Axes object 2 with title Consumption Expenditures contains an object of type line. Axes object 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) с помощью краткого синтаксиса. Задайте имена переменных.

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 Йохансен VEC путем удаления cointegrating тренда и линейных терминов тренда из модели. Исключение параметра из оценки эквивалентно наложению ограничений равенства, чтобы обнулить.

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

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 objects. Axes object 1 with title Gross Domestic Product contains 3 objects of type line, patch. These objects represent True, Forecast. Axes object 2 with title GDP Deflator contains 3 objects of type line, patch. These objects represent True, Forecast. Axes object 3 with title Paid Compensation of Employees contains 3 objects of type line, patch. These objects represent True, Forecast. Axes object 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 objects. Axes object 1 with title Federal Funds Rate contains 3 objects of type line, patch. These objects represent True, Forecast. Axes object 2 with title Consumption Expenditures contains 3 objects of type line, patch. These objects represent True, Forecast. Axes object 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);

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) с помощью краткого синтаксиса. Примите, что соответствующий ранг коинтеграции равняется 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 objects. Axes object 1 with title Gross Domestic Product contains 3 objects of type line, patch. These objects represent True, Forecast. Axes object 2 with title GDP Deflator contains 3 objects of type line, patch. These objects represent True, Forecast. Axes object 3 with title Paid Compensation of Employees contains 3 objects of type line, patch. These objects represent True, Forecast. Axes object 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 objects. Axes object 1 with title Federal Funds Rate contains 3 objects of type line, patch. These objects represent True, Forecast. Axes object 2 with title Consumption Expenditures contains 3 objects of type line, patch. These objects represent True, Forecast. Axes object 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 матриц, соответствующих MSEs.

Извлеките основные диагональные элементы из матриц в каждой ячейке 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 objects. Axes object 1 with title Gross Domestic Product contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval. Axes object 2 with title GDP Deflator contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval. Axes object 3 with title Paid Compensation of Employees contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval. Axes object 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 objects. Axes object 1 with title Federal Funds Rate contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval. Axes object 2 with title Consumption Expenditures contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval. Axes object 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- numseries числовая матрица или numpreobs- numseries- 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) инициализировать путь к прогнозированию jy0 должен иметь, по крайней мере, numpaths страницы, и forecast использование только первый numpaths страницы.

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

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

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

Задайте дополнительные разделенные запятой пары 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 (jK)) содержит ответы 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- numpaths*numseries матрица.

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

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

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

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

свернуть все

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

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

Матрицы MSE предсказанных ответов в Y, возвращенный как numperiods- 1 вектор ячейки из numseries- numseries числовые матрицы. Ячейки YMSE составьте временные ряды ковариационных матриц ошибки прогноза. Ячейка j содержит j- период вперед матрица 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- numseries матрица инноваций с нулевым знаком через Mdl. forecast использование заданные преддемонстрационные инновации (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] Гамильтон, анализ временных рядов Джеймса Д. Принстон, NJ: Издательство Принстонского университета, 1994.

[2] Йохансен, S. Основанный на вероятности вывод в векторных авторегрессивных моделях Cointegrated. Оксфорд: Издательство Оксфордского университета, 1995.

[3] Juselius, K. Модель VAR Cointegrated. Оксфорд: Издательство Оксфордского университета, 2006.

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

Введенный в R2017b