Novinky ve

Bayesovské modely VAR

Vektorové autoregresní modely (VAR) zkoumají vztahy mezi více časovými řadami, jako je míra nezaměstnanosti a inflace, a to tak, že jako prediktory modelu zahrnují zpoždění výsledných proměnných. To znamená, že současná míra nezaměstnanosti by byla modelována pomocí míry nezaměstnanosti a míry inflace v předchozích obdobích. A podobně pro současnou míru inflace.

Je známo, že modely VAR mají mnoho parametrů: při K výsledných proměnných a p zpožděních existuje nejméně K(pK+1) parametrů. Spolehlivý odhad parametrů modelu může být náročný, zejména u malých souborů dat.

K fitování bayesovských modelů VAR, které pomáhají tyto problémy překonat tím, že zahrnují předběžné informace o parametrech modelu, můžete použít nový příkaz bayes: var. To často stabilizuje odhad parametrů. (Představte si prioritu jako zavedení určité míry smrštění parametrů modelu.)

Vliv předpokladu náhodné chůze na výsledky můžete zkoumat změnou parametrů několika podporovaných variant původního Minnesotova rozdělení prior. Předpoklad stability parametrů můžete ověřit pomocí nového příkazu bayesvarstable. Po splnění této podmínky můžete generovat dynamické předpovědi pomocí příkazu bayesfcast a provádět analýzu funkce impulsu a odezvy (IRF) a rozkladu rozptylu předpovědi a chyby (FEVD) pomocí příkazu bayesirf.

Nejdůležitější informace

Odhad

  • Výchozí nebo vlastní zpoždění
  • Exogenní proměnné
  • Předchozí rozdělení v Minnesotě
  • Flexibilní řízení vzorkování MCMC
  • Více řetězců

Následný odhad

  • Diagnostika MCMC
  • Kontroly stability parametrů
  • Bayesovské dynamické předpovědi
  • Bayesovská analýza IRF a FEVD
  • Jednokrokové bayesovské předpovědi
  • Plná podpora bayesovských funkcí postestimace

Podívejme se, jak to funguje

  • Odhad
  • Kontrola stability parametrů
  • Přizpůsobení výchozího prior
  • Volba počtu zpoždění
  • Analýza IRF
  • Dynamické předpovědi
  • Úklid

Odhad
Vezměme si čtvrtletní ekonomická makrodata Federálního rezervního systému od prvního čtvrtletí roku 1954 do čtvrtého čtvrtletí roku 2010. Rádi bychom studovali vztah mezi inflací, mezerou výstupu a sazbou federálních fondů. Chceme vyhodnotit, jak každá z těchto makroekonomických proměnných ovlivňuje ostatní v čase. Zejména nás zajímá vliv sazby federálních fondů řízené tvůrci politik. Zajímá nás také získání dynamických prognóz pro tyto tři výsledné proměnné.

Podívejme se nejprve na naše data.

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

. tsset

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

. tsline inflation ogap fedfunds

Ke studiu vztahu mezi těmito třemi proměnnými chceme použít bayesovský VAR model. Pokud jste již obeznámeni s příkazem var programu Stata, který fituje klasické modely VAR, bude fitování bayesovských modelů obzvláště snadné. Příkaz var jednoduše předřadíme příkazu bayes:. Níže také uvedeme semeno náhodného čísla kvůli reprodukovatelnosti.

Výstup příkazu bayes: var je dlouhý, proto jej popíšeme po částech.

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

Stejně jako u tradičního modelu VAR se předpokládá, že pravděpodobnost je vícerozměrná (v našem případě trojrozměrná) normální s kovarianční maticí chyb {Sigma,m}. Kovariance chyby je parametr modelu, takže se objevuje v kudrnatých závorkách, {}.

Bayesovský model VAR navíc vyžaduje priory pro všechny parametry modelu. bayes: var poskytuje výchozí priory, ale můžete je upravit tak, aby vyhovovaly vaší analýze.

Ve výchozím nastavení je regresním koeficientům VAR přiřazena tzv. konjugovaná Minnesotova priorita a kovariance chyb je přiřazena inverzní Wishartova priorita. Myšlenkou Minnesotovy priority je „zmenšit“ koeficienty směrem k určitým hodnotám (často nulám nebo jedničkám u prvních koeficientů s vlastním zpožděním) při zachování základních časově závislých vztahů v datech. Více informací o této prioritě se dozvíte v článku Vysvětlení Minnesotovy priority v [BAYES] bayes: var.

