Новое в

Байесовские модели VAR

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

Известно, что VAR-модели имеют много параметров: при K переменных результатов и p лагов существует по меньшей мере K(pK+1) параметров. Надежная оценка параметров модели может быть сложной задачей, особенно при небольших наборах данных.

Вы можете использовать новую команду bayes: var для подгонки байесовских VAR-моделей, которые помогают преодолеть эти трудности за счет включения предварительной информации о параметрах модели. Это часто стабилизирует оценку параметров. (Считайте, что предварительная информация вводит определенную степень сжатия для параметров модели).

Вы можете исследовать влияние предположения о случайном шаге на результаты, изменяя параметры нескольких поддерживаемых вариаций исходного предварительного распределения Миннесоты. Проверить предположение о стабильности параметра можно с помощью новой команды bayesvarstable. После того как это предположение будет выполнено, вы можете генерировать динамические прогнозы с помощью bayesfcast и выполнять анализ функции импульс-ответ (IRF) и дисперсионного разложения прогноза-ошибки (FEVD) с помощью bayesirf.

Основные моменты

Оценка

  • Задержки по умолчанию или пользовательские
  • Экзогенные переменные
  • Предыдущие распределения в Миннесоте
  • Гибкое управление выборкой MCMC
  • Многочисленные цепи

Пост-оценка

  • Диагностика MCMC
  • Проверка стабильности параметров
  • Байесовские динамические прогнозы
  • Байесовский анализ IRF и FEVD
  • Байесовские прогнозы на один шаг вперед
  • Полная поддержка функций байесовской постоценки

Давайте посмотрим, как это работает

  • Оценка
  • Проверка стабильности параметров
  • Настройка приоритета по умолчанию
  • Выбор количества лагов
  • IRF-анализ
  • Динамические прогнозы
  • Уборка

Оценка
Рассмотрим квартальные экономические макроданные Федеральной резервной системы с первого квартала 1954 года по четвертый квартал 2010 года. Мы хотели бы изучить взаимосвязь между инфляцией, разрывом выпуска и ставкой по федеральным фондам. Мы хотим оценить, как каждая из этих макроэкономических переменных влияет на другие с течением времени. В частности, нас интересует влияние ставки по федеральным фондам, контролируемой политиками. Мы также заинтересованы в получении динамических прогнозов для трех итоговых переменных.

Давайте сначала посмотрим на наши данные.

. webuse usmacro
(Federal Reserve Economic Data - St. Louis Fed)

. tsset

Time variable: date, 1954q3 to 2010q4
        Delta: 1 quarter

. tsline inflation ogap fedfunds

Мы хотим применить байесовскую модель VAR для изучения взаимосвязи между тремя переменными. Если вы уже знакомы с командой var в Stata, которая подгоняет классические VAR-модели, то подгонка байесовских моделей будет особенно простой. Мы просто дополним команду var командой bayes:. Ниже мы также указываем семя случайного числа для воспроизводимости.

Вывод команды bayes: var длинный, поэтому мы будем описывать его по частям.

. bayes, rseed(17): var inflation ogap fedfunds

Burn-in ...
Simulation ...

Model summary
Likelihood:
inflation
ogap
fedfunds ~ mvnormal(3,xb_inflation,xb_ogap,xb_fedfunds,{Sigma,m})
 
Priors:
{inflation:L(1 2).inflation} (1)
{inflation:L(1 2).ogap} (1)
{inflation:L(1 2).fedfunds} (1)
{inflation:_cons} (1)
{ogap:L(1 2).inflation} (2)
{ogap:L(1 2).ogap} (2)
{ogap:L(1 2).fedfunds} (2)
{ogap:_cons} (2)
{fedfunds:L(1 2).inflation} (3)
{fedfunds:L(1 2).ogap} (3)
{fedfunds:L(1 2).fedfunds} (3)
{fedfunds:_cons} ~ varconjugate(3,2,1,_b0,{Sigma,m},_Phi0) (3)
{Sigma,m} ~ iwishart(3,5,_Sigma0)
(1) Parameters are elements of the linear form xb_inflation. (2) Parameters are elements of the linear form xb_ogap. (3) Parameters are elements of the linear form xb_fedfunds.

Как и в традиционной модели VAR, вероятность предполагается многомерной (в нашем примере — трехмерной) нормальной с ковариационной матрицей ошибки {Sigma,m}. Ковариация ошибки является параметром модели, поэтому она заключена в фигурные скобки, {}.

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

По умолчанию коэффициентам регрессии VAR присваивается так называемый сопряженный приоритет Миннесоты, а ковариации ошибок — обратный приоритет Вишарта. Идея приоритета Миннесоты заключается в том, чтобы «уменьшить» коэффициенты до некоторых значений (часто нулей или единиц для первых коэффициентов собственных задержек), сохраняя при этом основные зависимости в данных, зависящие от времени. Вы можете узнать больше об этом приоритете в статье Объяснение приоритета Миннесоты в [BAYES] bayes: var.

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

