Nou în

Modele Bayesiane VAR

Modelele autoregresive vectoriale (VAR) studiază relațiile dintre mai multe serii temporale, cum ar fi ratele șomajului și inflației, prin includerea decalajelor variabilelor de rezultat ca predictori de model. Adică, rata actuală a șomajului ar fi modelată folosind ratele șomajului și inflației în perioadele anterioare. Și la fel pentru rata actuală a inflației.
Se știe că modelele VAR au mulți parametri: cu K variabile de rezultat și p lag, există cel puțin K (pK + 1) parametri. Estimarea fiabilă a parametrilor modelului poate fi dificilă, în special cu seturi de date mici.
Puteți utiliza noua comandă bayes: var pentru a potrivi modelele Bayesian VAR care ajută la depășirea acestor provocări prin încorporarea informațiilor anterioare despre parametrii modelului. Acest lucru stabilizează adesea estimarea parametrilor. (Gândiți-vă la o introducere in prealabil a unei anumite cantități de contracție pentru parametrii modelului.)
Puteți investiga influența unei presupuneri de mers aleatoriu asupra rezultatelor, variind parametrii mai multor variații acceptate ale distribuției anterioare inițiale din Minnesota. Puteți verifica presupunerea unei stabilități a parametrilor utilizând noua comandă bayesvarstable. O dată satisfăcut, puteți genera prognoze dinamice utilizând bayesfcast și efectuați funcția impuls-răspuns (IRF) și analiza de descompunere a varianței de prognoză-eroare (FEVD) utilizând bayesirf.

Repere

Estimare

  • Întârzieri implicite sau personalizate
  • Variabile exogene
  • Distribuții anterioare din Minnesota
  • Control flexibil al eșantionării MCMC
  • Lanțuri multiple

Postestimare

  • Diagnosticare MCMC
  • Verifică stabilitatea parametrilor
  • Previziuni dinamice bayesiene
  • Analiza Bayesiană IRF și FEVD
  • Predicții Bayesiene cu un pas înainte
  • Suport complet pentru funcții de postestimare bayesiană

Să vedem cum funcționează

  • Estimarea
  • Verificarea stabilității parametrilor
  • Personalizarea prealabilului implicit
  • Selectarea numărului de întârzieri
  • Analiza IRF
  • Previziuni dinamice
  • Curățare

Estimarea
Luați în considerare macrodatele economice trimestriale ale Rezervei Federale din primul trimestru al anului 1954 până în al patrulea trimestru al anului 2010. Am dori să studiem relația dintre inflație, decalajul de producție și rata fondurilor federale. Dorim să evaluăm modul în care fiecare dintre aceste variabile macroeconomice îi afectează pe ceilalți în timp. În special, suntem interesați de efectele ratei fondului federal controlat de factorii de decizie politică. De asemenea, suntem interesați să obținem prognoze dinamice pentru cele trei variabile de rezultat.
Să analizăm mai întâi datele noastre.

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

. tsset

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

. tsline inflation ogap fedfunds

Dorim să potrivim un model VAR Bayesian pentru a studia relația dintre cele trei variabile. Dacă sunteți deja familiarizat cu comanda var a Stata, care se potrivește cu modelele clasice VAR, montarea modelelor bayesiene va fi deosebit de ușoară. Pur și simplu prefixăm comanda var cu bayes :. Mai jos, specificăm de asemenea o parcelă cu număr aleatoriu pentru reproductibilitate.
Rezultatul de la bayes: var este lung, așa că îl vom descrie în bucăți.

. 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.

