Ново в

Байесови 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

Искаме да приложим Bayesian 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 се присвоява т.нар. конюгиран приоритет на Minnesota, а на ковариацията на грешката се присвоява обратен приоритет на Wishart. Идеята на Minnesota prior е да се „свият“ коефициентите към някои стойности (често нули или единици за първите коефициенти на собствено закъснение), като същевременно се запазят основните времево зависими връзки в данните. Можете да научите повече за този приоритет в „Обяснение на приоритета на Минесота“ в [BAYES] bayes: var.

Следва доста дълъг списък с резултати. Както ще видим в IRF анализа, резултатите от VAR модела обикновено се интерпретират с помощта на IRF и други функции. Но ние показваме изхода по-долу за пълнота.

В заглавието се съобщава стандартната информация за MCMC процедурата: броят на итерациите на изгаряне, размерът на MCMC извадката и т.н. По подразбиране са зададени 2 500 итерации за изгаряне и 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}

или можем да изчислим статистиката за сходимост на Gelman-Rubin, като използваме множество вериги. Графиката на трасето не показва никаква тенденция, а автокорелацията е ниска. Изглежда, че нашата MCMC е слязла.

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

Изводите от VAR модел се основават на предположението за стабилност на параметрите, което можете да проверите след Bayesian 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.

Персонализиране на подразбиращия се приоритет

По подразбиране конюгираният Minnesota prior на bayes: var свива първите коефициенти на собственото закъснение към единица. (Първият коефициент на собствено закъснение е коефициент за първото закъснение на променливата на резултата в нейното собствено уравнение. В нашия пример има три такива коефициента: {inflation:L1.inflation}, {ogap:L1.ogap} и {fedfunds:L1.fedfunds}.)

Предпоставката по подразбиране е, че за променливата на резултата се приема случаен ход. Това допускане може да е или да не е желаното от вас в зависимост от типа данни. Например при диференцирани данни може да искате да свиете всички коефициенти към нула.

Можем да направим това, като променим спецификацията по подразбиране на опцията minnconjugate(), която задава конюгирания приоритет на Minnesota. Приоритетът по подразбиране предполага приоритетни стойности от единица само за първите коефициенти със собствено закъснение. Приоритетните стойности на останалите коефициенти вече са нули. Така че трябва да посочим нулеви стойности само за първите три коефициента на собствено закъснение. Можем да направим това, като посочим вектор с дължина 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 измерват ефекта от шока в една променлива – импулсна променлива – върху дадена променлива на отговора в определен период от време.

В нашия пример се интересуваме от въздействието на лихвения процент по федералните фондове върху другите резултати в модела. Нека използваме 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 тримесечия.

Вижте също анализа на Bayesian IRF и FEVD.

Динамични прогнози

Моделите VAR се използват често за прогнозиране. Тук ще покажем как да се изчисляват динамични прогнози на Байесов принцип, след като се подбере модел VAR на Байесов принцип.

Създаваме прогнози след bayes: var точно както след var, с изключение на това, че използваме bayesfcast вместо fcast.

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

Нека да изчислим динамична прогноза на Байес за 10 периода от време.

. bayesfcast compute f_, step(10)

Постериорните средни прогнози, заедно с други прогнозни променливи, се записват в набора от данни в променливи с имена на резултатите, предхождани от f_.

Можем да използваме bayesfcast graph, за да изобразим изчислените прогнози.

. bayesfcast graph f_inflation f_ogap f_fedfunds

От тази графика се вижда, че прогнозата ни за инфлацията е малка през първото тримесечие, но след това не е статистически значима. (Достоверните граници от 95% включват нула.) Прогнозираната разлика в производството е отрицателна през първата година и е близка до нулата след това. Прогнозата за лихвения процент по федералните фондове е малка и близка до нулата за всички периоди.

Вижте също динамично прогнозиране по метода на Бейс.

Почистване

След приключване на анализа не забравяйте да премахнете наборите от данни, генерирани от bayes: var и bayesirf, които вече не са ви необходими.

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