Novinky ve

Bayesovské lineární a nelineární modely DSGE

Předpona bayes nyní podporuje příkazy dsge a dsgenl pro fitování bayesovských lineárních a nelineárních dynamických stochastických modelů všeobecné rovnováhy (DSGE).

DSGE modely jsou oblíbené v makroekonomii a financích pro modelování více časových řad. Modely obsahují soustavy lineárních nebo nelineárních rovnic, které popisují různé ekonomické procesy. Parametry DSGE modelů mají obvykle přímou interpretaci v kontextu ekonomické teorie a často mají stanovené rozsahy věrohodných hodnot. Tyto rozsahy (nebo omezení) by měly být zahrnuty do odhadu, aby bylo možné získat stabilní výsledky.

Bayesovský odhad poskytuje přirozený způsob, jak taková omezení zahrnout, a to tak, že se zadají různá prioritní rozdělení pro parametry modelu, které splňují omezení.

Podívejme se, jak to funguje

Lineární model DSGE

Model DSGE se skládá ze soustavy rovnic, které vztahují ekonomické proměnné, jako je inflace, úroková míra a mezera výstupu, k sobě navzájem a k exogenním stavovým proměnným, které systém řídí.

Nejdůležitější informace

  • Bayesovské dynamické stochastické modely všeobecné rovnováhy
    • Lineární a nelineární modely
    • Výchozí a vlastní priory
    • Flexibilní řízení vzorkování MCMC
    • Bayesovská souhrnná statistika
    • Diagnostika MCMC
    • Více řetězců
  • Funkce impulzní odezvy
    • Grafy a tabulky IRF
    • Ukládání a porovnávání modelů
    • Plná podpora bayesovských funkcí postestimace

Rovnice mohou být dynamické ve dvou významech: zpoždění zachycují chování orientované zpětně, zatímco očekávané budoucí hodnoty zachycují chování orientované dopředu. DSGE modely lze použít k analýze politik, jako je vliv měnových šoků, fiskálních šoků atd.

Bayesovský odhad se skládá ze dvou kroků: specifikace DSGE modelu a specifikace priorů pro parametry DSGE modelu.

Malý novokeynesiánský model má rovnici investic a úspor (IS), která spojuje mezeru výstupu s úrokovou mírou, Phillipsovu křivku, která spojuje inflaci s mezerou výstupu, a Taylorovo pravidlo, které spojuje úrokovou míru s inflací. V syntaxi programu Stata vypadá model takto:

    (   x = F.x - (r - F.p - z)   , unobserved ) ///
    (   p = {beta}*F.p + {kappa}*x             ) ///
    (   r = 1/{delta}*p + m                    ) ///
    ( F.z = {rhoz}*z, state                    ) ///
    ( F.m = {rhom}*m, state                    )

První rovnice je křivka IS, druhá je Phillipsova křivka a třetí je Taylorovo pravidlo. Čtvrtá rovnice je šok IS a pátá rovnice je měnový šok podle Taylorova pravidla.

Možnost unobserved v křivce IS znamená, že mezeru výstupu považujeme za nepozorovanou. Model jsme přizpůsobili údajům o inflaci a úrokové míře.
Ke každému parametru přidáme předchozí specifikaci. Mnoho parametrů DSGE má interpretace, které přirozeně omezují rozsah přípustných hodnot. Parametr {beta} ve Phillipsově křivce je diskontní sazba a musí ležet v rozmezí 0 až 1. Parametr {kappa} je parametr cenového přizpůsobení, o němž se často předpokládá, že je malý, ale kladný. Parametr {delta} je inverzní koeficient Taylorova pravidla pro úpravu inflace, takže musí ležet v rozmezí 0 až 1. Kromě těchto omezení rozsahu je možné mít priory na pravděpodobné umístění hodnoty parametru. Diskontní sazba se pravděpodobně pohybuje kolem 0,95, parametr úpravy inflace kolem 0,2 a inverzní koeficient úpravy inflace kolem 0,66 (pro koeficient Taylorova pravidla 1,5). Priory umožňují tyto informace explicitně zahrnout do odhadu.
Uvažujme údaje o míře inflace a sazbě federálních fondů od roku 1955.