Ca și în cazul unui model tradițional VAR, se presupune că probabilitatea este multivariată (trivariabilă în exemplul nostru) normală cu matricea de covarianță a erorii {Sigma, m}. Covarianța de eroare este un parametru model, deci apare în acolade, {}.
Un model Bayesian VAR necesită în plus priorități pentru toți parametrii modelului. bayes: var oferă priorități implicite, dar le puteți modifica pentru a se adapta la analiza dvs.
În mod implicit, coeficienților de regresie VAR li se atribuie așa-numitul Minnesota conjugat anterior, iar covarianței de eroare i se atribuie un Wishart inversat prioritar. Ideea din spatele unui Minnesota anterior este de a „micșora” coeficienții către unele valori (adesea zerouri sau unu pentru primii coeficienți de întârziere), menținând în același timp relațiile subiacente dependente de timp în date. Puteți afla mai multe despre acest prior în Explicarea în prealabil a Minnesotei în [BAYES] bayes: var.Ceea ce urmează în continuare este un rezultat destul de lung de rezultate. După cum vom vedea în analiza IRF, rezultatele dintr-un model VAR sunt de obicei interpretate prin utilizarea IRF și a altor funcții. Dar arătăm rezultatul de mai jos pentru completitudine.
Antetul raportează informațiile standard despre procedura MCMC: numărul de iterații burn-in, dimensiunea eșantionului MCMC și așa mai departe. Valorile implicite sunt 2.500 de iterații burn-in și 10.000 pentru dimensiunea eșantionului MCMC, dar este posibil să aveți nevoie de mai puține sau mai multe în analiză. Deoarece bayes: var folosește eșantionarea Gibbs pentru simulare, rezultatele MCMC vor avea de obicei o eficiență ridicată (aproape de 1); vezi rezultatul de mai jos sub 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

În mod implicit, bayes: var include două decalaje pentru fiecare variabilă de rezultat, dar puteți specifica alte decalaje în opțiunea lags(); vezi selectarea numărului de întârzieri.
După simulare, vă recomandăm să salvați rezultatele MCMC pentru analize ulterioare post-estimare. Cu bayes, acest lucru se poate face fie în timpul, fie după estimare.

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

De asemenea, stocăm rezultatele curente ale estimărilor bayes: var pentru compararea ulterioară a modelului.

. estimates store lag2

Ca și în cazul oricărei metode MCMC, ar trebui să verificăm dacă MCMC converg înainte de a trece la alte analize. Putem folosi verificări grafice,

. bayesgraph diagnostics {inflation:L1.ogap}

sau putem calcula statistica de convergență Gelman-Rubin folosind lanțuri multiple. Trasajul nu prezintă nicio tendință, iar autocorelația este scăzută. MCMC-ul nostru pare să fi convergut.

Verificarea stabilității parametrilor

Inferența dintr-un model VAR se bazează pe presupunerea stabilității parametrilor, pe care o puteți verifica după un model VAR Bayesian utilizând noua comandă 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

Intervalele credibile de 95% pentru modulele individuale de valori proprii nu conțin valori mai mari sau egale cu unu, ceea ce este un semn bun. Și probabilitatea posterioară ca toate valorile proprii să se afle în cercul unității este aproape de unu. Nu avem motive să suspectăm o încălcare a ipotezei de stabilitate.
bayesvarstable.

Personalizarea valorii implicite anterioare

În mod implicit, conjugatul Minnesota înainte de Bayes: var micșorează primul coeficient lag propriu spre unu. (Un prim coeficient de întârziere propriu este un coeficient pentru prima întârziere a variabilei de rezultat din propria ecuație. În exemplul nostru, există trei astfel de coeficienți: {inflație: L1.inflație}, {ogap: L1.ogap} și {fedfunds: L1.fedfunds}.)
Anteriorul implicit favorizează asumarea unei mers aleatoriu pentru variabila rezultat. Această presupunere poate fi sau nu ceea ce doriți, în funcție de tipul de date. De exemplu, cu date diferențiate, poate doriți să micșorați toți coeficienții la zero.
Putem face acest lucru modificând specificația implicită a opțiunii minnconjugate(), care specifică conjugatul Minnesota anterior. Anterior implicit presupune mijloace anterioare doar pentru primii coeficienți de întârziere proprie. Mijloacele anterioare ale celorlalți coeficienți sunt deja zerouri. Deci, trebuie să specificăm zero mijloace numai pentru primii trei coeficienți de întârziere proprie. Putem face acest lucru specificând un vector de lungime 3 de 0s în media de subopțiune mean() a lui 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

Noua specificație anterioară nu pare să schimbe mult rezultatele. Aceasta înseamnă că informațiile conținute în datele observate despre parametrii modelului domină informațiile noastre anterioare.

Selectarea numărului de întârzieri

O selecție de întârziere este un aspect important pentru modelele VAR. Metodele tradiționale, cum ar fi cele care utilizează criteriul AIC, supraestimează adesea numărul de întârzieri. Analiza bayesiană vă permite să calculați o probabilitate reală a fiecărui model având în vedere datele observate – probabilitatea posterioară a modelului.
Pentru a calcula probabilitățile posterioare ale modelului, trebuie mai întâi să ne potrivim toate modelele de interes. Să luăm în considerare unul, doi și trei decalaje aici, dar puteți specifica oricâte modele doriți în propria analiză.
Am stocat deja rezultatele din model cu două decalaje ca lag2. Acum potrivim modele cu unul și trei decalaje și salvăm rezultatele corespunzătoare. Rulăm modelele în liniște.

