Dynare(その2)

 この頃本業がやっと本格化してきまして(汗、中々ブログ活動がままなりません。多分「経済政策形成の研究」の読書感想文を書くので精一杯かと思われますorz...合評会までに纏めきれるかどうかが問題ですが(汗。

 所で、Dynareのユーザーガイドを第6章まで読み終えました。第7章がDGEモデルのDynareにおける解き方、第8章がパラメータの推計方法ということなので実際に使う手続きという意味では大体のところは把握できた感じでしょうか。週末MATLAB(本体+optimization toolbox)が届く筈なので、これで簡単なモデルについてシミュレーションが出来る筈。実際の導入からその後の試行錯誤のドタバタ過程については又エントリする予定です。

 DynareにおけるDGEモデルの推計・シミュレーションの過程について纏めてみます*1。言うまでも無いことですが、ユーザーガイドを読んだだけです(汗ので、実際には現物を読まれると良いと思います。頭の整理&備忘録メモです。出来ればヘビーユーザーの方々に突っ込みを入れていただきたいところ、と他力本願な状況orz...
 Dynareの良いところは、行列計算等を一々行わずにモデル式の記述に集中できるところでしょうか。定常均衡値の計算は別途MATLABで計算した値を取り込んだりすることも出来るようですね。

                                                                  • -

DynareにおけるDGEモデルの推計・シミュレーションの流れ
 ディープパラメータの推計・設定により大きく二つに分かれ、さらにモデルが定常過程か非定常過程に従うかにより二つに分かれる。つまり、大雑把には4つのパターンが存在すると考えられる。
 尚、ユーザーガイドではRBCモデルを例にとって、I)ディープパラメータを外部から設定しかつ変数が定常過程に従う場合、II)ディープパラメータをベイジアン推計し、かつ変数が定常過程に従う場合について解説された上で、Schorfheide(2000)及びNason and Cogley(1994)におけるCIAタイプの貨幣を折り込んだ企業・家計・銀行・中央銀行の4主体によって構成されるモデルを例にとり、III)ディープパラメータをベイジアン推計し、かつ変数が非定常過程に従う場合の三つについて解説されている。
ユーザーガイドでは確率項が含まれているモデル(stochastic model)と確率項が含まれていないモデル(deterministic model)の二つの違いを意識して解説されているが、以下では確率項が含まれているモデル=DSGEモデルについて記載する。

1.ディープパラメータを任意に設定&変数が定常過程に従う場合*2
 Dynareにおけるコードが記載されるファイル(.modファイル)では以下の(1)から(7)の順番でコードを記述する。

(1)変数名の定義(preamble)
・内生変数はvar+変数名+セミコロンで記述
(例)yおよびcが内生変数の場合→ var y c ;

・外生変数はvarexo+変数名+セミコロンで記述
(例)eが外生変数の場合→ varexo e ;

(2)パラメータ名の定義・パラメータの値の指定(preamble)
・パラメータ名の定義は、parameters+パラメータ名+セミコロンで記述
(例)betaとpsiをパラメータとして定義する場合→parameter beta psi ;

・パラメータの値の指定はパラメータの定義に続けて、パラメータ名=設定した値+セミコロンと記述
(例)beta=0.85と設定する場合→beta=0.85;

(3)モデル式のセットアップ
・モデル式の記述。
・model+セミコロン、各モデル式の記述+セミコロン、 end+セミコロンと記述。
・線形モデルの場合、model(linear)と記載。カッコ内はオプション。
・例えば、β(t+1)と記載したい場合には、beta(+1)、k(t-1)と記載したい場合はk(-1)と記述(tは省く)。
・例えば、xの2乗と記載したい場合には、x^2と記述。

(例)y=(k(-1)^alpha)*(exp(z)*l)^(1-alpha)、c+i=yの二つの式をモデル式とする場合には、
 model;
 y=(k(-1)^alpha)*(exp(z)*l)^(1-alpha);
c+i=y;
end;

 と記述。