. webuse usmacro2
(Federal Reserve Economic Data - St. Louis Fed, 2017-01-15)

. describe p r

Variable Storage Display Value
name type format label Variable label
p double %10.0g Growth rate of prices (GDPDEF)
r double %10.0g Federal funds rate (FEDFUNDS)
. summarize p r
Variable Obs Mean Std. dev. Min Max
p 2.44 3.236709 2.281433 -.6681431 11.60957
r 2.44 5.035328 3.59569 .07 19.1

Když shromáždíme jak předchozí specifikaci, tak specifikaci modelu, náš příkaz k odhadu je následující:

. bayes, prior({beta},  beta(95,5))                   ///
         prior({kappa}, beta(30,70))                  ///
         prior({delta}, beta(60,30))                  ///
         prior({rhoz},  beta(10,10))                 ///
         prior({rhom},  beta(10,10))                 ///
         rseed(17) :                                  ///
         dsge (  x = F.x - (r - F.p - z), unobserved) ///
              (  p = {beta}*F.p + {kappa}*x         ) ///
              (  r = 1/{delta}*p + m                ) ///
              (F.z = {rhoz}*z, state                ) ///
              (F.m = {rhom}*m, state                )
note: initial parameter vector set to means of priors.

Burn-in ...
Simulation ...

Model summary
Likelihood: p r ~ dsgell({beta},{kappa},{delta},{rhoz},{rhom},{sd(e.z)},{sd(e.m)}) Priors: {beta} ~ beta(95,5) {kappa} ~ beta(30,70) {delta} ~ beta(60,30) {rhoz rhom} ~ beta(10,10) {sd(e.z) sd(e.m)} ~ igamma(.01,.01)
Bayesian linear DSGE model MCMC iterations = 12,500 Random-walk Metropolis–Hastings sampling Burn-in = 2,500 MCMC sample size = 10,000 Sample: 1955q1 thru 2015q4 Number of obs = 244 Acceptance rate = .2483 Efficiency: min = .005767 avg = .02115 Log marginal-likelihood = -794.29162 max = .03808
Equal-tailed
Mean Std. dev. MCSE Median [95% cred. interval]
beta .9406005 .0243801 .001984 .9428465 .8869374 .9812481
kappa .206337 .0327608 .001679 .2046031 .1470858 .273637
delta .5832685 .0404188 .004897 .5835278 .497712 .6607058
rhoz .9171911 .015764 .000978 .9170596 .8846393 .9467265
rhom .561412 .0296339 .001667 .5621747 .5036024 .6184265
sd(e.z) .5280986 .057275 .003639 .5255331 .4217194 .6467684
sd(e.m) 2.161816 .1585077 .020872 2.141682 1.902066 2.533669

V přehledu modelu je uveden pravděpodobnostní model a předběžné specifikace. Jsou požadovány priory pro všechny hodnoty kromě směrodatných odchylek. V případě DSGE modelů to dává smysl, protože parametry souvisejí s ekonomickou teorií. Například priorita pro diskontní faktor {beta} je beta s tvarovými parametry 95 a 5. Standardním odchylkám šoků stavových proměnných z a m byly přiřazeny výchozí inverzní gama priory.

Výstup odhadu zobrazuje počet období vyhoření (2 500), velikost vzorku MCMC (10 000), velikost vzorku dat (244 období), období výběru (1955q1 až 2015q4) a míru přijatelnosti a účinnost procesu odhadu. Míra akceptace se týká podílu tahů MCMC, které byly akceptovány. Typické hodnoty pro použitý Metropolisův-Hastingsův vzorkovač jsou 20 % až 30 %; naše míra akceptace je 24 %. Účinnost souvisí s autokorelací tahů MCMC a udává, jak rychle vzorkovač prochází prostorem parametrů. Naše průměrná účinnost je 2,1 %.