. 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

Acum folosim bayetest model pentru a calcula probabilitățile posterioare ale modelului. Presupunem că fiecare model este la fel de probabil aprioric (implicit).

. 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.

Modelul cu trei decalaje are cea mai mare probabilitate posterioară dintre cele trei modele considerate.

Analiza IRF

Modelele VAR conțin mulți coeficienți de regresie, ceea ce face dificilă interpretarea rezultatelor din aceste modele. În loc de coeficienți individuali, IRF-urile sunt utilizate pentru a rezuma rezultatele. IRF măsoară efectul unui șoc într-o variabilă, o variabilă de impuls, asupra unei variabile de răspuns date la o anumită perioadă de timp.
În exemplul nostru, suntem interesați de impactul ratei fondurilor federale asupra celorlalte rezultate ale modelului. Să folosim IRF-ul pentru a evalua efectul acestei variabile.
Aici folosim modelul cu trei decalaje pe care le-am selectat în secțiunea anterioară.

. estimates restore lag3
(results lag3 are active now)

Ca și în cazul unei analize IRF standard în Stata, mai întâi creăm rezultate IRF și le salvăm într-un set de date IRF pentru o analiză ulterioară. Pentru analiza IRF după bayes: var, folosim noua comandă bayesirf în loc de comanda existentă irf.
Noua comandă este necesară datorită diferențelor dintre IRF-urile clasice și bayesiene. Pentru o pereche dată de variabile de impuls și răspuns, un IRF frecventist este o singură funcție, în timp ce IRF bayesiene corespund unui eșantion posterior de funcții MCMC. Acest eșantion este rezumat pentru a produce o singură funcție. IRF mediu posterior este raportat în mod implicit, dar puteți calcula IRF median posterior.
În primul rând,folosim bayesirf create pentru a crea rezultate IRF numite birf și pentru a le salva în fișierul IRF birfex.irf.

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

Plotăm IRF-uri cu fedfunds ca variabilă de impuls.

. bayesirf graph irf, impulse(fedfunds)

Acest grafic IRF arată că un șoc asupra ratei fondurilor federale are un efect pozitiv asupra sa, care scade în timp, dar este încă pozitiv după 8 trimestre. Șocul ratei fondurilor federale are un efect redus asupra decalajului de producție și un efect pozitiv mic asupra inflației care se disipează după 2 trimestre.
A se vedea, de asemenea, analiza Bayesian IRF și FEVD.

Previziuni dinamice

Modelele VAR sunt utilizate în mod obișnuit pentru prognoză. Aici arătăm cum să calculăm prognozele dinamice bayesiene după montarea unui model VAR bayesian.
Creăm prognoze după bayes: var la fel cum facem după var, cu excepția faptului că folosim bayesfcast în loc de fcast.
În mod similar cu IRF Bayesian, previziunile Bayesiene corespund eșantionului posterior de prognoze MCMC pentru fiecare perioadă de timp. Prognoza medie posterioară este raportată în mod implicit, dar în schimb puteți calcula prognoza mediană posterioară.
Să calculăm o prognoză dinamică bayesiană la 10 perioade de timp.

. bayesfcast compute f_, step(10)

Previziunile medii posterioare, împreună cu alte variabile de prognoză, sunt salvate în setul de date în variabile cu nume de rezultate prefixate cu f_.
Putem folosi bayesfcast graph pentru a trasa prognozele calculate.

. bayesfcast graph f_inflation f_ogap f_fedfunds

Din acest grafic, prognoza inflației noastre este mică pentru primul trimestru, dar nu este semnificativă statistic după aceea. (Benzile credibile de 95% includ zero.) Decalajul de producție prognozat este negativ pentru primul an și este aproape de zero după aceea. Se estimează că rata fondurilor federale va fi mică și aproape de zero pentru toate perioadele.
A se vedea, de asemenea, prognoza dinamică bayesiană.

Curățare

After your analysis, remember to remove the datasets generated by bayes: var and bayesirf, which you no longer need.

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