Моделирование экономики Соединенных Штатов

Этот пример иллюстрирует использование модели векторного исправления ошибок (VEC) как линейная альтернатива Динамическому стохастическому общему равновесию (DSGE) Сметс-Вутерса макроэкономическая модель и применяет многие методы Сметс-Вутерса к описанию экономики Соединенных Штатов.

Кроме того, пример подсвечивает многие более существенные функции нескольких анализа временных рядов, найденного в Econometrics Toolbox™, включая оценку, симуляцию Монте-Карло, фильтрацию, прогнозирование и импульсную функциональность ответа. Пример также иллюстрирует, как определить ранг коинтеграции с помощью комплекта тестов коинтеграции Йохансена, а также наложения ограничений параметра во время оценки.

Модель Сметс-Вутерса ([11], [12], [13]) является нелинейной системой уравнений в форме модели DSGE. Модели DSGE пытаются объяснить совокупное экономическое поведение, такое как рост, деловые циклы и эффекты денежно-кредитной и налоговой политики, с помощью макроэкономических моделей, выведенных от микроэкономических принципов.

Модели DSGE являются динамическими; они учатся, как экономические системы изменяются в зависимости от времени. Модели DSGE являются также стохастическими; они составляют эффекты случайных шоков включая технический прогресс и колебания цен.

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

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

Этот пример реализует традиционную линейную модель прогнозирования. Намерение не состоит в том, чтобы воспроизвести результаты исходной модели Сметс-Вутерса DSGE, ни интерпретировать ее результаты. Скорее этот пример иллюстрирует, как можно использовать функции Econometrics Toolbox, чтобы поддержать рабочий процесс, подобный тому из Сметса и Вутерса [13] использование тех же макроэкономических данных временных рядов.

Этот пример использует cointegrated векторную модель (VAR) авторегрессии, также известную как модель векторного исправления ошибок (VEC), оба из которых поддерживаются различными функциями в Econometrics Toolbox. Эта описательная макроэкономическая модель предлагает хорошую отправную точку, чтобы исследовать влияние различных шоков для экономики Соединенных Штатов, особенно вокруг периода 2 008 финансовых кризисов. Этот пример использует тесты коинтеграции Йохансена и иллюстрирует оценку, симуляцию, фильтрацию и прогнозирование функций VAR и многомерных моделей временных рядов VEC в Econometrics Toolbox. В стиле Сметса и Вутерса, этот пример моделирует те же 7 рядов ответа: выведите (GDP), цены (дефлятор GDP), заработная плата, часы работали, процентные ставки (Федеральные фонды), потребление и инвестиции.

Кроме того, чтобы подсветить манипуляцию и управление ежеквартальными экономическими данными временных рядов, этот пример использует типы данных datetime и timetable.

Получите экономические данные

Файл Data_USEconVECModel.mat содержит соответствующий экономический ряд, сохраненный в двух расписаниях: FRED и CBO. FRED содержит выборку, к которой модель является подходящей и от Федеральной резервной системы экономической базы данных (FRED) [14] в течение периодов 1957:Q1 (31 марта 1957) через 2016:Q4 (31 декабря 2016). CBO из Бюджетного управления Конгресса (CBO) [1] и содержит 10-летние экономические проекции для подмножества серии FRED. CBO находится в горизонте прогноза; этот пример использует наблюдения там для условного прогнозирования и симуляции вне последних данных FRED.

Используемые ряды ответа:

FRED Series   Description
------------  ----------------------------------------------------------------------------
GDP           Gross Domestic Product (USD billions, Quarterly)
GDPDEF        Gross Domestic Product Implicit Price Deflator (Index 2009 = 100, Quarterly)
COE           Paid Compensation of Employees (USD billions, Quarterly)
HOANBS        Nonfarm Business Sector Hours of All Persons (Index 2009 = 100, Quarterly)
FEDFUNDS      Effective Federal Funds Rate (Annualized, Percent, Monthly)
PCEC          Personal Consumption Expenditures (USD billions, Quarterly)
GPDI          Gross Private Domestic Investment (USD billions, Quarterly)
load Data_USEconVECModel

Если у вас есть лицензия Datafeed Toolbox™, то можно загрузить, синхронизироваться и объединить последние экономические данные непосредственно от FRED, чтобы лучше понять более всесторонний рабочий процесс. Чтобы загрузить новые данные непосредственно из FRED, пользователи Datafeed Toolbox могут запустить следующую команду:

FRED = Example_USEconData;

FRED возвращает все данные в начале каждого периода. За исключением Федеральных фондов, FRED возвращает ежеквартальный, ряд с учетом сезонных колебаний в начале каждой четверти. О Федеральных фондах сообщают ежемесячно в начале каждого месяца. Поскольку GDP, неявный ценовой дефлятор находится в модели, этот пример, использует номинальный ряд повсюду.

Для непротиворечивости со Сметсом и Вутерсом, этот пример синхронизирует данные FRED с ежеквартальной периодичностью с помощью соглашения создания отчетов конца четверти.

Например, FRED сообщает 2012:Q1 GDP, датированный 01 января 2012 и 2012:M3 Федеральные фонды, датированные 01 марта 2012. Когда синхронизируется с общей периодичностью конца четверти, оба ряда сопоставлены с 31 марта 2012, в последний день первого квартала 2 012. В течение любого данного года YYYY, данные для Q1, Q2, Q3 и Q4 соответствуют 31 марта YYYY, 30 июня YYYY, 30 сентября YYYY, и 31 декабря YYYY, соответственно.

Преобразуйте необработанные данные

Учитывая необработанные данные от FRED, преобразуйте ряд как в Сметса и Вутерса [13], в котором процентная ставка (FEDFUNDS) неизменна, в то время как остающиеся ряды, которые показывают экспоненциальный рост, выражаются как 100 раз логарифм соответствующего значения, о котором сообщают. Для простоты сохраните те же серийные имена и для сырых данных и для преобразованных данных.