В заголовке представлена стандартная информация о процедуре MCMC: количество итераций burn-in, размер выборки MCMC и так далее. По умолчанию установлено 2 500 итераций burn-in и 10 000 для размера выборки MCMC, но в вашем анализе может понадобиться меньше или больше. Поскольку bayes: var использует выборку Гиббса для моделирования, результаты MCMC обычно имеют высокую эффективность (близкую к 1); см. результаты ниже в разделе Efficiency:.

Bayesian vector autoregression                   MCMC iterations  =     12,500
Gibbs sampling                                   Burn-in          =      2,500
                                                 MCMC sample size =     10,000
Sample: 1956q1 thru 2010q4                       Number of obs    =        220
                                                 Acceptance rate  =          1
                                                 Efficiency:  min =      .9621
                                                              avg =      .9968
Log marginal-likelihood = -803.40081                          max =          1

Equal-tailed
Mean Std. dev. MCSE Median [95% cred. interval]
inflation
inflation
L1. 1.050509 .0406623 .000407 1.050519 .9709674 1.131497
L2. -.0983798 .038157 .000382 -.0982178 -.1732963 -.0242587
ogap
L1. .0738608 .0326438 .000318 .0738179 .011719 .1383346
L2. -.0047669 .0299874 .000296 -.0044935 -.06365 .0537368
fedfunds
L1. .0717713 .031543 .000315 .0715381 .0111944 .1340734
L2. -.054096 .0285518 .000286 -.0542693 -.1101743 .0019505
_cons .1360559 .0870247 .00087 .1357733 -.0358968 .3071866
ogap
inflation
L1. -.070946 .0504929 .000515 -.0713239 -.1695751 .0279189
L2. .0080639 .0471388 .000471 .0084353 -.0845188 .1001178
ogap
L1. 1.034557 .040881 .000409 1.034394 .9533511 1.113827
L2. -.1038247 .0379861 .00038 -.103874 -.1776099 -.0288752
fedfunds
L1. .0361347 .0388217 .000388 .0359872 -.0390069 .1130978
L2. -.0450505 .0351746 .000352 -.0447803 -.1138243 .0243874
_cons .2129268 .1080613 .001081 .2122609 -.0000164 .4277089
fedfunds
inflation
L1. .0259699 .0538047 .000527 .0256361 -.077736 .1331889
L2. .0468066 .0500692 .000501 .0470046 -.0512646 .1447051
ogap
L1. .1545118 .0437399 .000437 .1542643 .0695918 .2404831
L2. -.0954632 .0401437 .000401 -.0949833 -.1751912 -.0169302
fedfunds
L1. .998348 .0419964 .000425 .998391 .917987 1.080904
L2. -.0806434 .0380157 .00038 -.0804814 -.1541685 -.0075734
_cons .2036804 .1155176 .001155 .2048609 -.0246111 .4297876
Sigma_1_1 .4384999 .0416187 .000422 .435944 .3634841 .5272232
Sigma_2_1 .0569301 .0369788 .00037 .0569781 -.0143685 .1305416
Sigma_3_1 .1559746 .0407611 .000408 .1547395 .079231 .2400816
Sigma_2_2 .6777257 .0647212 .000647 .6736507 .5615162 .8158431
Sigma_3_2 .2506655 .0518798 .000519 .2481628 .1547145 .3596628
Sigma_3_3 .7746199 .0724508 .000725 .7701015 .6465796 .9287891

По умолчанию bayes: var включает два лага для каждой переменной исхода, но вы можете указать другие лаги в опции lags(); см. раздел Выбор количества лагов.

После моделирования вы можете захотеть сохранить результаты MCMC для дальнейшего анализа после оценки. В bayes это можно сделать как во время, так и после оценки.

. bayes, saving(bvarsim2)
note: file bvarsim2.dta saved.

Мы также храним текущие результаты оценки bayes: var для последующего сравнения моделей.

. estimates store lag2

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

. bayesgraph diagnostics {inflation:L1.ogap}

или мы можем вычислить статистику сходимости Гельмана-Рубина, используя несколько цепочек. На графике трассировки нет тенденции, а автокорреляция низкая. Похоже, что наш MCMC сходится.

Проверка стабильности параметров

Вывод из VAR-модели основывается на предположении о стабильности параметров, которое вы можете проверить после Байесовской VAR-модели с помощью новой команды bayesvarstable.

. bayesvarstable

Eigenvalue stability condition                   Companion matrix size =     6
                                                 MCMC sample size      = 10000

