前沿: BVAR, 貝葉斯VAR是什麼, 為什麼需要, 軟體怎麼做, 如何解讀呢?

2021-02-16 計量經濟圈


凡是搞計量經濟的,都關注這個號了

稿件:econometrics666@sina.cn

所有計量經濟圈方法論叢的code程序, 宏微觀資料庫和各種軟件都放在社群裡.歡迎到計量經濟圈社群交流訪問.

關於VAR方法,我們引薦了1.R軟體中的時間序列分析程序包縱覽,2.時間序列分析的各種程序, 38頁集結整理成文檔,3.時間序列數據分析的思維導圖一覽, 金融經濟學者必備工具,4.送書: 應用時間序列分析(經典),5.為啥時間序列模型比較難學?時間序列的正名路,6.時間序列中的協整檢驗和VECM,以及回歸後的系列估計操作,7.時間序列模型分解,季節調整分析基礎,8.空間和時間的計量,關注二位國人,9.TVP-VAR時變參數VAR系列文獻和估計程序,10.向量自回歸VAR模型操作指南針,為微觀面板VAR鋪基石,11.VAR宏觀計量模型演進與發展,無方向確認推斷更好,12.應用VAR模型時的15個注意點,總結得相當地道,13.面板數據單位根檢驗軟體操作和解讀全在這裡,14.動態面板回歸和軟體操作,單位根和協整檢驗(Dynamic Panel Data),15.面板向量自回歸PVAR是什麼? 數據, 程序和解讀一步到位,16.ARDL, ARIMA, VAR, (G)ARCH時間數據模型講解及軟體操作,17.動態因子模型是什麼, 又怎麼去實現?18.SVAR模型的起源、識別、估計與應用, 系統講述,19.平滑轉移自回歸模型(STAR)應用與在R軟體的操作,20.Copula函數,21.GVAR, 全局VAR模型是什麼?該如何用軟體實現, 有哪些研究文獻和最新進展!

關於下方文字內容,作者韋忠吉,清華大學經管學院,通信郵箱weizhj.18@sem.tsinghua.edu.cn

Nikolas Kuschnig, Lukas Vashold. BVAR: Bayesian Vector Autoregressions with Hierarchical Prior Selection in RVector autoregression (VAR) models are widely used models for multivariate time series analysis, but often suffer from their dense parameterization. Bayesian methods are commonly employed as a remedy by imposing shrinkage on the model coefficients via informative priors, thereby reducing parameter uncertainty. The subjective choice of the informativeness of these priors is often criticized and can be alleviated via hierarchical modeling. This paper introduces BVAR, an R package dedicated to the estimation of Bayesian VAR models in a hierarchical fashion. It incorporates functionalities that permit addressing a wide range of research problems while retaining an easy-to-use and transparent interface. It features the most commonly used priors in the context of multivariate time series analysis as well as an extensive set of standard methods for analysis. Further functionalities include a framework for defining custom dummy-observation priors, the computation of impulse response functions, forecast error variance decompositions and forecasts.VAR想必大家都知道,那麼BVAR是什麼呢?BVAR,簡單來說,其實就是用貝葉斯統計的方法實現了VAR回歸的功能。Nikolas Kuschnig和Lukas Vashold(2019)這篇工作論文,BVAR: Bayesian Vector Autoregressions with Hierarchical Prior Selection in R,將為我們答疑解惑,並教你如何在R中使用它。
VAR(Vector AutoRegression,向量自回歸)被廣泛運用於多個學科的多變量的時間序列分析中,例如Crespo Cuaresma, Feldkircher, 和Huber (2016)等。通過Sims(1980)的推廣,VAR已經成了宏觀實證研究的主要工具(Kilian and Lütkepohl,2017)。但是,大量的參數和宏觀經濟數據有限的時間可用性,可能導致過度參數化(over-parameterization)問題(Koop和Korobilis 2010)。因此,我們引入了BVAR(貝葉斯向量自回歸)模型。信息性先驗(informative priors)為模型添加了額外的結構,並將其縮小為簡潔的、經過驗證的基準。這樣得到的模型,能降低參數不確定性並顯著增強的樣本外預測性能(Koop 2013)。這些先驗的選擇和他們的信息構成了一個挑戰,仍然是討論和批評的支點。Giannone,Lenza和Primiceri(2015)從層次建模思想出發,提出了基於數據的且有理論基礎的先驗信息設置方法。它們減輕了設定超參數(hyperparameters)的主觀性,並在常見的分析中展示了出色的性能。BVAR是實現這些分層貝葉斯VAR模型的第一個R包(hierarchical Bayesian VAR),它為評估和分析提供了一個完整且易於使用的工具包。下面讓我們一起走近BVAR吧!我們首先介紹貝葉斯統計軟體的發展現狀。不過,在介紹貝葉斯統計軟體的現狀之前,先來簡單介紹一下貝葉斯統計。英國學者託馬斯·貝葉斯在《論有關機遇問題的求解》中提出一種歸納推理的理論,後被一些統計學者發展為一種系統的統計推斷方法,稱為貝葉斯方法。採用這種方法作統計推斷所得的全部結果,構成貝葉斯統計的內容。貝葉斯統計的原理,主要依賴先驗分布和後驗分布兩個概念。先驗分布是總體分布參數θ的一個概率分布。貝葉斯學派的根本觀點,是認為在關於θ的任何統計推斷問題中,除了使用樣本X所提供的信息外,還必須對θ規定一個先驗分布,它是在進行推斷時不可或缺的一個要素。貝葉斯學派把先驗分布解釋為在抽樣前就有的關於θ的先驗信息的概率表述,先驗分布不必有客觀的依據,它可以部分地或完全地基於主觀信念。例如,某甲懷疑自己患有一種疾病A,在就診時醫生對他測了諸如體溫、血壓等指標,其結果構成樣本X。引進參數θ:有病時,θ=1;無病時,θ=0。X的分布取決於θ是0還是1,因而知道了X有助於推斷θ是否為1。按傳統(頻率)學派的觀點,醫生診斷時,只使用X提供的信息;而按貝葉斯學派觀點,則認為只有在規定了一個介於0與1之間的數p作為事件{θ=1}的先驗概率時,才能對甲是否有病(即θ是否為1)進行推斷。p這個數刻畫了本問題的先驗分布,且可解釋為疾病A的發病率。先驗分布的規定對推斷結果有影響,如在此例中,若疾病A的發病率很小,醫生將傾向於只有在樣本X顯示出很強的證據時,才診斷甲有病。在這裡先驗分布的使用看來是合理的,但貝葉斯學派並不是基於 「p是發病率」這樣一個解釋而使用它的,事實上即使對本病的發病率毫無所知,也必須規定這樣一個p,否則問題就無法求解。根據樣本 X 的分布Pθ及θ的先驗分布π(θ),用概率論中求條件概率分布的方法,可算出在已知X=x的條件下,θ的條件分布 π(θ|x)。因為這個分布是在抽樣以後才得到的,故稱為後驗分布。貝葉斯學派認為:這個分布綜合了樣本X及先驗分布π(θ)所提供的有關的信息。抽樣的全部目的,就在於完成由先驗分布到後驗分布的轉換。如上例,設p=P(θ=1)=0.001,而π(θ=1|x)=0.86,則貝葉斯學派解釋為:在某甲的指標量出之前,他患病的可能性定為0.001,而在得到X後,認識發生了變化:其患病的可能性提高為0.86,這一點的實現既與X有關,也離不開先驗分布。計算後驗分布的公式本質上就是概率論中著名的貝葉斯公式:

這公式正是上面提到的貝葉斯1763年的文章的一個重要內容。貝葉斯推斷方法的關鍵在於所作出的任何推斷都必須也只須根據後驗分布π(θ│X),而不能再涉及X的樣本分布Pθ。貝葉斯統計軟體是一個相當活躍的領域,日益增長的算力,促進了馬爾科夫鏈蒙特卡洛(Markov chain Monte Carlo,MCMC)方法的發展。已有軟體建立在Gibbs抽樣——Metropolis-Hastings算法的一種變體之上,包括了BUGS(Lunn, Spiegelhalter, Thomas, 和Best,2009等)和JAGS(Plummer,2003)。此外還有Stan(Guo, Li和Riddell,2017等),一種統計模型的命令式概率程式語言,採用無U型採樣器(No-U-Turn Sampler,漢密爾頓蒙特卡洛方法的一種變體,見Hoffman and Gelman 2014)來提升魯棒性和效率。這些包提供了靈活可擴展的貝葉斯推斷工具,並且能夠在幾個平臺之間跨平臺交互(例如R和Python)。其他軟體包提供了類似或更具體的實現,包括Python的pymc3 (Salvatier, Wiecki和Fonnesbeck 2016), MCMCglmm (Hadfield 2010), greta (Golding et al. 2018)和R的bvarsv (Krueger 2015)。集成嵌套拉普拉斯逼近(Integrated nested Laplace approximation,見Rue, Martino, and Chopin 2009)是一種具有顯著計算優勢的近似貝葉斯推斷的替代方法,廣泛應用於空間建模中(見Blangiardo, Cameletti, Baio和 Rue 2013),在R- INLA (Rue, Martino, Lindgren et al. 2015)中有一個R實現。儘管有各種各樣的貝葉斯推理軟體,但沒有專門用於貝葉斯VAR建模的綜合選項。vars (Pfaff 2008)包代表了頻率學多變量時間序列分析領域的基石,提供了一套完整的var相關功能。然而,儘管貝葉斯VAR模型很流行,但目前還沒有相同的模型。(沒辦法,誰讓頻率學派才是主流呢)前面提到的包涵蓋了各種可能的應用程式,並為建模和後續分析提供了強大而高效的工具。然而,貝葉斯變量的工作通常是通過MATLAB和R腳本完成的。因此,代碼被循環利用並頻繁地拼湊在一起,而沒有任何中央存儲庫或版本控制促進重現性(Ram 2013),而許多其他腳本只使用過一次。在本文中,我們提出了一個R軟體包BVAR,它協調了更完整的貝葉斯推理工具包的優點和特別腳本的特殊性。該包實現了Giannoneet等(2015)提出的層級模型(hierarchical modeling)的方法,選擇常用先驗的信息量。當前版本實現了一系列常見分析的功能,並允許使用現有的框架,例如用於MCMC診斷的coda命令 (Plummer, Best, Cowles和Vines 2006)。絮絮叨叨這麼多,下面我們要正式介紹今天的主角——BVAR了!我們會先簡單地描述它背後的計量原理,然後再介紹大家在實證中更感興趣的實操環節,把BVAR這個包安利給大家,並給一個實例說說BVAR到底怎麼用。在這個部分,我們將介紹一下貝葉斯背景下的VAR模型,並根據Giannone等人(2015勾勒出實現分層先驗選擇的方法。對於VAR模型的貝葉斯估計的細節解釋,我們將參照Koop和Korobilis(2010)以及Kilian和Lutkepohl(2017)。VAR模型是單變量自回歸(AR)模型的一般化,常常是檢驗經濟衝擊的保留工具。它們基於模型中所有變量滯後值之間動態行為的概念。一個有限p階的VAR模型通常寫作VAR(p),並可以表示成:

這裡面yt和a0分別是表示內生變量和常數項的M1向量,而Ap是表示係數的MM矩陣,εt是表示外生衝擊的M1向量。需要顧及的係數一共有M+pM^2個,因此隨著所包含變量和/或滯後的數量急劇上升。這叫「維數災難」,對頻率估計來說尤其如此。在貝葉斯方法中,設置先驗信念(prior beliefs)被施加於模型參數中,繞過了這個詛咒,並允許更大的模型,且顯著提高樣本外預測精度估計,相關論述可見Bańbura和Giannone Reichlin(2010),Koop(2013)。恰當地告知先前的信念是至關重要的,而且很自然地會接受批評。Giannone等(2015)提出以基於數據的方式設置先驗參數,即,方法是將它們視為附加參數。他們通過對該模式的邊際似然值(Marginal Likelihood,ML)進行積分來實現,並用它作為探索參數空間的判斷準則。在他們的論文中,作者從理論上證明了這種方法,並預測了脈衝響應函數估計的準確性。通過實證例子,Giannone等人(2015)也證明了預測準確性與標準模型、績效以及因素模型。他們的方法被廣泛使用(見Alquist, Kilian,和Vigfusson 2013;Miranda-Agrippino和Rey 2015;Altavilla, Giannone和Lenza 2014)。他們考慮了常用的高斯-反-維斯哈特族(Gaussian-inverse-Wishartf)的先驗分布:

這裡面b,Ω,ψ和d是超參數γ的低維向量的函數。由於(2)(3)式的共軛性(conjugacy),模型的ML可以作為一個函數,在封閉形式(closed form)下有效計算(見Giannone等 2015, p. 439)。在他們的論文中,作者考慮了三個具體先驗——明尼蘇達先驗(Litterman)先驗,它被用作基線;係數和先驗和單一單位根先驗。 明尼蘇達先驗(Litterman 1980)本質上強加了個體變量遵循隨機漫步過程的假設。這個簡約的標準通常在宏觀經濟時間序列方面表現良好(Kilian和Lutkepohl(2017),p.356),並且經常被用作評估準確性的基準。它由下面的方法所刻畫:

其關鍵參數為λ,控制著先驗的鬆緊度,即,衡量先驗和數據的相對重要性。當λ趨近0時,先驗是準確施加的,而當λ趨向無窮時,後驗估計將趨近於普通最小二乘(OLS)估計。控制滯後階數增加的方差衰減,可控制遠距離觀測的懲罰。最後,ψ控制著變量上先驗滯後項的標準差。 明尼蘇達先驗的改進通常作為附加先驗來實現,試圖「降低VAR模型對初始觀測的估計條件所隱含的確定性成分的重要性」(Giannone 等,2015, p.440)。首先是係數總和(sum-of-coefficients,SOC) 先驗(Doan, Litterman,和Sims 1984),強加了一個概念,即無變化預測在時間序列的開始是最優的。它是通過在數據矩陣上添加人工模型觀測值的泰爾混合估計(Theil mixed estimation)實現的,其構造方法如下:

這裡面是一個關於每個變量的前p個觀察值的平均值的M*1向量。核心變量μ控制著方差,因此控制了先驗的鬆緊度,即,μ趨向無窮時,先驗變得無信息性。μ趨向0時,模型以同樣多的單位根作為變量,並且沒有協整。這促進了單一單位根(SUR)先驗(Sims 1993;Sims和Zha1998),它在數據中建立了協整關係。先驗將變量推向無條件平均值或至少存在一個單位根。與之對應的虛擬觀測值為:

設置這些先驗的參數已被廣泛討論,並已有一些啟發式方法(例如,Litterman 1980;Doan等,1984;Bańbura等,2010)。Giannone等(2015)寫道,從貝葉斯視角來看,選擇參數的過程在概念上是和模型中其他任何參數的推斷是一樣的。他們表明,由於數據的邊際似然性,給定先驗參數在具有共軛先驗的封閉形式的VAR模型中可用,有可能把模型看成分層的(Giannone等 2015, p. 437)。 下面我們要來正式介紹BVAR的用法了!我們將用R包BVAR來實現。 BVAR包將Giannone等(2015)的分層方法在R中實現了(R Core Team,2019),並給了使用者一種容易上手且靈活的使用分層貝葉斯VAR的方法。它可以主要用於現代、(宏觀)經濟、多元時間序列分析。它對先驗選擇的分層方法可以防止有問題的參數選擇。由於它的易操作性和靈活性,在Bańbura等 (2010) 或Koop (2013)看來,它很適合用來做經濟分析,並可能用於像是模型的一致性檢驗。它也可以作為貝葉斯範式在多變量經濟時間序列建模中的引入。 這個包除了基本款的和mvtnorm (Genz,Bretz,Miwa,Mi,Leisch.Scheipl和Hothorn 2019)之外沒有其他依賴關係,因此可以跨平臺使用,甚至可以在最小的安裝上使用。它是在原裝 R中實現的,以提高透明度,並降低貢獻和/或適應的門檻。無論如何,一個函數方法的包的結構方便了未來的計算密集的步驟埠,例如,C。完整的文檔、訪問多種設置的helper函數和用於分析的標準方法使軟體包易於操作,而不犧牲靈活性。 BVAR提供了廣泛的定製選項,涉及到要使用的先驗、它們的參數和它們的層次處理。對作為基線的明尼蘇達先驗來說,它的所有參數都是可調的,可以分層處理。包括SOC和/或SUR 先驗的選項也很容易獲得。此外,靈活的實現允許用戶指定自己的自定義先驗,只要它們是通過混合估計實現的,就像之前的虛擬觀測對象的先驗一樣。超參數適當的起始值是用optim()命令來獲取的(R Core Team 2019),用的是有限內存BFGS的準牛頓方法。MCMC,特別是Metropolis-Hastings (MH)算法,提供了進一步的選擇。自然,刪去和保存的數量是可調的,可以進行削減。為了正確地探索後驗分布,先驗參數的提議範圍(proposal range)是至關重要的,因此可以單獨設置。藉助變量目標(variable target)和調整率(adjustment rates),適當的接受率(acceptance rate)可以通過在老化階段(burn-in phase)啟用自動提議率(automatic proposal rate)調整來實現。 貝葉斯VAR模型的主要應用是利用脈衝響應函數(IRF)對(宏觀)經濟系統進行結構分析。這些函數作為衝擊經濟系統的一個表示,並用於分析模型變量的反應。這些衝擊的準確傳播是非常有趣的,但適當的識別是必要的,以便以一種有意義的方式解釋它們。BVAR目前具有兩種最常見的識別方案——即短期零限制(short-term zero restrictions)和符號限制(sign restrictions)。前者也稱為遞歸標識,是通過Cholesky方差-協方差矩陣∑的分解實現的(見Kilian和Lütkepohl 2017,第8章)。這種方法的計算成本低,實現了精確的識別,而不需要太多的基於理論的關於可變行為的假設。只有變量的順序是關鍵的,因為某些變量的同時期反應是有限的。符號限制(參見Kilian和Lutkepohl 2017,第13章)是另一種流行的識別方法,可以打包使用,遵循Rubio-Ramirez、Waggoner和Zha(2010)的方法。這個識別方案使得一些關於變量在一定衝擊後行為的假定成為必要。隨著模型維數的增加,這可能很快變得具有挑戰性。此外,通過符號限制進行識別的代價是增加參數的不確定性,並導致IRF的精度損失。利用VAR模型可以解決的另一個問題是,衝擊後哪些變量驅動某個變量的路徑。為了幫助分析這一點,可以用預測誤差方差分解(forecast error variance decompositions,FEVD)來實現。它們允許對決定經濟系統行為的過程進行更詳細的結構分析。貝葉斯VAR在預測練習中也表現得很好。它們已被證明優於許多其他方法(例如,Carriero、Kapetanios和Marcellino 2009;Koop 2013),不需要像結構模型(structural models)等模型一樣推斷特殊的限制參數。此時,BVAR可用於進行無條件預測,其預測結果可與因子模型的預測結果相媲美(Giannone等,2015)。條件預測或情景分析,即,其中假設一個或多個內生變量的未來路徑是已知的,將在未來實現。 使用R包估計貝葉斯VAR模型可以通過各種輔助函數和參數輕鬆定製。選擇默認值是為了提供一個合理的起點,並允許逐步採用包。分析對R用戶來說很好用——除了通用函數的實現,還可以選擇繪製軌跡、密度、剩餘、預測和脈衝響應,包括summary()、predict()、irf()命令等。最終和中間輸出將以通常的格式和特徵,用print()的方式提供,以提供透明的研究過程。因此,現有的框架可以用於進一步的分析——例如,coda (Plummer et al. 2006)用於檢查收斂性,ggplot2 (Hadley 2016)用於繪圖。 除了上面介紹的特性外,BVAR還包括FRED-QD數據集(McCracken和Ng 2016),該數據集在修改後的開放數據共享屬性許可(ODC-BY 1.0)下獲得許可。它構成了描述戰後時期美國經濟的宏觀經濟變量的最大資料庫之一,非常適合進行多元時間序列分析。該數據以季度為基礎提供了248個宏觀經濟指標,最早可追溯到1959年第一季度,其中234個指標包含在一攬子數據中。它會定期更新,目前包含在套裝中的版本將持續到2018年第四季度。FREDQD適用於廣泛的經濟現象研究,並經常用於開發新模型(如Huber,Koop和Onorante 2019)的基準測試。 說了這麼多,你可能還是不知道BVAR怎麼用,那麼請看下面的例子吧。在這個例子中,我們將用上面提到過的FRED-QD數據集的一部分。當然,之後你也可以用它的其他部分。工作流程是這樣的:(1)數據準備,(2)模型先驗配置等,(3)模型估計,最後(4)對輸出和繪製結果進行評估。 最主要的函數bvar()要求數據可以被表示成一個沒有任何缺失的數值矩陣。我們從FRED-QD中提取了6個時間序列:以2012年為基準,十億美元為單位的真實GDP,工業生產指數,以千人為單位的非農業就業人數,製造業平均每周工作時間,城市消費者CPI以及以百分數為單位的有效聯邦基金利率。由於我們希望得到穩定的AR過程,因此我們對除聯邦基金利率以外的所有變量進行了轉換,以實現平穩性。對於GDP和CPI,我們使用年對數差分法,對於工業生產,使用非法對數差分法,而對於平均每周小時數,使用季度對數差分法,代碼如下。圖1提供了轉換後的時間序列的概述。R> df <- fred_qd[, c("GDPC1", "INDPRO", "PAYEMS", + "CES0600000007", "CPIAUCSL", "FEDFUNDS")]R> for (i in c("GDPC1", "CPIAUCSL")) + df[5:nrow(df), i] <- diff(log(df[, i]), lag = 4) * 100 R> for(i in c("INDPRO", "PAYEMS", "CES0600000007")) + df[2:nrow(df), i] <- diff(log(df[, i]), lag = 1) * 100R> df <- df[5:nrow(df), ]

自然,這個選擇過程也可以擴展到FRED-QD以及其他數據集的其他變量中。也可以參見Kilian和Lutkepohl(2017)的第2章和第19章,了解更多關於變量轉換的信息 在準備了數據之後,我們需要指定先驗,並調整模型的其他配置。注意,與預先設置相關的函數的前綴是bv_。因此,用戶可以快速、簡單地訪問選項及其文檔,從而方便了它們的使用,並降低了新用戶的進入門檻。分析的方法和功能,與習慣用語密切相關。 如前所述,明尼蘇達先驗被用作基線,並且它的關鍵參數的擬和被包含在每個默認的層次建模練習中。我們使用bv_minnesota()來指定參數λ和α更精確的先驗分布,以及提議值的上界和下界。按照Giannone等(2015),分布時伽馬密度的,並且邊界被用於拋棄難以置信的和不合理的數值,它們是從用於MH步驟的高斯提議分布(Gaussian proposal distribution)中得到的。參數var指定了模型中常數項的先驗方差,通常被設置為相當分散的,即以較大的值。代碼如下:+ lambda = bv_lambda(mode = 0.2, sd = 0.4, min = 0.0001, max = 5),+ alpha = bv_alpha(mode = 2, sd = 0.25, min = 1, max = 3),有了SOC和SUR先驗,我們也把兩個提前構建好的虛擬觀測先驗(pre-constructed dummy-observation)包括進來。關鍵參數的先驗也被假定為是伽馬分布的,並且這個過程跟λ和α一樣。定製的虛擬觀測先驗是通過bv_dummy()類似地創建的,只需要一個額外的函數來構建觀察。R> soc <- bv_soc(mode = 1, sd = 1, min = 1e-04, max = 50)R> sur <- bv_sur(mode = 1, sd = 1, min = 1e-04, max = 50)一旦指定了先驗,我們就將它們提供給bv_priors(),對任何偽觀察先驗使用省略號參數(…)。通過參數hyper,我們選擇哪一個先驗參數應該被分層處理。它的預設設置「auto」包括了λ,以及所有可選的虛擬觀測先驗的關鍵參數,這和提供特徵向量c(「lambda」,「soc」,「sur」)是等價的。不被包含在分層步驟中的先驗參數被當成固定的,並設置成和它們的mode參數相等。R> priors <- bv_priors(hyper = "auto", mn = mn, soc = soc, sur = sur)我們可以通過函數bv_irf()和bv_fcast()來調整IRF的計算或預測。考慮的範圍可以針對這兩種情況進行調整。FEVD是在IRF的一個額外步驟中計算的,可以通過fevd進行切換。 衝擊的識別是通過identification命令實現的。若要跳過任一項的計算並加速估計,可將參數設為NULL;兩者都可以事後計算。R> irfs <- bv_irf(horizon = 12, fevd = TRUE, identification = TRUE) 最終,我們調整MH步驟,以達到合適的接受率,並因此準確地找出模型參數的後驗分布。這是通過bv_metropolis()實現的,它需要一個初始參數scale_hess,這是一種數值標量或向量,用於縮放逆Hessian,它是用於繪製分層處理參數的提議(proposal)。這也可以用設置adjust_acc=TRUE來補充,以在老化(burn-in)期間啟動自動縮放調整。自動調整由acc_change百分比迭代完成,直到達到acc_lower和acc_upper之間的通過率。代碼如下:R> mh <- bv_metropolis(scale_hess = 0.005, adjust_acc = TRUE, + acc_lower = 0.25,+ acc_upper = 0.35, acc_change = 0.02)這許多可供選擇的設置讓用戶能夠定製它們的模型和所有他們個人需要的組成部分。這對於解決一系列廣泛的不同研究問題是必要的。但是,也可以使用更簡單和更快的方法——默認設置應該能夠滿足廣泛的應用程式。這使得用戶能夠(1)專注於他們模型的關鍵部分,(2)輕鬆地使用BVAR並逐步調整他們的模型。 BVAR的核心是bvar()函數。在準備數據和可選調整的各種設置後,可進行估計。除了設置對象,我們提供了延遲的數量,包括在我們的模型和一些關於MCMC迭代的選項。在n_save中,我們定義了迭代的總次數,在n_burn中我們設置了要丟棄的初始迭代的數量,通過n_thin我們給出要存儲的抽取分數的分母。更進一步,verbose=TRUE, 提示列印中間結果,並在MCMC步驟中啟用進度條。代碼和結果如下:R> run <- bvar(df, lags = 5, n_draw = 25000, n_burn = 10000, n_thin = 1, + priors = priors, mh = mh, fcast = fcasts, irf = irfs, verbose = TRUE)Optimisation concluded. Posterior marginal likelihood: -1123.907 Parameters: lambda = 0.52; soc = 0.9; sur = 0.69 |====================================================| 100%Finished after 2.58 mins. 函數的返回值是一個類的對象bvar——一個有數個輸出的命名了的清單。這總是包括了最開始感興趣的參數,即,VAR的係數的後驗提取,方差-協方差矩陣的後驗提取,按層次結構處理的超參數的後驗提取。其他內容包括每次提取的邊際似然值,優化過的參數的起始值(通過optim得到),預先設置和自動設置,以及最開始要的bvar函數。各種各樣的元信息也包括在內,例如,可接受的繪製數量,變量名和計算花費的時間。只有在實際計算的情況下才添加一些輸出,即IRF、FEVD和預測結果。BVAR提供了用於bvar類型及衍生物的print(),plot()和summary()工具。print()工具提供了一些元信息,通過optim()對先驗參數和優化結果進行了詳細的分層處理。summary()工具在vars(Ptaff 2008)中提供了模仿了它的對手,並包括了關於估計模型的對數似然性、VAR模型的係數及其殘差的方差-協方差矩陣的信息。這些也可以用logLik(),coef()和vcov()來實現。更多的標準工具例如fitted(),density()和residuals()也是可以用的。IRF、FEVD和預測結果的評估是相似的,後面將討論。輸入這行代碼,就會出現下面這些結果:

收斂性對於MCMC算法的穩定性至關重要,因此需要特別關注。除了適當的MH步驟的接受率,跟蹤和密度圖的參數通常被用來評估收斂。plot()工具通過預設提供了ML的畫圖和分層處理參數。參數邊界以虛線灰線繪製。畫圖功能也提供了type參數,有軌跡,密度或者都畫兩個選項,還有參數的子集繪製超參數(vars)或繪圖係數值作為代替(vars_response和vars_impulse)。可以看下面的代碼,圖4給出了相應的圖象。圖3和圖4顯示了關鍵超參數的收斂性。由圖可見,沒有明顯的異常值是可識別的,根據明尼蘇達先驗,有輕微的收縮,這是因為絕大多數λ的概率在0.45和0.60之間。但是,可能需要使用額外的收斂診斷。這是通過一個coda (Plummer等,2006)通用as.mcmc()函數的方法實現的。代碼如下:R> plot(run, type = "full", vars = "lambda", mfrow = c(2, 1))

Figure 3所有分層處理參數和ML的軌跡圖和密度圖

Figure 4明尼蘇達先驗法的關鍵參數——擬合曲線的軌跡圖和密度圖通過解釋脈衝響應的結構分析是使用BVAR的一種便利且直接的方式。通用函數irf()可用於從bvar對象檢索或計算irf。產生的東西具有繪圖、列印和匯總自身的方法。plot()方法可以通過名稱或位置將圖形子集為特定的脈衝和/或響應。下面可以看到一個示例,代碼如下,相應的輸出如圖5所示。R> plot(irf(run), vars_impulse = c("GDPC1", "FEDFUNDS"), + vars_response = c(1:5))

Figure 5 GDP增長、工業生產、非農就業、平均每周工作時間的脈衝響應,通貨膨脹、綜合經濟衝擊(左圖)和貨幣政策衝擊(右圖)。灰色線表示第16和第84可信集。預測誤差方差分解是結構分析的另一個重要工具。FEVD繪圖在bvar對象中作為數組提供。匯總它們的一種方法是計算所有保存的繪圖和時間段的中值,如下面的通用函數fevd()所示。

為了幫助進行預測工作,BVAR提供了一種predict()工具以及相關的繪圖、列印和匯總方法。通過在predict()裡面用bvar()或者先算完bvar()再用predict()就行。兩種情況下,設置都是通過bv_fcast()來實現。在下面的例子中,我們把預測添加到我們之前的bvar對象中,把predict()的輸出分配給run[["fcast"]]。然後,我們使用plot()方法,通過向vars提供它們的名稱(或者它們的位置)來可視化兩個包含的變量的預測。代碼如下,相關的輸出見圖6。R> run[["fcast"]] <- predict(run, horizon = 8)R> plot(predict(run), vars = c("GDPC1", "FEDFUNDS"),+ orientation = "vertical")predict()和irf()都會提取已有的預測或IRF,或者基於bvar中已有的預測結果來計算。這樣,它們通過使用不同的設置,而無需重新估計整個模型來計算結果。此外,參數conf_bands允許調整可信區間周圍的中值預測/ IRF,這在其他方法中有使用到。下面的例子給出了增加水平和調整可信間隔後的IRF的事後計算。然後繪製結果,如圖7所示。代碼如下:R> plot(irf(run, conf_bands = 0.05, horizon = 20, fevd = TRUE),+ vars_impulse = c("GDPC1", "FEDFUNDS"), vars_response = c(1:5))

Figure 6對GDP增長和聯邦基金利率的無條件預測。灰色線表示第16和第84可信集

Figure 7前後計算的GDP增長、工業生產、非農就業、平均每周工作時間和CPI通脹對20個季度的總需求衝擊(左面板)和貨幣政策衝擊(右面板)的脈衝響應。灰色線表示第5和第95可信集 本文介紹了R的貝葉斯向量自回歸的基本估計方法。它提供了一種靈活、結構化和透明的方法來評估多元時間序列分析領域的廣泛研究問題。通過對先驗的規範,減少對主觀選擇的需要,它抵消了對貝葉斯方法的一些主要批評。通過提供幾種方法和功能,該包允許快速評估各種模型輸出。通過一個應用示例,我們說明了這個包的用法,並解釋了它的實現和配置。 BVAR比大多數通用的貝葉斯統計軟體有更低的進入成本,並包括了VAR模型後續的一系列分析。它對一系列問題是有用的,可以應用於更廣泛的研究問題,而不像類似的包集中在貝葉斯VAR模型。R中的實現使包易於使用和擴展。下面這些短連結文章屬於合集,可以收藏起來閱讀,不然以後都找不到了。

2.5年,計量經濟圈近1000篇不重類計量文章,

可直接在公眾號菜單欄搜索任何計量相關問題,

Econometrics Circle

計量經濟圈組織了一個計量社群,有如下特徵:熱情互助最多、前沿趨勢最多、社科資料最多、社科數據最多、科研牛人最多、海外名校最多。因此,建議積極進取和有強烈研習激情的中青年學者到社群交流探討,始終堅信優秀是通過感染優秀而互相成就彼此的。

相關焦點

  • 前沿: BVAR, 貝葉斯VAR是什麼, 為什麼需要, 軟體怎麼做, 如何解讀呢?
    VAR想必大家都知道,那麼BVAR是什麼呢?BVAR,簡單來說,其實就是用貝葉斯統計的方法實現了VAR回歸的功能。BVAR是實現這些分層貝葉斯VAR模型的第一個R包(hierarchical Bayesian VAR),它為評估和分析提供了一個完整且易於使用的工具包。下面讓我們一起走近BVAR吧!我們首先介紹貝葉斯統計軟體的發展現狀。不過,在介紹貝葉斯統計軟體的現狀之前,先來簡單介紹一下貝葉斯統計。
  • 貝葉斯機器學習前沿進展
    在這種情況下,可以將領域知識作為後驗約束,與數據一起加入模型中,實現高效貝葉斯學習。需要指出的是大眾知識往往存在很大的噪音,如何採取有效的策略過濾噪音實現有效學習是問題的關鍵。在這方面,我們提出了將使用邏輯表達的領域知識魯棒地引入貝葉斯主題模型,實現了更優秀的模型效果[58]。問題2.先驗分布、似然函數以及後驗正則化之間有何關係。
  • 貝葉斯因子簡介與bain軟體包教程
    越來越多的統計學者提倡使用貝葉斯方法檢驗研究假設,也經常有做實證研究的學者諮詢如何使用貝葉斯因子(Bayes factor, BF)進行數據分析。本文首先介紹貝葉斯因子的相關問題,隨後展示如何使用R軟體包bain進行貝葉斯檢驗。貝葉斯因子是貝葉斯假設檢驗指標。
  • 因果關係 | 之,貝葉斯網絡
    該軟體是由荷蘭奈梅亨市拉德堡德大學的一個研究小組於2000年年中開發的。那麼,波拿巴軟體與貝葉斯網絡有什麼關聯呢?波拿巴軟體進行自動化推理的這一工具的理論基礎,就是貝葉斯網絡。事實上,貝葉斯網絡影響著我們生活的方方面面,只是我們平時沒有留意過。
  • 解讀:貝葉斯優化
    某些NAS算法也使用了貝葉斯優化算法。本文系統地介紹貝葉斯優化的原理,首先介紹黑盒優化問題,給出貝葉斯優化算法的全貌。然後介紹高斯過程回歸的原理,它是貝葉斯優化算法的兩個核心模塊之一。最後介紹貝葉斯優化的詳細過程,核心是採集函數的構造。本文是對《機器學習-原理、算法與應用》一書的補充,限於篇幅,在這本書中沒有講述高斯過程回歸和自動化機器學習的知識。
  • 貝葉斯機器學習路線圖
    如果您正考慮在某些問題中使用貝葉斯方法, 您需要學習"核心主題"中的所有內容. 即使您只是希望使用諸如 BUGS, Infer.NET, 或 Stan等軟體包, 這些背景知識也對您很有幫助. 如果這些軟體包不能馬上解決您的問題, 知道模型的大致思想可幫助您找出問題所在.
  • 貝葉斯定理是什麼,怎麼在日常生活中應用貝葉斯公式
    解題過程貝葉斯定理是什麼?P(A|B)=P(B|A)×P(A)/P(B)P(A)、P(B)是A、B事件的先驗概率或邊緣概率,P(A|B)是已知B發生後A的條件概率,也由於得自B的取值而被稱作A的後驗概率,P(B|A)的 含義同上。
  • 如何用貝葉斯概率思考未來?
    那假設一個黑盒子,你事先不知道裡面多少黑球,多少紅球,怎麼辦呢?其實,現實世界裡,我們面臨的絕大多數情況都沒法計算,都是黑盒子卻需要去判斷概率的問題。頻率派和貝葉斯派傳統的方法叫頻率派。關於頻率和概率的區別,很多人不熟悉。簡單的說,概率說的是事情未來發生的可能性,而頻率說的是對某事情進行觀察或者實驗,發生的次數和總次數的比值。
  • 解讀實踐中最廣泛應用的分類模型:樸素貝葉斯算法
    雖然現在主流的框架都帶有樸素貝葉斯模型算法,大多數開發者只需要直接調用 api 就能使用。但是在實際業務中,面對不同的數據集,必須了解算法的原理,實現以及懂得對結果進行分析,才能達到高準確率。什麼意思呢?因為同一個句子,把詞語進行不同的排列組合都能成立,例如:獎金將在您完成首存後即可存入您的帳戶。真人荷官,六合彩,賭球歡迎來到全新番攤遊戲!可以變成獎金將在您完成首存後即可存入您的帳戶。六合彩,賭球,真人荷官歡迎來到全新番攤遊戲!
  • 貝葉斯及概率統計角度
    貝葉斯是機器學習的核心方法之一。這背後的深刻原因在於,現實世界本身就是不確定的,人類的觀察能力是有局限性的,我們日常所觀察到的只是事物表面上的結果,沿用剛才那個袋子裡面取球的比方,我們往往只能知道從裡面取出來的球是什麼顏色,而並不能直接看到袋子裡面實際的情況。這個時候,我們就需要提供一個假設(hypothesis)。
  • 獨家 | 一文讀懂機器學習中的貝葉斯統計學
    你怎麼能預測這樣的事情呢? 如果你是一個精明的機器學習專家,你可能會提出某種無監督的方法,如(受限制的)波耳茲曼機,它能夠了解「正常」的發電廠是什麼樣的,從而知道什麼時候發生了錯誤(事實上,這是正人們預測核電廠正常運行情況的一種方式)。 然而,如果我們從更廣泛的意義上考慮這個問題,當我們沒有什麼負面例子可以比較時,我們該怎麼辦?
  • 貝葉斯神經網絡(系列)第一篇
    這些博客的大致結構如下:貝葉斯網絡的應用場景為了更好的理解貝葉斯網絡所需要的背景知識一些在貝葉斯神經網絡方面最新的成果基於變分推理的貝葉斯卷積神經網絡利用PyTorch 建立你自己的貝葉斯卷積神經網絡貝葉斯神經網絡的不確定性估計貝葉斯神經網絡中的模型修剪在其他領域的應用(超級解析度
  • 平凡而又神奇的貝葉斯方法
    首先,我們需要詢問的是:「問題是什麼?」問題是我們看到用戶輸入了一個不在字典中的單詞,我們需要去猜測:「這個傢伙到底真正想輸入的單詞是什麼呢?」而貝葉斯方法計算的是什麼?是 P(h) * P(D | h) 。多出來了一個 P(h) 。我們剛才說了,這個多出來的 P(h) 是特定猜測的先驗概率。為什麼要摻和進一個先驗概率?剛才說的那個最大似然不是挺好麼?很雄辯地指出了 the 是更靠譜的猜測。有什麼問題呢?既然這樣,我們就從給最大似然找茬開始吧——我們假設兩者的似然程度是一樣或非常相近,這樣不就難以區分哪個猜測更靠譜了嗎?
  • 貝葉斯與貝葉斯公式
    當時貝葉斯發現了古典統計學存在的一些缺點,從而提出了自己的一套貝葉斯統計學理論。貝葉斯的理論是基於條件概率的理論上的,所以讓我們來簡單看看條件概率是個什麼東西。但是如果給定了得到的點數一定是奇數的條件,那麼得到1的概率又是多少呢?這個時候就需要條件概率公式了:
  • 拿什麼拯救你量子力學-淺談量子貝葉斯
    那麼,量子力學中反映不確定性的概率究竟是怎麼來的呢?量子力學的困惑正如溫伯格所述,物理學家們一直被量子力學中的種種詭異現象所困擾,並且在哲學理解的層面上互相難以達成共識。那麼,是不是說量子力學就是錯誤的呢?當然不是,至少不能完全地絕對地如此下結論。
  • 【前沿】NIPS2017貝葉斯生成對抗網絡TensorFlow實現(附GAN資料下載)
    導讀今年五月份康奈爾大學的 Andrew Gordon Wilson 和 Permutation Venture 的 Yunus Saatchi 提出了一個貝葉斯生成對抗網絡(Bayesian GAN),結合貝葉斯和對抗生成網絡,提出了一個實用的貝葉斯公式框架,用GAN來進行無監督學習和半監督式學習。
  • 機器學習 | Sklearn中的樸素貝葉斯全解
    前期文章介紹了樸素貝葉斯理論,掌握理論後如何去使用它,是數據挖掘工作者需要掌握的實操技能,下面來看看Sklearn中都有哪些樸素貝葉斯。當然,如果樣本量少於特徵數目,貝葉斯的效果就會被削弱。樸素貝葉斯運行速度相對更快,因為求解本質是在每個特徵上單獨對概率進行計算,然後再求乘積,所以每個特徵上的計算可以是獨立並且並行的。不過貝葉斯的運行效果相對較差,所以貝葉斯的接口調用的predict_proba其實也不是總指向真正的分類結果,這一點需要注意。
  • var_dump(1...9)輸出什麼?
    一個問題, var_dump(1...9)輸出什麼?
  • 機器學習領域中的頻率學派與貝葉斯學派
    這也就是為什麼要寫這篇分享的原因了——頻率學派和貝葉斯學派的異同。大家都了解,頻率學派常用的估計方法是最大似然(MaximumLikelihood Estimation 即MLE),而貝葉斯學派常用的估計方法是最大後驗(Maximum A Posteriori 即MAP)。那麼兩大學派在思想上最大的差別是什麼?
  • 透徹理解貝葉斯推理
    貝葉斯定理如何允許我們將先驗信念納入其中?上面我提到貝葉斯定理允許我們結合先驗信念,但很難看出它如何通過查看上面的等式來實現這一點。那麼讓我們看看我們如何使用上面的冰淇淋和天氣示例來做到這一點。讓A代表我們出售冰淇淋的事件,B代表天氣事件。