Následuje poměrně dlouhý výstup výsledků. Jak uvidíme v IRF analýze, výsledky z VAR modelu se obvykle interpretují pomocí IRF a dalších funkcí. Pro úplnost však níže uvádíme výstup.

V záhlaví jsou uvedeny standardní informace o postupu MCMC: počet iterací burn-in, velikost vzorku MCMC atd. Výchozí hodnoty jsou 2 500 burn-in iterací a 10 000 pro velikost vzorku MCMC, ale ve vaší analýze můžete potřebovat méně nebo více. Protože bayes: var používá pro simulaci Gibbsův výběr, výsledky MCMC budou mít obvykle vysokou účinnost (blízkou 1); viz výstup níže v části 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

Ve výchozím nastavení zahrnuje bayes: var dvě zpoždění pro každou výslednou proměnnou, ale můžete zadat jiná zpoždění v možnosti lags(); viz Volba počtu zpoždění.

Po simulaci můžete chtít výsledky MCMC uložit pro další postestimulační analýzu. U metody bayes to lze provést buď během odhadu, nebo po něm.

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

Ukládáme také aktuální výsledky odhadu bayes: var pro pozdější porovnání modelů.

. estimates store lag2

Stejně jako u každé metody MCMC bychom měli zkontrolovat, zda MCMC konverguje, než přejdeme k dalším analýzám. Můžeme použít grafické kontroly,

. bayesgraph diagnostics {inflation:L1.ogap}

nebo můžeme vypočítat Gelmanovu-Rubinovu statistiku konvergence pomocí více řetězců. Trace graf nevykazuje žádný trend a autokorelace je nízká. Zdá se, že naše MCMC konverguje.

Kontrola stability parametrů

Odvozování z VAR modelu se opírá o předpoklad stability parametrů, který můžete po bayesovském VAR modelu ověřit pomocí nového příkazu 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% věrohodné intervaly pro jednotlivé moduly vlastních čísel neobsahují hodnoty větší nebo rovné jedné, což je dobré znamení. A posteriorní pravděpodobnost, že všechna vlastní čísla leží v jednotkovém kruhu, se blíží jedné. Nemáme důvod se domnívat, že by byl porušen předpoklad stability.

Více informací o tomto předpokladu si můžete přečíst v [BAYES] bayesvarstable.

Přizpůsobení výchozího prior

Ve výchozím nastavení konjugovaná Minnesotova priorita bayes: var zmenšuje první koeficienty vlastního zpoždění směrem k jedné. (První own-lag koeficient je koeficient pro první zpoždění výsledné proměnné v její vlastní rovnici. V našem příkladu jsou takové koeficienty tři: {inflation:L1.inflation}, {ogap:L1.ogap}, a {fedfunds:L1.fedfunds}.)

Výchozí priorita upřednostňuje předpoklad náhodné procházky pro výslednou proměnnou. Tento předpoklad může, ale nemusí vyhovovat vašim představám v závislosti na typu dat. Například u diferencovaných dat můžete chtít zmenšit všechny koeficienty směrem k nule.

Toho můžeme dosáhnout úpravou výchozí specifikace volby minnconjugate(), která určuje konjugovanou prioritu Minnesota. Výchozí priorita předpokládá prioritu střední hodnoty jedniček pouze pro první koeficienty s vlastním zpožděním. Prioritní průměry ostatních koeficientů jsou již nulové. Proto musíme zadat nulové průměry pouze pro první tři koeficienty s vlastním zpožděním. To můžeme provést zadáním vektoru délky 3 nul v podvolbě mean() funkce 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

Zdá se, že nová předchozí specifikace výsledky příliš nezměnila. To znamená, že informace obsažená v pozorovaných datech o parametrech modelu převažuje nad naší předchozí informací.

Volba počtu zpoždění

Výběr zpoždění je pro VAR modely důležitým faktorem. Tradiční metody, například metody využívající kritérium AIC, často nadhodnocují počet zpoždění. Bayesovská analýza umožňuje vypočítat skutečnou pravděpodobnost každého modelu vzhledem k posteriorní pravděpodobnosti pozorovaných dat – modelu.

Abychom mohli vypočítat posteriorní pravděpodobnosti modelů, musíme nejprve fitovat všechny modely, které nás zajímají. Uvažujme zde jedno, dvě a tři zpoždění, ale ve své vlastní analýze můžete zadat libovolný počet modelů.