Data = FRED;                        % Assign dates and raw data
Data.GDP = 100*log(FRED.GDP);       % GDP (output)
Data.GDPDEF = 100*log(FRED.GDPDEF); % GDP implicit price deflator
Data.COE = 100*log(FRED.COE);       % Compensation of employees (wages)
Data.HOANBS = 100*log(FRED.HOANBS); % Hours of all persons (hours)
Data.PCEC = 100*log(FRED.PCEC);     % Personal consumption expenditures (consumption)
Data.GPDI = 100*log(FRED.GPDI);     % Gross private domestic investment (investment)

Данные о модели дисплея

Чтобы исследовать данные в модели, постройте каждый ряд и наложите заштрихованные полосы, чтобы идентифицировать периоды экономической рецессии, как определено Национальным бюро экономических исследований (NBER) [9]. Рецессии графиков функций recessionplot и этот пример включают рецессии графических результатов везде, где соответствующее. recessionplot произвольно устанавливает середину месяца как запуск или дата окончания рецессии.

figure
subplot(2,2,1)
plot(Data.Time, [Data.GDP, Data.GDPDEF])
recessionplot
title('GDP & Price Deflator')
ylabel('Logarithm (x100)')
h = legend('GDP','GDPDEF','Location','Best');
h.Box = 'off';

subplot(2,2,2);
plot(Data.Time, [Data.PCEC Data.GPDI])
recessionplot
title('Consumption & Investment')
ylabel('Logarithm (x100)')
h = legend('PCEC','GPDI','Location','Best');
h.Box = 'off';

subplot(2,2,3)
plot(Data.Time, [Data.COE Data.HOANBS])
recessionplot
title('Wages & Hours')
ylabel('Logarithm (x100)')
h = legend('COE','HOANBS','Location','Best');
h.Box = 'off';

subplot(2,2,4)
plot(Data.Time, Data.FEDFUNDS)
recessionplot
title('Federal Funds')
ylabel('Percent')

Обрисуйте в общих чертах подход оценки

Спецификация соответствующей модели VEC может включить личный опыт и знакомство с данными, оперативными исследованиями, промышленной лучшой практикой, регулирующими мандатами и статистической суровостью. Кроме того, образцовая спецификация может быть применена к метрикам в выборке, таким как критерии информации о AIC/BIC, и из выборки производительность прогноза. Несмотря на то, что многие исследователи часто включают элементы всех этих метрик итеративным способом, чтобы сделать, таким образом, здесь выходит за рамки примера.

Учитывая, что Сметс и Вутерс [13] подчеркивают из выборки предсказывающую производительность, этот пример не оценивает меры качества подгонки в выборке. Однако Econometrics Toolbox поддерживает такие оценки (например, смотрите aicbic).

Чтобы понять спецификацию приближаются в этом примере, полезно заметить, что оценка модели VEC продолжает на двух шагах:

  1. Оцените cointegrating отношения. Это часто упоминается как шаг Йохансена. Для неустановившихся временных рядов ранг cointegrating (r) является количеством независимых линейных комбинаций, для которых является стационарным, и может быть свободно интерпретирован как количество отношений долгосрочного равновесия в. Другими словами, несмотря на то, что ряд компонента в может быть индивидуально неустановившимися, различными линейными комбинациями их, являются стационарными. Количество стационарных независимых линейных комбинаций является рангом cointegrating, и соответствующие стационарные линейные комбинации являются cointegrating отношениями.

  2. Оцените модель VAR в различиях с помощью cointegrating отношений первого шага как предикторы. Поскольку включение предикторов добавляет компонент регрессии в модель VAR, это часто упоминается как шаг VARX.

Рабочий процесс для определения соответствующего VEC или cointegrated VAR, модель:

  • Определите продолжительность задержки (P) модели. Независимо от того, предпочитаете ли вы VEC (P-1) форма в различиях или VAR (P) форма на уровнях, P представляет количество преддемонстрационных ответов, должен был инициализировать модель.

  • Определите ранг cointegrating (r).

  • Определите модель коинтеграции что лучшие получения детерминированные условия данных.

Коллективно, эта последовательность определяет cointegrating отношения и соответствует первому шагу двухступенчатого подхода оценки.

Наложите дополнительную структуру на параметры модели VARX:

  • Оцените, что неограниченная модель VARX служит базовой моделью.

  • Определите и наложите подходящие ограничения на параметры модели VARX, включая константу, коэффициенты регрессии и авторегрессивные коэффициенты.

Оцените модель VEC

Сначала задайте продолжительность задержки (P) VEC (P-1) модель. Этот пример проявляет простой подход и принимает руководство Йохансеном [4], p. 4, и Juselius [5], p. 72. Примите, что P = 2 задержки достаточен, чтобы описать динамические взаимодействия между различным рядом.

Преимущество низкого порядка задержки является простотой модели. В частности, каждая дополнительная задержка неограниченной модели VEC требует оценки еще 7*7 = 49 параметров, таким образом, низкий порядок задержки смягчает последствия сверхпараметризации.

Оцените отношения Cointegrating

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

Более общей из двух форм является Йохансен Х* модель, в которой компонент полной константы появляется обе внутренней части () и снаружи () cointegrating отношения, в то время как тренд времени () ограничивается cointegrating отношениями:

Поскольку компонент константы появляется внутри и снаружи cointegrating отношений, полная константа () неограниченна и H*, модель становится:

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

Вторая модель является моделью Johansen H1, в которой образцовая константа также неограниченна, но cointegrating отношения не содержат тренда времени:

Модель H1 подчеркивает неограниченную природу константы:

Заметьте, что модель H1 является ограниченной параметризацией H* модель в этом, модель H1 вводит дополнительный r ограничения для параметров в противном случае неограниченного H* модель. А именно, модели H1 исключают тренды времени в cointegrating отношениях путем ограничения = 0. Эта ситуация, которая может возникнуть, когда cointegrating отношения фланируют общий линейный тренд и наклон тренда, является тем же самым для ряда с линейным трендом.