Eigenvalue Equal-tailed
modulus Mean Std. dev. MCSE Median [95% cred. interval]
1 .9529782 .01603 .00016 .9533415 .920918 .9840033
2 .9486492 .0188851 .000189 .9504839 .9058018 .9807103
3 .8867184 .0361654 .000362 .8893334 .8093261 .9464411
4 .1746283 .0438198 .000438 .1709831 .0996019 .2688087
5 .1091889 .0400347 .0004 .1057698 .0401139 .1913403
6 .0519465 .0354457 .000354 .0472559 .0019949 .1240763
Pr(eigenvalues lie inside the unit circle) = 0.9978

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

Подробнее об этом предположении вы можете прочитать в [BAYES] bayesvarstable.

Настройка приоритета по умолчанию

По умолчанию сопряженное предшествование Миннесоты в bayes: var уменьшает первые коэффициенты собственных лагов до единицы. (Первый коэффициент собственного запаздывания — это коэффициент для первого запаздывания переменной результата в ее собственном уравнении. В нашем примере таких коэффициентов три: {inflation:L1.inflation}, {ogap:L1.ogap}, и {fedfunds:L1.fedfunds}.)

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

Мы можем сделать это, изменив спецификацию по умолчанию опции minnconjugate(), которая определяет сопряженное предшествование Миннесоты. Приоритет по умолчанию предполагает приоритетные средства, равные единицам, только для первых коэффициентов собственного запаздывания. Приоритетные средства остальных коэффициентов уже равны нулям. Поэтому нам нужно указать нулевые значения только для трех первых коэффициентов собственного запаздывания. Мы можем сделать это, указав вектор длины 3 из нулей в подпараграфе mean() в minnconjprior().

. bayes, rseed(17) minnconjprior(mean(J(1,3,0))): var inflation ogap fedfunds

Burn-in ...
Simulation ...

Model summary
Likelihood:
inflation
ogap
fedfunds ~ mvnormal(3,xb_inflation,xb_ogap,xb_fedfunds,{Sigma,m})
 
Priors:
{inflation:L(1 2).inflation} (1)
{inflation:L(1 2).ogap} (1)
{inflation:L(1 2).fedfunds} (1)
{inflation:_cons} (1)
{ogap:L(1 2).inflation} (2)
{ogap:L(1 2).ogap} (2)
{ogap:L(1 2).fedfunds} (2)
{ogap:_cons} (2)
{fedfunds:L(1 2).inflation} (3)
{fedfunds:L(1 2).ogap} (3)
{fedfunds:L(1 2).fedfunds} (3)
{fedfunds:_cons} ~ varconjugate(3,2,1,(J(1,3,0)),{Sigma,m},_Phi0) (3)
{Sigma,m} ~ iwishart(3,5,_Sigma0)
(1) Parameters are elements of the linear form xb_inflation. (2) Parameters are elements of the linear form xb_ogap. (3) Parameters are elements of the linear form xb_fedfunds. Bayesian vector autoregression MCMC iterations = 12,500 Gibbs sampling Burn-in = 2,500 MCMC sample size = 10,000 Sample: 1956q1 thru 2010q4 Number of obs = 220 Acceptance rate = 1 Efficiency: min = .9633 avg = .9969 Log marginal-likelihood = -921.66714 max = 1
Equal-tailed
Mean Std. dev. MCSE Median [95% cred. interval]
inflation
inflation
L1. .8857357 .0485368 .000485 .885746 .790685 .9824396
L2. .0269907 .0455449 .000455 .0271839 -.0626737 .1155095
ogap
L1. .0761181 .0389651 .00038 .0760672 .0019879 .1531618
L2. .001521 .0357946 .000354 .0018469 -.0686749 .0713939
fedfunds
L1. .098638 .037651 .000377 .0983597 .0262863 .1730537
L2. -.055385 .0340805 .000341 -.0555918 -.1224443 .0115358
_cons .1544722 .1038773 .001039 .1541354 -.0510049 .3581968
ogap
inflation
L1. -.0675691 .0598816 .00061 -.0680522 -.1848906 .0498421
L2. -.0150082 .0559096 .000559 -.0145887 -.1250453 .0939403
ogap
L1. .8719911 .0484592 .000485 .871777 .7757726 .966344
L2. .0249191 .0450373 .00045 .0248376 -.0625478 .1135304
fedfunds
L1. .0631993 .0460222 .00046 .0629379 -.0258211 .1543138
L2. -.0643443 .0417046 .000417 -.0641588 -.1458078 .0178974
_cons .2199806 .128148 .001281 .2193497 -.0318993 .4743479
fedfunds
inflation
L1. .0734435 .0630289 .000617 .073388 -.0487301 .1981055
L2. .0493568 .0586613 .000587 .0494503 -.0655153 .1640052
ogap
L1. .1859435 .0512156 .000512 .185431 .0871488 .2868869
L2. -.1102205 .0469907 .00047 -.1097752 -.203735 -.0180675
fedfunds
L1. .8202078 .049201 .000497 .8202937 .7256878 .9166404
L2. .0450037 .0445312 .000445 .0450415 -.0415155 .1307499
_cons .308838 .1353585 .001354 .310172 .0415897 .5746537
Sigma_1_1 .6247714 .0593237 .000601 .6212457 .5183145 .7517009
Sigma_2_1 .0657255 .0522565 .000523 .0660805 -.034914 .1691783
Sigma_3_1 .1959076 .0566382 .000566 .1943097 .0884963 .3126778
Sigma_2_2 .9525887 .0909202 .000909 .9473281 .7902117 1.146957
Sigma_3_2 .3194013 .0714681 .000715 .3163695 .1868128 .468176
Sigma_3_3 1.062408 .0993678 .000994 1.056211 .8867977 1.273854

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