Výstup odhadu zobrazuje posteriorní střední hodnoty parametrů, směrodatné odchylky, mediány a rovnoměrné intervaly spolehlivosti. Posteriorní průměr {beta} je 0,94, což je velmi blízko jeho předchozímu průměru 0,95. Posteriorní průměr {kappa} je přibližně 0,21, což je méně než jeho předchozí průměr 0,30. Posteriorní průměr pro {delta} je 0,58, což je méně než jeho předchozí průměr 0,66. Oba šoky jsou vysoce perzistentní, s posteriorními průměrnými autokorelačními koeficienty pro z a m 0,92, resp. 0,56. Posteriorní střední hodnoty směrodatných odchylek šoků jsou 0,53 pro šok IS z a 2,16 pro měnový šok m podle Taylorova pravidla.

Všechny bayesovské postestimulační funkce programu Stata fungují po bayes: dsge.

Můžeme vykreslit posteriorní hustotu apriorního parametru nastavení {kappa}.

. bayesgraph kdensity {kappa}

Můžeme vykreslit úplnou sadu diagnostik pro {kappa}.

. bayesgraph diagnostics {kappa}

Ke grafu posteriorní hustoty můžeme přidat prioritní hustotu a vizuálně porovnat prioritu a posterioritu.

. bayesgraph kdensity kappa, addplot(function Prior = betaden(30,70,x), ///
         legend(on label(1 "Posterior")) lcolor(blue))

Můžeme zkoumat posteriorní hustoty funkcí parametrů modelu, jako je koeficient Taylorova pravidla 1/{delta}.

. bayesstats summary (1/{delta})

Posterior summary statistics                       MCMC sample size =      10,000

        expr1 : 1/delta

Equal-tailed
Mean Std. dev. MCSE Median [95% cred. interval]
expr1 1.722922 .1225577 .015302 1.713714 1.513533 2.009195

Posteriorní průměr pro 1/{delta} je 1,7, což je více než předchozí průměr 1,5 a ukazuje na silnou reakci úrokových sazeb na změny inflace.

Můžeme vypočítat bayesovské funkce impulzní odezvy. Nejprve uložíme výsledky MCMC do souboru dat nk_mcmc.dta.. Můžeme tak učinit během odhadu pomocí volby saving() nebo i po odhadu opakováním příkazu bayes s volbou saving().

. bayes, saving(nk_mcmc.dta, replace)
note: file nk_mcmc.dta not found; file saved.

S uloženým vzorkem MCMC můžeme zkonstruovat funkce impuls-odpověď pomocí sady bayesirf. Tato sada příkazů rozšiřuje irf o bayesovský odhad a je k dispozici po příkazech bayes: dsge, bayes: dsgenl a bayes: var.

. bayesirf set bayes_irfs.irf, replace
(file bayes_irfs.irf created)
(file bayes_irfs.irf now active)

. bayesirf create nk_model
(file bayes_irfs.irf updated)

. bayesirf graph irf, impulse(m) response(x p r m)

V levém horním panelu je zobrazena reakce měnové proměnné m na šok. Pravý horní panel ukazuje reakci inflace na šok: inflace klesá a poté se monotónně vrací do ustáleného stavu. Levý spodní panel ukazuje reakci úrokové sazby: roste. A konečně pravý spodní panel ukazuje reakci mezery výstupu: klesá pod 0, což znamená recesi. Kontrakční měnový šok tedy zvyšuje úrokovou sazbu, snižuje inflaci a způsobuje pokles produktu.

To vše a ještě více lze provést pomocí příkazu bayes: dsge.

Nelineární model DSGE

Předpona Bayes funguje také s příkazem dsgenl, který odhaduje parametry nelineárních DSGE modelů pomocí perturbace prvního řádu.