В обеих моделях ответы

с инновациями

Чтобы определить ранг cointegrating (r), используйте гипотезу Йохансена, тестирующую функциональный jcitest, который реализует тест трассировки Йохансена по умолчанию.

jcitest возвращает логический индикатор решения (h), в котором h = 1 (TRUE) указывает на отклонение пустого указателя ранга коинтеграции (r) в пользу альтернативы и h =, 0 (FALSE) указывают на отказ отклонить пустой указатель. Последующие выходные параметры являются p-значением, тестируют статистическую величину, критическое значение и оценки наибольшего правдоподобия параметров модели VEC для каждого протестированного ранга cointegrating. По умолчанию MATLAB® отображает результаты испытаний в табличной форме.

P = 2;                % The number of VEC(P-1) model lags
Y = Data.Variables;   % Extract all data from the timetable for convenience
[h,pValue,stat,cValue,mleHstar] = jcitest(Y, 'lags', P-1, 'Model', 'H*');
[h,pValue,stat,cValue,mleH1] = jcitest(Y, 'lags', P-1, 'Model', 'H1');
************************
Results Summary (Test 1)

Data: Y
Effective sample size: 238
Model: H*
Lags: 1
Statistic: trace
Significance level: 0.05


r  h  stat      cValue   pValue   eigVal   
----------------------------------------
0  1  266.1410  150.5530 0.0010   0.3470  
1  1  164.7259  117.7103 0.0010   0.2217  
2  1  105.0660  88.8042  0.0028   0.1665  
3  0  61.7326   63.8766  0.0748   0.1323  
4  0  27.9494   42.9154  0.6336   0.0446  
5  0  17.0919   25.8723  0.4470   0.0379  
6  0  7.9062    12.5174  0.2927   0.0327  

************************
Results Summary (Test 1)

Data: Y
Effective sample size: 238
Model: H1
Lags: 1
Statistic: trace
Significance level: 0.05


r  h  stat      cValue   pValue   eigVal   
----------------------------------------
0  1  261.9245  125.6176 0.0010   0.3460  
1  1  160.8737  95.7541  0.0010   0.2212  
2  1  101.3621  69.8187  0.0010   0.1661  
3  1  58.1247   47.8564  0.0045   0.1323  
4  0  24.3440   29.7976  0.1866   0.0446  
5  0  13.4866   15.4948  0.0982   0.0340  
6  1  5.2631    3.8415   0.0219   0.0219  

H* результаты испытаний указывают, что тесту не удается отклонить r = 3 ранга cointegrating на 5%-м уровне значения, но не на 10%-м уровне, на котором r = 4 не удалось бы отклонить (см. p-значения в столбце 5). Для сравнения тесту H1 строго не удается отклонить r = 4 ранга cointegrating на 5%-м уровне. Поэтому появляется, как будто r = 4 cointegrating отношения разумен.

Используя r = 4 как ранг cointegrating, определите, какая из этих двух моделей лучше описывает данные при помощи двух основанных на отношении правдоподобия подходов к тестированию.

Первый подход выполняет тест отношения правдоподобия с помощью функции lratiotest, в которой H* модель является неограниченной моделью, и модель H1 является ограниченной моделью с ограничениями r. Получившаяся тестовая статистическая величина асимптотически, см. [8] p. 342.

Чтобы использовать lratiotest, извлеките loglikelihood значения от предполагаемого H*, и модели H1, возвращенные jcitest для cointegrating, оценивают r = 4, и затем выполняют тест отношения правдоподобия.

r = 4;                   % Cointegrating rank
uLogL = mleHstar.r4.rLL; % Loglikelihood of the unrestricted H* model for r = 4
rLogL = mleH1.r4.rLL;    % Loglikelihood of the restricted H1 model for r = 4

[h,pValue,stat,cValue] = lratiotest(uLogL, rLogL, r)
h =

  logical

   0


pValue =

    0.9618


stat =

    0.6111


cValue =

    9.4877

Тесту не удается отклонить ограниченную модель H1.

Второй подход также выполняет тест отношения правдоподобия, но тестирует пробел, заполненный векторами в cointegrating отношениях с помощью функции jcontest. Следующий тест определяет, можно ли ввести нулевое ограничение (ограничение исключения) на коэффициенте тренда H* модель. А именно, тест исключает тренд времени в cointegrating отношениях и вводит ограничение для целой экономической системы. В сущности это определяет, находится ли ограниченный cointegrating вектор на пробеле стационарности, заполненном матрицей коинтеграции, см. [6] стр 175-178.

H* модель ограничивает линейный тренд времени cointegrating отношениями, и можно оценить один путем добавления дополнительной строки в матрицу коинтеграции. Это более очевидно путем перезаписи H* модель как:

Теперь, отформатируйте матрицу ограничений (R), таким образом что

и проведите тест с помощью jcontest.

R = [zeros(1,size(Y,2))  1]';  % Constraint matrix
[h,pValue,stat,cValue] = jcontest(Y,r,'BCon',R,'Model','H*','Lags',P-1)
h =

  logical

   0


pValue =

    0.9618


stat =

    0.6111


cValue =

    9.4877

jcontest и результаты lratiotest идентичны, то есть, решениям не удается отклонить ограниченную модель H1.

Таким образом, результаты испытаний гипотезы предполагают, что ранг cointegrating равняется 4, и модель имеет H1 Йохансен параметрическая форма. Оценка cointegrating отношений завершена.

Оцените модель VARX в различиях

Можно выразить модель VEC(1) как модель VARX(1) в различиях, в которых cointegrating отношения являются предикторами, и матрица корректировки () является соответствующим коэффициентом регрессии:

Чтобы определить ограничения на параметры модели VARX, важно понять, что параметры коинтеграции Йохансена () оцененный в первом шаге сходятся на уровне, пропорциональном объему выборки. Поэтому использование cointegrating отношений, полученных в первом шаге как предикторы на втором шаге, не влияет на распределение второго шага параметры VARX. Напротив, параметры VARX второго шага асимптотически нормально распределены и сходятся на обычном уровне, и таким образом, можно интерпретировать их t статистику обычным способом.

Когда вы работаете с ежеквартальными экономическими данными, вы должны быть обеспокоены сверхпараметризацией модели относительно объема выборки, доступного для оценки. Это - часть объяснения для работы с низкой продолжительностью задержки.

Оцените базовую модель с помощью функции estimate. Возвратите стандартные погрешности оценок параметра так, чтобы можно было вычислить t статистику и использовать их, чтобы далее ограничить предварительно предполагаемую базовую модель VEC(1).

[Mdl,se] = estimate(vecm(size(Y,2),r,P-1), Y, 'Model', 'H1');

Поскольку ошибки оценки параметра VARX асимптотически нормально распределены, можно смягчить последствие сверхпараметризации и улучшать из выборки предсказывающую производительность исключением (обнуляющего) всех параметров VARX, которые имеют t статистическую величину, которая является меньше чем 2 в абсолютном значении.

Создайте модель VEC той же параметрической формы как базовая модель Mdl, но наложите ограничения исключения на параметры VARX второго шага, которые включают константу (), матрица короткого промежутка времени () и матрица корректировки (). Некоторые ссылки называют ограничения исключения ограничениями подмножества, которые являются особым случаем типа отдельных ограничений, поддержанных моделями VEC и VAR.

toFit = vecm(Mdl.NumSeries, Mdl.Rank, Mdl.P - 1);

toFit.Constant(abs(Mdl.Constant ./ se.Constant) < 2) = 0;
toFit.ShortRun{1}(abs(Mdl.ShortRun{1} ./ se.ShortRun{1}) < 2) = 0;
toFit.Adjustment(abs(Mdl.Adjustment ./ se.Adjustment) < 2) = 0;

Соответствуйте ограниченной модели H1, и затем постройте cointegrating отношения итоговой модели для ссылки.

Fit = estimate(toFit, Y, 'Model', 'H1');

