統計学者がDSGEモデル批判で見落としていたこと

ここで紹介した統計学者のDSGE批判論文*1に対し、反論が幾つか上がっている。

特に最後のBraultの連ツイでの指摘は、論文の著者の一人のDaniel J. McDonaldも認めたようにみえる(謝辞を返している)ほか、Del Negroも認めたようにみえる(やはり謝意を評している)ので、論文の前半のポイントについて現時点での一つの痛打になっているように見受けられる。以下はその連ツイ。

An update to my previous thread on the McDonald-Shalizi paper. After looking at their codes I believe the findings in this paper are a result of coding errors. Not to do with the optim. procedure, but with the definition of model and data. Explanation in the following tweets.
Many LRE DSGE models are written in a canonical form and solved using Chris Sims Gensys routine. The canonical form is given by T0*y(t) = T1*y(t-1) + PSI*z(t) + PI*eta(t), where the y’s refer to model variables, z to exogenous variables, and eta’s to expectation errors.
T0, T1, PSI, and PI are just coefficient matrices defining the equations of the model. When writing down the model the authors include the standard deviations of the structural shocks (the “sigmas”) as parameters in PSI.
This means that any shock in z(t) will be scaled by its own standard deviation in PSI. This is not necessarily a problem, but an error occurs when the authors go to generate the simulated data used in this paper.
To generate simulated data involves generating a series of shocks and feeding them through the model. The authors draw shocks from a var/cov matrix where the variances are equal to sigma^2s. Hopefully the problem here is obvious.
The authors draw a series of shocks, z(t), where each shock has a standard deviation equal to it’s corresponding sigma. The shock is then again scaled by the sigmas in PSI before affecting model variables.
This means that the shocks used in the simulated data are much smaller than they should be. It also helps explain why the estimates they find for the sigmas are effectively the “true” sigmas squared (see figure 7 in their paper).
A quick sanity check for this point is to take the same calibration of parameters/shocks and generate data using their codes and the Smets-Wouters codes for DYNARE-Matlab. The volatility of variables should be the same.
Instead, what you’ll find is that the volatility of variables in the simulated data from their code is dramatically lower than what you find from DYNARE. The attached image is simulated output growth using identical calibrations.
This error is likely to make much of the subsequent analysis incorrect, since forecasts about the future states of the world will depend on beliefs about the possible shocks that may occur.
Also, in the model solution (modelsol.R) the authors parameterize the fixed cost share and the Taylor rule inflation feedback parameter to the same thing. This is obviously a typo as cfc should be parameter 26 in the vector. I have no idea how this impacts their results.
As usual, the DYNARE codes for this thread are available at https://github.com/braultjosh/SmetsWouters. The codes for the McDonald-Shalizi paper are available at https://github.com/dajmcdon/dsges (Thanks to @dajmcdon for sharing these).
(拙訳)
マクドナルド=シャリジ論文についての前回のスレッド*2のアップデート。彼らのコードを見たところ、論文の発見はコーディングのエラーの結果だと思う。最適化プロシジャではなく、モデルとデータの定義の問題だ。以下のツイートで説明する。
多くの線形合理的期待DSGEモデルは標準的な形式で書かれ、クリス・シムズのGensysルーチン*3を用いて解かれる。標準的な形式は T0*y(t) = T1*y(t-1) + PSI*z(t) + PI*eta(t) で与えられる。ここでyはモデル変数、zは外生変数、etaは期待の誤差を表す。
T0、T1、PSI、PI はモデルの式を定義する係数行列に過ぎない。モデルを記述する際、著者たちは構造ショックの標準偏差(「シグマ」)をPSIのパラメータとして取り込んだ。

そのことが意味するのは、z(t)のいかなるショックも、PSIにおける自身の標準偏差で基準化されるということである。これは必ずしも問題ではないが、著者たちが論文で用いたシミュレートされたデータを生成する段ではエラーが生じる。
シミュレートされたデータを生成するには、ショックの系列を生成し、それをモデルに供給することになる。著者たちは、分散がシグマの2乗に等しい分散共分散行列からショックを抽出している。問題は明らかだろう。

著者たちはショック系列z(t)を抽出しているが、各ショックの標準偏差は対応するシグマに等しい。ショックはモデル変数に影響を与える前にPSI中のシグマで再度基準化されている。
即ち、シミュレートされたデータで用いられたショックは本来あるべきよりもかなり小さいことになる。シグマについて彼らが得た推計値が事実上「真の」シグマの2乗だったこともそれで説明がつく(論文の図7参照)。
この点についての手っ取り早い健全性テストは、パラメータやショックの同じカリブレーションを使って、彼らのコードおよびスメッツ=ウーターズのDYNARE-Matlabのコードでデータを生成することである。変数のボラティリティは同じになるはずである。
実際の結果では、彼らのコードでシミュレートされたデータの変数のボラティリティは、DYNAREのものよりも劇的に小さい。以下の図は同じカリブレーションを使ってシミュレーションした生産の伸びである。

将来の世界の状態の予測は、起きる可能性のあるショックの想定に依存するため、このエラーによってその後の分析の多くが不正確なものとなった可能性が高い。
また、モデルを解く(modelsol.R)際に著者たちは、固定費比率と、テイラー則のインフレのフィードバックパラメータとを同じにしている。cfcはベクトルで26番目のパラメータであるべきなので、これは明らかにタイポである。これがどのように彼らの結果に影響したかは私には分からない。

いつものように、このスレッドのDYNAREコードはhttps://github.com/braultjosh/SmetsWoutersで利用できる。マクドナルド=シャリジ論文のコードはhttps://github.com/dajmcdon/dsgesで利用可能である(これらをシェアしてくれたことについて@dajmcdonに感謝)。

連ツイの最後のツイートでBraultは、以下の人にメンションしている。
@cmatthes_econ @marcodelnegro @paulgp @andypreston_UK @wjgatt @BachmannRudi @JavierGC14 @OtiliaBoldea @t_holden @yfatihkarahan @PfeiferEcon @Benchimolium

*1:ちなみにMRブログのアレックス・タバロックもこの論文を取り上げている

*2:これ。その中でBraultはPrestonのエントリに言及し、Prestonも反応している。McDonaldも反応してコードを提供し、それがこのスレッドにつながっている。

*3:cf. Solving the Model · DSGE.jl