Dále odhadneme parametry stochastického modelu růstu. Model má rovnice pro spotřebu, reálnou úrokovou míru, HDP, zásobu kapitálu a produktivitu.

 (1/c     = {beta}*(1/F.c)*(1+F.r-{delta})    )       ///
 (r       = {alpha}*y/k                       )       ///
 (y       = z*k^({alpha})                     )       ///
 (f.k     = y - c + (1-{delta})*k             )       ///
 (ln(f.z) = {rho}*ln(z)                       ) ,     ///
 exostate(z) endostate(k) observed(y) unobserved(c r)

Makroekonomové tyto vztahy rozeznají jako Eulerovu rovnici spotřeby, rovnici poptávky po kapitálu, produkční funkci, rovnici akumulace kapitálu a zákon pohybu produktivity.

Parametry mají výklad: {beta} je diskontní sazba, která se obvykle pohybuje kolem 0,95; {alpha} je podíl kapitálu na důchodu, který se obvykle pohybuje kolem jedné třetiny; {delta} je míra odpisů, obvykle 2,5 % za čtvrtletí; a {rho} je perzistence technologického šoku. K tomu, aby se tyto informace promítly do odhadu, se používají priory.

Parametry tohoto modelu odhadujeme pomocí detrendovaného výstupu. Datová sada m1gdp.dta poskytuje logaritmus výstupu.

. webuse m1gdp, clear

. describe

Contains data from  https://www.stata-press.com/data/r17/m1gdp.dta
 Observations:            223
    Variables:              3                   26 Mar 2020 02:49

Variable Storage Display Value
name type format label Variable label
t int %tq Quarterly time variable
ln_m1 float %9.0g ln(M1) monthly to quarterly by
averaging: M1 is Fred M1SL, Bil
of $ seas adj
ln_gdp float %9.0g ln(gdpc1) FRED GDP in Bil of 1996
chained $ seas adj
Sorted by: t

Příkaz tsfilter extrahuje trendovou složku výstupu. Použijeme Hodrickův-Prescottův filtr a výsledek pak škálujeme 100násobkem. Výsledné měřítko je takové, že hodnota 1 znamená, že HDP je 1 % nad svou trendovou hodnotou.

. tsfilter hp y = ln_gdp

. replace y = 100*y
(222 real changes made)

. tsline y, title("HP-detrended output")

Recese je spojena s poklesem produkce pod trend, zatímco konjunktura je spojena s růstem produkce nad trend.

Pokračujeme v odhadu parametrů.

. bayes, prior({alpha}, beta(30,70))                ///
         prior({beta},  beta(95,5))                 ///
         prior({delta}, beta(25,900))               ///
         prior({rho},   beta(10, 10))               ///
         rseed(20) dots saving(rbc_mcmc, replace):  ///
         dsgenl (1/c      = {beta}*(1/F.c)*(1+f.r-{delta})    )       ///
                 (r       = {alpha}*y/k                       )       ///
                 (y       = z*k^({alpha})                     )       ///
                 (f.k     = y - c + (1-{delta})*k             )       ///
                 (ln(f.z) = {rho}*ln(z)                       ) ,     ///
                 exostate(z) endostate(k) observed(y) unobserved(c r)
note: initial parameter vector set to means of priors.

Burn-in 2500 aaaaaaaaa1000aaaaaa...2000..... done
Simulation 10000 .........1000.........2000.........3000.........4000.........
5000.........6000.........7000.........8000.........9000.........10000 done