B = [Fit.Cointegration ; Fit.CointegrationConstant' ; Fit.CointegrationTrend'];
figure
plot(Data.Time, [Y ones(size(Y,1),1) (-(Fit.P - 1):(size(Y,1) - Fit.P))'] * B)
recessionplot
title('Cointegrating Relations')

График предполагает, что cointegrating отношения являются приблизительно стационарными, несмотря на то, что периоды энергозависимости и резкого изменения кажутся кластеризованными вокруг экономических рецессий.

Импульсный анализ ответа

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

Вычислите импульсную функцию отклика (IRF) номинального GDP к шоку с одним стандартным отклонением для каждой экономической переменной с помощью функции armairf. По умолчанию armairf отображает ортогонализируемый импульсный ответ, в котором остаточная ковариационная матрица ортогонализируется ее факторизацией Холесского. Функция armairf также поддерживает обобщенный импульсный ответ Песарана и Шина [10], но для номинального GDP результаты подобны в профиле.

Функция armairf возвращает IRF в трехмерном массиве. Каждая страница (третья размерность) получает ответ определенной переменной, в данном горизонте прогноза, к шоку с одним стандартным отклонением для всех переменных в системе. А именно, элемент t, j, k является ответом переменной k во время t в горизонте прогноза к инновационному шоку для переменной j во время 0. Столбцы и страницы соответствуют переменным отклика в данных и t = 0, 1... fh, где fh является длиной горизонта прогноза.

Преобразуйте подходящую модель VEC в ее cointegrated представление VAR при помощи функции преобразования varm. Затем вычислите IRF для 40 четвертей (10 лет).

horizon = 40;

VAR = varm(Fit);
IRF = armairf(VAR.AR, {}, 'InnovCov',  VAR.Covariance, 'NumObs', horizon);

h = figure;
iSeries = 1;            % Column 1 is associated with GDP series
for i = 1:Mdl.NumSeries
    subplot(Mdl.NumSeries,1,i)
    plot(IRF(:,i,iSeries))
    title("GDP Impulse Response to " + Data.Properties.VariableNames(i))
end

screen = get(h,'Parent');
set(h,'Position',[h.Position(1) screen.MonitorPositions(4)*0.1 h.Position(3) screen.MonitorPositions(4)*0.8]);

Несмотря на то, что предыдущие графики отображают импульсный ответ по промежутку 10 лет, каждый ответ на самом деле приближается к установившемуся асимптотическому уровню, указывающему на модульный корень и предполагая, что шоки являются персистентными и имеют постоянные эффекты на номинальный GDP.

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

Чтобы протестировать точность модели, итеративно вычислите прогнозы из выборки. Выполните эксперимент, подобный предложенному Сметсом и Вутерсом [13], стр 21-22:

  1. Оцените модель VEC за начальный 20-летний демонстрационный период 1957:Q1 - 1976:Q4

  2. Предскажите данные 1, 2, 3, и 4 четверти в будущее.

  3. Повторно оцените модель за период 1957:Q1 - 1977:Q1, добавив данные следующего квартала к выборке, таким образом, увеличивающей объем выборки, доступный для оценки.

  4. Повторите шаги 2 и 3, накопив временные ряды прогнозов до конца выборки.

Y = Data;                   % Work directly with the timetable
T0 = datetime(1976,12,31);  % Initialize forecast origin (31-Dec-1976 = (1976,12,31) triplet)
T = T0;
horizon = 4;                % Forecast horizon in quarters (4 = 1 year)
numForecasts = numel(Y.Time(timerange(T,Y.Time(end),'closed'))) - horizon;
yForecast = nan(numForecasts, horizon, Mdl.NumSeries);

for t = 1:numForecasts
%
%   Get the end-of-quarter dates for the current forecast origin.
%
    quarterlyDates = timerange(Y.Time(1), T, 'closed');
%
%   Estimate the VEC model.
%
    Fit = estimate(toFit, Y(quarterlyDates,:).Variables, 'Model', 'H1');
%
%   Forecast the model at each quarter out to the forecast horizon.
%
%   Store the forecasts for the current origin (T) as a 3-D array in which
%   the 1st page stores all forecasts for the 1st series (GDP), the 2nd page
%   stores all forecasts for the 2nd series (GDPDEF), and so forth. This
%   storage convention facilitates the access of data from the timetable
%   of forecasts created below.
%
    yForecast(t,:,:) = forecast(Fit, horizon, Y(quarterlyDates,:).Variables);
%
%   Update the forecast origin to include the data of the next quarter.
%
    T = dateshift(T, 'end', 'quarter', 'next');
end

Вычислите даты источника прогноза, характерные для всех прогнозов в горизонте прогноза и определенных ежеквартальных дат, в которые применяется каждый из прогнозов. Затем создайте расписание, общие метки времени которого (вдоль каждой строки) являются датами каждого ежеквартального источника прогноза. В каждом начале координат прогноза сохраните прогнозы каждой из 7 серий 1, 2, 3, и 4 четвертей в будущее, а также ежеквартальных дат, в которые применяется каждый прогноз. Расписание отформатировано этот способ облегчить доступ к прогнозам данного экономического ряда.

originDates = dateshift(T0, 'end', 'quarter', (0:(numForecasts-1))');

forecastDates = NaT(numForecasts,horizon);
for i = 1:horizon
    forecastDates(:,i) = dateshift(originDates, 'end', 'quarter', i);
end

Forecast = timetable(forecastDates,'RowTimes',originDates, 'VariableNames', {'Times'});
for i = 1:size(Y,2)
    Forecast.(Y.Properties.VariableNames{i}) = yForecast(:,:,i);
end

Используя итеративные прогнозы, только полученные, оцените точность прогноза действительного GDP (номинальный GDP, сетевой из Ценового Дефлятора GDP) путем графического вывода его прогнозов и истинных значений, о которых сообщают, на горизонте прогноза (4 четверти вперед). Кроме того, постройте соответствующие ошибки прогноза.

forecastRealGDP = Forecast.GDP(:,4) - Forecast.GDPDEF(:,4);
realGDP = Y(Forecast.Times(:,4),:).GDP - Y(Forecast.Times(:,4),:).GDPDEF;

figure
subplot(2,1,1)
plot(Forecast.Times(:,4), forecastRealGDP, 'r')
hold on
plot(Forecast.Times(:,4), realGDP, 'b')
title('Real GDP vs. Forecast: 4-Quarters-Ahead')
ylabel('USD Billion')
recessionplot
h = legend('Forecast','Actual','Location','Best');
h.Box = 'off';

subplot(2,1,2)
plot(Forecast.Times(:,4), forecastRealGDP - realGDP)
title('Real GDP Forecast Error: 4-Quarters-Ahead')
ylabel('USD Billion')
recessionplot

Графики иллюстрируют, что во время и вскоре после периодов экономической рецессии прогнозы GDP имеют тенденцию переоценивать истинный GDP. В частности, наблюдайте большие положительные ошибки после финансового кризиса 2 008 и в первую половину из 2 009.

Для ссылки, несмотря на то, что графики не показывают ошибки прогноза неограниченной модели VARX без ограничений исключения, наложенных на постоянный, короткий промежуток времени и параметры корректировки, ограниченные результаты в графиках представляют приблизительно 25-процентное сокращение среднеквадратичной ошибки (RMSE) действительных прогнозов GDP.

Анализ финансового кризиса 2 008: прогнозирование действительного GDP

Исследуйте прогнозы около 2 008 финансовых кризисов более подробно. А именно, исследуйте производительность прогноза только до кризиса как переходы экономики в рецессию, и с другой стороны сразу после кризиса, когда восстановление следует. Для полноты исследуйте поведение прогноза с помощью новых данных.

В стиле Сметса и Вутерса [13], используйте 12 четвертей (3-летний) горизонт прогноза. В попытке включить прогнозы больше, чем один ряд, исследуйте действительный GDP.

Оцените и предскажите действительный GDP 12 четвертей в будущие данные об использовании в конец 2 007, только до ипотечного кризиса.

horizon = 12;  % 12 quarters = 3 years (Table 3 of Smets & Wouters [13])

T = datetime(2007,12,31);  % Forecast origin just prior to the crisis (31-Dec-2007 = (2007,12,31) triplet)
Fit = estimate(toFit, Y(timerange(Y.Time(1),T,'closed'),:).Variables, 'Model', 'H1');
[yForecast, yMSE] = forecast(Fit, horizon, Y(timerange(Y.Time(1),T,'closed'),:).Variables);

sigma = zeros(horizon,1);  % Forecast standard errors
for i = 1:horizon
    sigma(i) = sqrt(yMSE{i}(1,1) - 2*yMSE{i}(1,2) + yMSE{i}(2,2));
end

forecastDates = dateshift(T, 'end', 'quarter', 1:horizon);
figure
plot(forecastDates, (yForecast(:,1) - yForecast(:,2)) + sigma, '-.r')
hold on
plot(forecastDates,  yForecast(:,1) - yForecast(:,2), 'r')
plot(forecastDates, (yForecast(:,1) - yForecast(:,2)) - sigma, '-.r')
plot(forecastDates, Y(forecastDates,:).GDP - Y(forecastDates,:).GDPDEF, 'b')
title("Real GDP vs. 12-Q Forecast: Origin = " + string(T))
ylabel('USD Billion')
recessionplot
h = legend('Forecast +1\sigma', 'Forecast', 'Forecast -1\sigma', 'Actual', 'Location', 'Best');
h.Box = 'off';

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

Оцените и предскажите действительный GDP 12 четвертей в будущие данные об использовании до середины 2 009, который является сразу после ипотечного кризиса.

T = datetime(2009,6,30);  % Forecast origin just after the crisis (30-Jun-2009 = (2009,6,30) triplet)
Fit = estimate(toFit, Y(timerange(Y.Time(1),T,'closed'),:).Variables, 'Model', 'H1');
[yForecast, yMSE] = forecast(Fit, horizon, Y(timerange(Y.Time(1),T,'closed'),:).Variables);

sigma = zeros(horizon,1); % Forecast standard errors
for i = 1:horizon
    sigma(i) = sqrt(yMSE{i}(1,1) - 2*yMSE{i}(1,2) + yMSE{i}(2,2));
end

forecastDates = dateshift(T, 'end', 'quarter', 1:horizon);
figure
plot(forecastDates, (yForecast(:,1) - yForecast(:,2)) + sigma, '-.r')
hold on
plot(forecastDates,  yForecast(:,1) - yForecast(:,2), 'r')
plot(forecastDates, (yForecast(:,1) - yForecast(:,2)) - sigma, '-.r')
plot(forecastDates, Y(forecastDates,:).GDP - Y(forecastDates,:).GDPDEF, 'b')
title("Real GDP vs. 12-Q Forecast: Origin = " + string(T))
ylabel('USD Billion')
h = legend('Forecast +1\sigma', 'Forecast', 'Forecast -1\sigma', 'Actual', 'Location', 'Best');
h.Box = 'off';

Если данные о рецессии включены в оценку, прогнозы действительного GDP соглашаются обоснованно хорошо с истинными значениями. Несмотря на то, что вне 2-летнего горизонта прогноза прогнозы все еще представляют чрезмерно розовое восстановление экономики.

Наконец, включите последние послекризисные доступные данные.

T = dateshift(Data.Time(end), 'end', 'quarter', -horizon);
Fit = estimate(toFit, Y(timerange(Y.Time(1),T,'closed'),:).Variables, 'Model', 'H1');
[yForecast, yMSE] = forecast(Fit, horizon, Y(timerange(Y.Time(1),T,'closed'),:).Variables);

sigma = zeros(horizon,1);        % Forecast standard errors
for i = 1:horizon
    sigma(i) = sqrt(yMSE{i}(1,1) - 2*yMSE{i}(1,2) + yMSE{i}(2,2));
end

forecastDates = dateshift(T, 'end', 'quarter', 1:horizon);
figure
plot(forecastDates, (yForecast(:,1) - yForecast(:,2)) + sigma, '-.r')
hold on
plot(forecastDates,  yForecast(:,1) - yForecast(:,2), 'r')
plot(forecastDates, (yForecast(:,1) - yForecast(:,2)) - sigma, '-.r')
plot(forecastDates, Y(forecastDates,:).GDP - Y(forecastDates,:).GDPDEF, 'b')
title("Real GDP vs. 12-Q Forecast: Origin = " + string(T))
ylabel('USD Billion')
h = legend('Forecast +1\sigma', 'Forecast', 'Forecast -1\sigma', 'Actual', 'Location', 'Best');
h.Box = 'off';

Теперь, когда восстановление развило некоторую скорость и стабилизировалось, 3-летние прогнозы соглашаются более тесно с истинными значениями.

Поддемонстрационная чувствительность: большая инфляция по сравнению с большим модерированием

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

Следуйте за подходом, обрисованным в общих чертах Сметсом и Вутерсом [13], стр 28-29, путем выполнения какой - если анализ чувствительности, называемый нереальным экспериментом. Исследуйте ответ модели, адаптированной к данным за один период к шокам, выведенным из модели, адаптированной по другому.

А именно, Сметс и Вутерс идентифицируют период, заканчивающийся в 1979:Q2 с назначением Пола Волкера как председатель совета управляющих Федеральной резервной системы как Большая Инфляция, и что, начиная 1984:Q1 как Большое Модерирование. Разрыв между Большой Инфляцией и Большим Модерированием является, по-видимому, переходным периодом и включает эти две рецессии в начале 1980-х.

Оцените модель VEC за период 1957:Q1 к 1979:Q2, и с другой стороны от 1984:Q1 до последней четверти, для которой данные доступны. Несмотря на то, что та же оценка модели перед оценкой, выполняемая для полной выборки выше, могла быть повторена для каждой подвыборки, поскольку простота сохраняет ту же модель VEC и ограничения подмножества, используемые ранее.

T1 = datetime(1979,6,30);                     % Last quarter of Great Inflation (30-Jun-1979 = (1979,6,30) triplet)
Y1 = Y(timerange(Y.Time(1),T1,'closed'),:);   % Great Inflation data
[Fit1,~,~,E1] = estimate(toFit, Y1.Variables, 'Model', 'H1');

T2 = datetime(1984,3,31);                     % First quarter of Great Moderation (31-Mar-1984 = (1984,3,31) triplet)
Y2 = Y(timerange(T2,Y.Time(end),'closed'),:); % Great Moderation data
Fit2 = estimate(toFit, Y2.Variables, 'Model', 'H1');

Отфильтруйте выведенные невязки, полученные из первой подвыборки (Большая Инфляция) через модель, полученную из новой подвыборки (Большое Модерирование) использование функции filter.

Чтобы лучше сравнить отфильтрованные ответы, полученные ниже к подходящим результатам Большого Модерирования, полученного выше, инициализируйте фильтр с помощью первых наблюдений P за Большой подвыборкой Модерирования. Другими словами, несмотря на то, что невязки, выведенные из Большой Инфляции, проникают в подобранную модель, полученную из Большого Модерирования, вы инициализируете фильтр с помощью данных с начала Большого Модерирования.

YY = filter(Fit2, E1, 'Y0', Y2(1:Fit2.P,:).Variables, 'Scale', false);
Y2 = Y2((Fit2.P + 1):(size(E1,1) + Fit2.P),:);  % Extract relevant data for convenient comparison
YY = array2timetable(YY, 'RowTimes', Y2.Time, 'VariableNames', Y.Properties.VariableNames);

Сравните действительные данные о GDP, о которых сообщают во время Большого Модерирования полученному путем фильтрации шоков от Большой Инфляции до модели, адаптированной к Большому Модерированию.

figure
plot(YY.Time, Y2.GDP - Y2.GDPDEF, 'b')
hold on
plot(YY.Time, YY.GDP - YY.GDPDEF, 'r')
title('Real GDP Sub-Sample Comparison')
ylabel('USD Billion')
recessionplot
h = legend('Reported Great Moderation Data', 'Filtered Great Inflation Residuals', 'Location', 'Best');
h.Box = 'off';

График предполагает, что отфильтрованные результаты более энергозависимы, чем Большие данные о Модерировании, о которых сообщают, наблюдение, отмеченное Сметсом и Вутерсом [13], p. 30.

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

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

В модели Сметс-Вутерса процентные ставки являются единственным рядом, оставленным неприспособленным. Кроме того, Сметс и Вутерс включают данные только через конец 2 004 до ипотечного кризиса. В конце 2 004 краткосрочных процентных ставок уже были на низких уровнях, все же на самом деле приблизился к нулю в конце 2 008, когда финансовый кризис последовал, и рецессия началась. Несмотря на то, что экономика восстановилась, процентные ставки остались на исторически низких уровнях в течение нескольких лет.

Учитывая, что модели VAR и VEC являются линейными аппроксимациями истинного, все же неизвестного, векторного процесса, зависимость которого получена многомерным Распределением Гаусса, не удивительно столкнуться с отрицательными процентными ставками. На самом деле, несмотря на то, что уровни FEDFUNDS никогда не были отрицательны, другие краткосрочные приносящие проценты учетные записи, особенно в Европе, как было известно, предоставляли отрицательные урожаи.

Условная Forecasting & Simulation

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

Один подход к моделированию экономических временных рядов в присутствии почти нулевых процентных ставок должен выполнить условный прогноз и симуляцию с помощью модели, адаптированной к Большому Модерированию, чтобы собрать последние данные.

А именно, анализ включает 10-летние экономические проекции, полученные из Бюджетного управления Конгресса (CBO) [1], который публикует ежеквартальные прогнозы для следующего подмножества серии FRED:

CBO Series    Description
------------  -----------------------------------------------------------------
GDP           Gross Domestic Product (USD billions)
GDPDEF        Gross Domestic Product Implicit Price Deflator (Index 2009 = 100)
COE           Paid Compensation of Employees (USD billions)
TB3M          3-Month Treasury Bill Rate (Annualized, Percent)

Несмотря на то, что 3-месячный Казначейский вексель и уровни FEDFUNDS не идентичны, в последние годы они фактически неразличимы. Так, можно использовать 3-месячный уровень Казначейского векселя в качестве прокси для уровня FEDFUNDS.

Чтобы получить условные прогнозы, создайте расписание, в котором проекции CBO получают будущую эволюцию известных данных, на которых обусловливаются неизвестные прогнозы. При форматировании расписания значения NaN указывают на неизвестные (недостающие) прогнозы, обусловленные на известной (ненедостающей) информации.

Что касается серии FRED, преобразовываются все серии CBO кроме краткосрочной процентной ставки. Преобразуйте ряд и сохраните их в новом расписании (YF), который получает подмножество ряда, известного заранее, и служит данными, на которых вы вычисляете остающиеся прогнозы.

YF = CBO;                        % Assign the dates and raw data
YF.GDP = 100*log(CBO.GDP);       % GDP (output)
YF.GDPDEF = 100*log(CBO.GDPDEF); % GDP implicit prices deflator
YF.COE = 100*log(CBO.COE);       % Compensation of employees (wages)

Исследуйте последние 4 ежеквартальных проекции CBO и заметьте, что часы, работавшие (HOANBS), потребление (PCEC) и инвестиции (GPDI), отсутствуют (NaNs), потому что CBO не публикует проекции для этих рядов, в то время как GDP, дефлятор GDP (GDPDEF), компенсация (COE) и FEDFUNDS содержит проекции CBO.

YF(end-3:end,:)
ans =

  4x7 timetable

       Time         GDP      GDPDEF     COE      HOANBS    FEDFUNDS    PCEC    GPDI
    ___________    ______    ______    ______    ______    ________    ____    ____

    31-Mar-2027    1023.5     492.1    963.14     NaN        2.8       NaN     NaN 
    30-Jun-2027    1024.4     492.6    964.07     NaN        2.8       NaN     NaN 
    30-Sep-2027    1025.4    493.09    964.99     NaN        2.8       NaN     NaN 
    31-Dec-2027    1026.3    493.59    965.89     NaN        2.8       NaN     NaN 

Сравните прогнозы действительного GDP, выведенного от проекций CBO до полученных из условных прогнозов модели VEC. Чтобы предсказать номинальный GDP условно, установите проекции CBO номинального GDP к NaNs указывать на отсутствие информации относительно номинального GDP. Отобразите последние 4 ежеквартальных проекции.

YF.GDP(:) = NaN;
YF(end-3:end,:)
ans =

  4x7 timetable

       Time        GDP    GDPDEF     COE      HOANBS    FEDFUNDS    PCEC    GPDI
    ___________    ___    ______    ______    ______    ________    ____    ____

    31-Mar-2027    NaN     492.1    963.14     NaN        2.8       NaN     NaN 
    30-Jun-2027    NaN     492.6    964.07     NaN        2.8       NaN     NaN 
    30-Sep-2027    NaN    493.09    964.99     NaN        2.8       NaN     NaN 
    31-Dec-2027    NaN    493.59    965.89     NaN        2.8       NaN     NaN 

Извлеките ежеквартальные проекции CBO вне даты новых данных FRED и предскажите неизвестное серийное условное выражение на проекциях.

Функция forecast преобразовывает модель VEC в свое эквивалентное представление пространства состояний и выводит недостающие прогнозы с помощью Фильтра Калмана. Отсутствующие значения становятся отфильтрованными состояниями, вычисленными как условное ожидание минимальной среднеквадратичной погрешности (MMSE).

forecastQuarters = timerange(Y.Time(end),CBO.Time(end),'openleft');

YF = YF(forecastQuarters,:);
yForecast = forecast(Fit2, size(YF,1), Y.Variables, 'YF', YF.Variables);

yForecast = array2timetable(yForecast, 'RowTimes', YF.Time, 'VariableNames', Y.Properties.VariableNames);

Осмотрите результаты видеть, что недостающий GDP, HOANBS, PCEC и серия GPDI заполняются с их условными прогнозами, в то время как GDPDEF, COE и серия FEDFUNDS, используемая для создания условий, неизменны.

yForecast(end-3:end,:)
ans =

  4x7 timetable

       Time         GDP      GDPDEF     COE      HOANBS    FEDFUNDS     PCEC      GPDI 
    ___________    ______    ______    ______    ______    ________    ______    ______

    31-Mar-2027    1024.1     492.1    963.14    488.27      2.8       987.67    837.48
    30-Jun-2027      1025     492.6    964.07    488.69      2.8        988.6    838.42
    30-Sep-2027    1025.9    493.09    964.99    489.05      2.8        989.5    838.98
    31-Dec-2027    1026.7    493.59    965.89     489.4      2.8       990.38    839.51

Сравните действительный GDP, выведенный от условных прогнозов до выведенного от проекций CBO. Заметьте, что они соглашаются тесно.

figure
plot(YF.Time, 100*log(CBO(forecastQuarters,:).GDP) - YF.GDPDEF, 'b')
hold on
plot(YF.Time, yForecast.GDP - yForecast.GDPDEF, 'r')
title('Real GDP Projection vs. Conditional Forecast')
ylabel('USD Billions')
h = legend('CBO Real GDP Projection', 'Real GDP Conditional Forecast', 'Location', 'Best');
h.Box = 'off';

Условные исследования не ограничиваются прогнозированием одного, и расширьте к симуляции также. Учитывая шаблон NaNs и non-NaNs, найденного в YF, можно приписать неизвестные значения путем выборки от условного выражения, многомерного Распределения Гаусса.

Моделируйте 1 000 условных демонстрационных путей с функцией simulate.

rng default
YY = simulate(Fit2, size(YF,1), 'Y0', Y.Variables, 'YF', YF.Variables, 'NumPaths', 1000);

Постройте, например, первые 10 демонстрационных путей действительного GDP.

figure
for i = 1:10
    plot(YF.Time, YY(:,1,i) - YY(:,2,i))
    hold on
end
title('Real GDP Sample Paths')
ylabel('USD Billion')

График предполагает, что распределение действительного GDP значительно отличается как функция времени, и таким образом, другая метрика интереса является распределением действительного GDP.

Постройте функцию плотности эмпирической вероятности (PDF) действительного GDP 5 лет (20 четвертей) в будущее.

YY = permute(squeeze(YY(20,:,:)), [2 1]);
figure
histogram(YY(:,1) - YY(:,2), 'Normalization', 'pdf')
xlabel('Real GDP (USD Billion)')
title('5-Year-Ahead Density of Real GDP')

Ссылки

  1. Бюджетное управление Конгресса, бюджет и экономические данные, 10-летние экономические проекции, https://www.cbo.gov/about/products/budget-economic-data#4.

  2. Дель Негро, M., Schorfheide, F., Smets, F. и Вутерс, R. (2007), "На Припадке Новых кейнсианских Моделей", Журнал Business & Economic Statistics, Издания 25, № 2, стр 123-162.

  3. Гамильтон, J. D. Анализ timeseries. Принстон, NJ: Издательство Принстонского университета, 1994.

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

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

  6. Кимбол, M. (1995), "Количественная Аналитика Основной неомонетаристской Модели", Журнал Денег, Кредита, и Банковского дела, Части 2: Ликвидность, Денежно-кредитная политика, и Финансовое Посредничество, Издание 27, № 4, стр 1241-1277.

  7. Lutkepohl, H. и Kratzig, M. (2004). Прикладная эконометрика временных рядов, издательство Кембриджского университета.

  8. Lutkepohl, H. Новое введение в несколько анализ временных рядов, Springer-Verlag, 2007.

  9. Национальное бюро экономических исследований (NBER), циклические экономические подъемы и сокращения, https://www.nber.org/cycles/cyclesmain.html.

  10. Pesaran, H. H. и Голень, Y. Обобщенный импульсный анализ ответа в линейных многомерных моделях. Экономические Буквы 58 (1998) 17-29.

  11. Smets, F. и Вутерс, R. (2002), Предполагаемая Стохастическая Динамическая Модель Общего равновесия еврозоны, Европейского центрального банка, Ряда Рабочего документа, № 171. Также в Журнале европейской Экономической Ассоциации, Издания 1, № 5, 2003, стр 1123-1175.

  12. Smets, F. и Вутерс, R. (2004), Сравнение Шоков и Трений в Деловых циклах США и еврозоны: Байесов Подход DSGE, Европейский центральный банк, Ряд Рабочего документа, № 391. Также в Журнале Прикладной Эконометрики, Издания 20, № 1, 2005, стр 161-183.

  13. Smets, F. и Вутерс, R. (2007), Шоки и Трения в Деловых циклах США: Байесов Подход DSGE, Европейский центральный банк, Ряд Рабочего документа, № 722. Также в американском Экономическом Анализе, Издании 97, № 3, 2007, стр 586-606.

  14. Американские Экономические данные Федеральной резервной системы (FRED), Федеральный резервный банк Сент-Луиса, https://fred.stlouisfed.org/.