Výsledky modelu se dvěma zpožděními jsme již uložili jako lag2. Nyní sestavíme modely s jedním a třemi zpožděními a uložíme příslušné výsledky. Modely spustíme v klidu.

. 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

Nyní použijeme bayestest model k výpočtu posteriorních pravděpodobností modelu. Předpokládáme, že každý model je a priori stejně pravděpodobný (výchozí nastavení).

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

Model se třemi zpožděními má ze všech tří uvažovaných modelů nejvyšší posteriorní pravděpodobnost.

Analýza IRF

Modely VAR obsahují mnoho regresních koeficientů, což ztěžuje interpretaci výsledků těchto modelů. Místo jednotlivých koeficientů se pro shrnutí výsledků používají IRF. IRF měří vliv šoku v jedné proměnné, impulzní proměnné, na danou proměnnou odezvy v určitém časovém období.

V našem příkladu nás zajímá dopad sazby federálních fondů na ostatní výsledky v modelu. K vyhodnocení vlivu této proměnné použijeme IRF.

Zde použijeme model se třemi zpožděními, který jsme zvolili v předchozí části.

. estimates restore lag3
(results lag3 are active now)

Stejně jako u standardní IRF analýzy v programu Stata nejprve vytvoříme výsledky IRF a uložíme je do datové sady IRF pro pozdější analýzu. Pro IRF analýzu po bayes: var použijeme místo stávajícího příkazu irf nový příkaz bayesirf.

Nový příkaz je nutný kvůli rozdílům mezi klasickými a bayesovskými IRF. Pro danou dvojici impulsních a odezvových proměnných je frekvenční IRF jedinou funkcí, zatímco bayesovské IRF odpovídají posteriornímu MCMC vzorku funkcí. Tento vzorek je shrnut tak, aby vznikla jediná funkce. Ve výchozím nastavení se uvádí posteriorní střední IRF, ale místo toho můžete vypočítat posteriorní medián IRF.

Nejprve pomocí příkazu bayesirf create vytvoříme výsledky IRF s názvem birf a uložíme je do souboru IRF birfex.irf.

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

Vykreslujeme IRF s fedfunds jako impulsní proměnnou.

. bayesirf graph irf, impulse(fedfunds)

Tento graf IRF ukazuje, že šok ze zvýšení sazby federálních fondů má sám o sobě pozitivní vliv, který se v průběhu času snižuje, ale po osmi čtvrtletích je stále pozitivní. Šok ze sazby federálních fondů má malý vliv na mezeru výstupu a malý pozitivní vliv na inflaci, který se po 2 čtvrtletích rozptýlí.

Viz také Bayesova analýza IRF a FEVD.

Dynamické předpovědi

Modely VAR se běžně používají k předpovídání. Zde si ukážeme, jak vypočítat bayesovské dynamické prognózy po fitování bayesovského VAR modelu.

Předpovědi po bayes: var vytvoříme stejně jako po var, jen místo fcast použijeme bayesfcast.

Podobně jako u bayesovských IRF odpovídají bayesovské prognózy posteriornímu MCMC vzorku prognóz pro každé časové období. Ve výchozím nastavení se uvádí posteriorní střední prognóza, ale místo ní můžete vypočítat posteriorní mediánovou prognózu.

Vypočítejme bayesovskou dynamickou prognózu pro 10 časových období.

. bayesfcast compute f_, step(10)

Posteriorní průměrné předpovědi jsou spolu s dalšími předpovědními proměnnými uloženy v datovém souboru v proměnných s názvy výsledků s předponou f_.

K vykreslení vypočtených předpovědí můžeme použít bayesfcast graph.

. bayesfcast graph f_inflation f_ogap f_fedfunds

Z tohoto grafu vyplývá, že naše prognóza inflace je v prvním čtvrtletí malá, ale poté již není statisticky významná. (95% pásmo spolehlivosti zahrnuje nulu.) Prognóza mezery výstupu je v prvním roce záporná a poté se blíží nule. Sazba federálních fondů je podle prognózy ve všech obdobích malá a blízká nule.

Viz také Bayesovská dynamická prognóza.

Úklid

Po analýze nezapomeňte odstranit soubory dat vygenerované nástrojem bayes: var a bayesirf, které již nepotřebujete.

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