Model summary
Likelihood: y ~ dsgell({beta},{delta},{alpha},{rho},{sd(e.z)}) Priors: {beta} ~ beta(95,5) {delta} ~ beta(25,900) {alpha} ~ beta(30,70) {rho} ~ beta(10,10) {sd(e.z)} ~ igamma(.01,.01)
Bayesian first-order DSGE model MCMC iterations = 12,500 Random-walk Metropolis–Hastings sampling Burn-in = 2,500 MCMC sample size = 10,000 Sample: 1947q1 thru 2002q2 Number of obs = 222 Acceptance rate = .2189 Efficiency: min = .02528 avg = .04236 Log marginal-likelihood = -311.7914 max = .05567
Equal-tailed
Mean Std. dev. MCSE Median [95% cred. interval]
beta .9095501 .0392698 .001886 .9133171 .8231531 .9726171
delta .0286052 .0054865 .000345 .0284 .0192159 .0404854
alpha .2768864 .0451422 .002097 .2738962 .1964999 .3772306
rho .7680742 .036755 .001813 .7680699 .6950177 .8412948
sd(e.z) .9340691 .0458306 .001943 .9328126 .8502487 1.032548

Předběžný průměr diskontní sazby {beta} je 0,95; její posteriorní průměr se příliš nezměnil a činí 0,91. Předběžný průměr míry amortizace {delta} je 0,025; její posteriorní průměr je málo změněný a činí 0,0286. Předběžný průměr {alfa} je 0,3; jeho posteriorní průměr je mírně nižší a činí 0,28. Zatímco posteriorní průměr {rho} je 0,77, což je mnohem více než jeho předchozí průměr 0,5. Směrodatná odchylka technologického šoku je přibližně 1.

Dále vypočítáme funkce impulsní odezvy na technologický šok.

. bayesirf set bayes_irf2.irf, replace
(file bayes_irf2.irf created)
(file bayes_irf2.irf now active)

. bayesirf create rbc_model, step(16)
(file bayes_irf2.irf updated)

. bayesirf graph irf, impulse(z) byopts(yrescale)

Jednotky na svislé ose jsou v procentech odchylky od ustáleného stavu. Jednotky na vodorovné ose jsou ve stejném časovém trvání jako data, tj. ve čtvrtletích. Vykreslujeme 16 kroků (4 roky) odpovědí.

  • Reakce spotřeby je vynesena v levém horním panelu. Spotřeba při nárazu stoupá a poté pokračuje v růstu ve tvaru hrbu, než se vrátí do ustáleného stavu.
  • Reakce zásoby kapitálu je znázorněna v horním středním panelu. Zásoba kapitálu se při dopadu nepohybuje, ale poté stoupá až na vrchol o 0,6 % nad svůj ustálený stav a poté klesá.
  • V pravém horním panelu úroková sazba při dopadu roste a poté klesá; po čtyřech čtvrtletích klesá pod 0 a poté se vrací do ustáleného stavu zespodu.
  • V levém dolním panelu je znázorněna reakce výstupu, který při nárazu roste a poté monotónně klesá zpět do ustáleného stavu.
  • Na spodním prostředním panelu je znázorněna reakce samotné technologie. I ta při nárazu roste a poté monotónně klesá zpět do ustáleného stavu.

Přesné posteriorní průměry a věrohodné intervaly lze zobrazit pomocí Bayesirfovy tabulky. Níže uvádíme tabulku reakce spotřeby na technologický šok.

. bayesirf table irf, impulse(z) response(c)

Results from rbc_model

(1) (2) (3)
step irf Lower Upper
0 .363699 .209593 .502829
1 .421867 .245335 .587063
2 .445802 .269215 .606835
3 .446962 .280481 .595064
4 .433453 .282893 .575041
5 .410962 .282863 .540024
6 .383436 .272859 .511974
7 .353574 .254899 .473345
8 .323189 .227486 .440766
9 .293459 .195011 .40683
10 .265119 .162333 .379442
11 .238595 .133143 .354938
12 .214099 .108564 .334151
13 .1917 .087822 .313609
14 .171372 .071785 .294301
15 .153031 .057275 .270277
16 .136556 .045631 .251522
Posterior means reported 95% equal-tailed credible lower and upper bounds reported. (1) irfname = rbc_model, impulse, = z, and response = c.

Po technologickém šoku o jednu standardní odchylku spotřeba vzroste a ve třetím období po šoku dosáhne maxima 0,447 % nad svou ustálenou hodnotou.