Выбор количества лагов

Выбор лага является важным моментом для моделей VAR. Традиционные методы, например, использующие критерий AIC, часто переоценивают количество лагов. Байесовский анализ позволяет вычислить фактическую вероятность каждой модели с учетом наблюдаемых данных — апостериорную вероятность модели.

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

Мы уже сохранили результаты модели с двумя лагами как lag2. Теперь мы подгоним модели с одним и тремя лагами и сохраним соответствующие результаты. Мы спокойно запускаем модели.

. quietly bayes, rseed(17) saving(bvarsim1): var inflation ogap fedfunds, lags(1/1)
. estimates store lag1
. quietly bayes, rseed(17) saving(bvarsim3): var inflation ogap fedfunds, lags(1/3)
. estimates store lag3

Теперь мы используем bayestest model для вычисления апостериорных вероятностей моделей. Мы предполагаем, что каждая модель одинаково вероятна априори (по умолчанию).

. bayestest model lag1 lag2 lag3

Bayesian model tests

log(ML) P(M) P(M|y)
lag1 -814.4808 0.3333 0.0000
lag2 -803.4008 0.3333 0.0047
lag3 -798.0420 0.3333 0.9953
Note: Marginal likelihood (ML) is computed using Laplace–Metropolis approximation.

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

IRF-анализ

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

В нашем примере нас интересует влияние ставки по федеральным фондам на другие результаты в модели. Давайте воспользуемся IRF для оценки влияния этой переменной.

Здесь мы используем модель с тремя лагами, которую мы выбрали в предыдущем разделе.

. estimates restore lag3
(results lag3 are active now)

Как и при стандартном IRF-анализе в Stata, мы сначала создаем результаты IRF и сохраняем их в наборе данных IRF для последующего анализа. Для анализа IRF после bayes: var, мы используем новую команду bayesirf вместо существующей команды irf.

Новая команда необходима из-за различий между классическими и байесовскими IRF. Для заданной пары переменных импульса и отклика частотная IRF представляет собой единственную функцию, тогда как байесовские IRF соответствуют апостериорной MCMC-выборке функций. Эта выборка суммируется для получения одной функции. По умолчанию выводится среднее апостериорное значение IRF, но вместо него можно вычислить среднее апостериорное значение IRF.

Сначала мы используем bayesirf create для создания результатов IRF с именем birf и сохраняем их в файле IRF birfex.irf.

. bayesirf create birf, set(birfex)
(file birfex.irf created)
(file birfex.irf now active)
(file birfex.irf updated)

Мы строим график IRF с fedfunds в качестве импульсной переменной.

. bayesirf graph irf, impulse(fedfunds)

Этот график IRF показывает, что шок ставки по федеральным фондам оказывает положительное влияние на саму себя, которое уменьшается со временем, но остается положительным через 8 кварталов. Шок ставки по федеральным фондам оказывает незначительное влияние на разрыв выпуска и небольшой положительный эффект на инфляцию, который рассеивается через 2 квартала.

Также см. Байесовский анализ IRF и FEVD.

Динамические прогнозы

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

Мы строим прогнозы после bayes: var так же, как и после var, только вместо fcast мы используем bayesfcast.

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

Давайте рассчитаем байесовский динамический прогноз на 10 временных периодов.

. bayesfcast compute f_, step(10)

Средние апостериорные прогнозы, вместе с другими прогнозными переменными, сохраняются в наборе данных в переменных с именами результатов с префиксом f_.

Мы можем использовать bayesfcast graph для построения вычисленных прогнозов.

. bayesfcast graph f_inflation f_ogap f_fedfunds

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

Также см. Байесовское динамическое прогнозирование.

Уборка

После анализа не забудьте удалить наборы данных, созданные bayes: var и bayesirf, которые вам больше не нужны.

. erase bvarsim1.dta
. erase bvarsim2.dta
. erase bvarsim3.dta
. erase birfex.irf