Новое в 
Байесовские модели 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) |
Как и в традиционной модели 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 | |
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) |
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 | |
Модель с тремя лагами имеет самую высокую апостериорную вероятность из трех рассмотренных моделей.
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