Этот пример иллюстрирует использование модели векторного исправления ошибок (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 продолжает на двух шагах:
Оцените cointegrating отношения. Это часто упоминается как шаг Йохансена. Для неустановившихся временных рядов ранг cointegrating (r
) является количеством независимых линейных комбинаций, для которых является стационарным, и может быть свободно интерпретирован как количество отношений долгосрочного равновесия в. Другими словами, несмотря на то, что ряд компонента в может быть индивидуально неустановившимися, различными линейными комбинациями их, являются стационарными. Количество стационарных независимых линейных комбинаций является рангом cointegrating, и соответствующие стационарные линейные комбинации являются cointegrating отношениями.
Оцените модель VAR в различиях с помощью cointegrating отношений первого шага как предикторы. Поскольку включение предикторов добавляет компонент регрессии в модель VAR, это часто упоминается как шаг VARX.
Рабочий процесс для определения соответствующего VEC или cointegrated VAR, модель:
Определите продолжительность задержки (P
) модели. Независимо от того, предпочитаете ли вы VEC (P-1) форма в различиях или VAR (P) форма на уровнях, P
представляет количество преддемонстрационных ответов, должен был инициализировать модель.
Определите ранг cointegrating (r
).
Определите модель коинтеграции что лучшие получения детерминированные условия данных.
Коллективно, эта последовательность определяет cointegrating отношения и соответствует первому шагу двухступенчатого подхода оценки.
Наложите дополнительную структуру на параметры модели VARX:
Оцените, что неограниченная модель VARX служит базовой моделью.
Определите и наложите подходящие ограничения на параметры модели VARX, включая константу, коэффициенты регрессии и авторегрессивные коэффициенты.
Сначала задайте продолжительность задержки (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:
Оцените модель VEC за начальный 20-летний демонстрационный период 1957:Q1 - 1976:Q4
Предскажите данные 1, 2, 3, и 4 четверти в будущее.
Повторно оцените модель за период 1957:Q1 - 1977:Q1, добавив данные следующего квартала к выборке, таким образом, увеличивающей объем выборки, доступный для оценки.
Повторите шаги 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 финансовых кризисов более подробно. А именно, исследуйте производительность прогноза только до кризиса как переходы экономики в рецессию, и с другой стороны сразу после кризиса, когда восстановление следует. Для полноты исследуйте поведение прогноза с помощью новых данных.
В стиле Сметса и Вутерса [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 никогда не были отрицательны, другие краткосрочные приносящие проценты учетные записи, особенно в Европе, как было известно, предоставляли отрицательные урожаи.
Условный анализ тесно связан со стресс-тестированием. А именно, значения подмножества переменных заданы заранее, часто подвергаются неблагоприятным условиям или экстремумам в попытке оценить эффекты на остающихся переменных в периоды экономического кризиса.
Один подход к моделированию экономических временных рядов в присутствии почти нулевых процентных ставок должен выполнить условный прогноз и симуляцию с помощью модели, адаптированной к Большому Модерированию, чтобы собрать последние данные.
А именно, анализ включает 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')
Бюджетное управление Конгресса, бюджет и экономические данные, 10-летние экономические проекции, https://www.cbo.gov/about/products/budget-economic-data#4.
Дель Негро, M., Schorfheide, F., Smets, F. и Вутерс, R. (2007), "На Припадке Новых кейнсианских Моделей", Журнал Business & Economic Statistics, Издания 25, № 2, стр 123-162.
Гамильтон, J. D. Анализ timeseries. Принстон, NJ: Издательство Принстонского университета, 1994.
Йохансен, S. Основанный на вероятности вывод в векторных авторегрессивных моделях Cointegrated. Оксфорд: Издательство Оксфордского университета, 1995.
Juselius, K. Модель VAR Cointegrated. Оксфорд: Издательство Оксфордского университета, 2006.
Кимбол, M. (1995), "Количественная Аналитика Основной неомонетаристской Модели", Журнал Денег, Кредита, и Банковского дела, Части 2: Ликвидность, Денежно-кредитная политика, и Финансовое Посредничество, Издание 27, № 4, стр 1241-1277.
Lutkepohl, H. и Kratzig, M. (2004). Прикладная эконометрика временных рядов, издательство Кембриджского университета.
Lutkepohl, H. Новое введение в несколько анализ временных рядов, Springer-Verlag, 2007.
Национальное бюро экономических исследований (NBER), циклические экономические подъемы и сокращения, https://www.nber.org/cycles/cyclesmain.html.
Pesaran, H. H. и Голень, Y. Обобщенный импульсный анализ ответа в линейных многомерных моделях. Экономические Буквы 58 (1998) 17-29.
Smets, F. и Вутерс, R. (2002), Предполагаемая Стохастическая Динамическая Модель Общего равновесия еврозоны, Европейского центрального банка, Ряда Рабочего документа, № 171. Также в Журнале европейской Экономической Ассоциации, Издания 1, № 5, 2003, стр 1123-1175.
Smets, F. и Вутерс, R. (2004), Сравнение Шоков и Трений в Деловых циклах США и еврозоны: Байесов Подход DSGE, Европейский центральный банк, Ряд Рабочего документа, № 391. Также в Журнале Прикладной Эконометрики, Издания 20, № 1, 2005, стр 161-183.
Smets, F. и Вутерс, R. (2007), Шоки и Трения в Деловых циклах США: Байесов Подход DSGE, Европейский центральный банк, Ряд Рабочего документа, № 722. Также в американском Экономическом Анализе, Издании 97, № 3, 2007, стр 586-606.
Американские Экономические данные Федеральной резервной системы (FRED), Федеральный резервный банк Сент-Луиса, https://fred.stlouisfed.org/.