(4)初期値(定常均衡値)の指定
・initval+セミコロン、 変数名=値+セミコロン、end+セミコロンで記述
(例)k=9、c=0.7とする場合
 initval;
 k=9;
 c=0.7;
 end;

・初期値として指定した値を元にモデルの定常均衡値を求める場合には、steady+セミコロンを加える。
(例)上の例の値を初期値として定常均衡値を求める場合には、
 initval;
 k=9;
 c=0.7;
 end;
 steady; と記載。

(5)モデル式の固有値の確認・チェック
・BK条件(ジャンプ変数=発散する固有値)を満たすかどうか、及びモデル内部で解かれる固有値の確認を行う。
・check+セミコロンで記述。

(6)外部から与えるショック値の記述
・shocks+セミコロン、変数名=ショックの値+セミコロン、end+セミコロンで記述。
(例)誤差項eをその分散分(sigmaの二乗)だけ変化させる場合→この場合には(1)でeを外生変数として設定し、(2)でsigmaをパラメータとして設定した上で、以下のコマンドを記載。

 shocks;
 var e = sigma^2;
end;

(7)シミュレーションの実施
・外部から与えるショック値に応じて内生変数がどのように変化するのかをシミュレーションする。
・stoch_simul(オプション)+セミコロンで記述。
(例)2100期までシミュレーションする場合

 stoch_simul(periods=2100);

2.ディープパラメータをベイジアン推計し、かつ変数が定常過程に従う場合
 1.の場合と異なる点は、パラメータを先験的に与えるのではなく、パラメータが従う確率分布・観測可能な変数*3、定常均衡値を与えた上でベイジアン推計を行う点。Dynareにおけるコードが記載されるファイル(.modファイル)では以下の(1)から(8)の順番でコードを記述する。

(1)変数名の定義(preamble)
・1.の場合と同様。

(2)パラメータ名の定義(preamble)
・1.の場合と同様にパラメータ名を定義する。
・但し、値を定義しないのがポイント

(3)モデル式のセットアップ
・1.の場合と同様。

(4)観測可能な変数の指定
・観測可能な変数を指定する。
・varobs +変数名+セミコロンで指定。

(例)yを観測可能な変数として指定する場合
varobs y ;

(5)初期値(定常均衡値)の指定
・1.と同様。

(6)モデル式の固有値の確認・チェック
・1.と同様。
※モデル推計(8)を行うコマンドの前に配置するのが良い。

(7)パラメータが従う事前分布の指定
・(2)で定義したパラメータそれぞれについて、分布を想定する。
・estimated_params+セミコロン、パラメータ名+カンマ+分布名+カンマ+平均+セミコロン+標準誤差等々・・、end+セミコロンの順で記述。

(例)パラメータalphaがβ分布に従い*4、かつ平均0.1、標準誤差0.4の値をとりうる場合
 estimated_params;
alpha beta_pdf,0.1,0.4;
end;

(8)モデル推計
・以上で指定した、(4)観測可能な変数、(5)初期値(定常均衡値)、(7)パラメータが従う確率分布の元でモデル式を満たすようなパラメータを推計する。Metropolis Hastingアルゴリズムに基づくMCMCが用いられる。
・estimation(各種オプション)+セミコロン

※III)ディープパラメータをベイジアン推計し、かつ変数が非定常過程に従う場合についてはDynare(3)で纏める予定。

*1:ご興味のある方は今後ESRIから公表されるであろうDGEモデラーの方々によるペーパーをご覧頂ければ幸いです。これは勉強になりますよ(汗。

*2:詳細はユーザーガイドの3章をご参照ください。

*3:観測可能な変数の指定は確率変数の値を超えない。確率変数の数が2であれば、観測可能な変数は二つまで指定できる。確率変数の数が1ならば観測可能な変数は1つまで指定できる。

*4:ユーザーガイドでは正規分布、γ分布、β分布、一様分布、逆γ分布を事前分布として指定可能と記載