DynareをOctaveで動かすための環境構築について / プログラミング

 MATLABが使えない人向けにDynareとOctaveの環境構築の方法と、簡単なDynareの解説を行う。これはラムゼイ・モデル、ニューケインジアン・モデルといった動学的最適化を含むマクロ経済学のモデルをシミュレーションする際に必要になる。ここで役立つのがDynareである。Dynareは、OctaveかMATLABか上で起動する。Octaveは無料版MATLABともいえ、MATLABとほぼ完全な互換性を有する。なお、MATLABでDynareを使いたい人は「DynareをMATLABで動かすための環境構築について」をご覧頂きたい。

 解説は5つの手順に分けて行う。

(1)Homebrewのインストール(※Macユーザーのみ)

(2)Dynareのインストール

(3)Octaveのインストール

(4)DynareのOctaveでの動作確認

(5)簡単なコードの解説

(6)使い方まとめ+お役立ち情報

 

 Dynare環境の構築ができれば、マクロ経済学の知識とDynareのコードのちょっとした知識で、上級なマクロ経済モデルのシミュレーションが実行できるようになる

【参考資料】

OctaveでDynareを動かそう!(連載:仲田泰祐「ゼロ金利制約下の金融政策」付録)

『動学マクロ経済学へのいざない』サポートページ

GNU Octave Wiki Octave for macOS

YouTube:Dynare 4.6.4 with Octave 6.2.0: macOS Installation Guide using Homebrew (for Apple Silicon M1)

(1)Homebrewのインストール

・対象者:Macユーザー

・非対象者:Windowsユーザーは(1)Homebrewを飛ばす。

 Mac用のGUI Octave最新版は公式ホームページからインストールできない。そこでパッケージマネージャーの「Homebrew」を用いて、インストールする。

 Macの「ターミナル」機能を使って以下の手順でやる。

(1)−1.ターミナルを起動する。「ターミナル」機能をFinderかLaunchpadを使って検索する。「アプリケーション」>「ユースリティ」>「ターミナル」でも見つかる。次のような画面になる。

Last login: XXX XXX XX X:X:X on ???
yourname@yourMac ~ % 

(1)−2.ターミナルの「%」以降に次のコードを打ち込んで、Homebrewをgithubからインストールする。この時はインターネット接続が必要。↓

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

(1)−3.次の表示があるので、自分のPCのログインパスワードを入れる。

==> Checking for `sudo` access (which may request your password)...
Password:

(1)−4.次の表示があるので、リターンかエンターキーを押す。

==> This script will install:
/opt/homebrew/bin/brew
/opt/homebrew/share/doc/homebrew
/opt/homebrew/share/man/man1/brew.1
/opt/homebrew/share/zsh/site-functions/_brew
/opt/homebrew/etc/bash_completion.d/brew
/opt/homebrew

Press RETURN/ENTER to continue or any other key to abort:

(1)−5.最新版のMacの場合、次の表示がある。パスPATHを通さないといけない。echoと書いている部分を2回に分けて、書いてやればよい。(続く)

==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
    (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/yourname/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"
- Run brew help to get started
- Further documentation:
    https://docs.brew.sh
yourname@yourMac ~ %

(1)−6.1回目はあなたのターミナルに表示されている「(echo; 〜 zprofile」をコピペして、「~ %」の右側にペーストして実行する。

yourname@yourMac ~ % (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/yourname/.zprofile

(1)−7.2回目はあなたのターミナルに表示されている「eval “ 〜 shellenv)”」をコピペして、「~ %」の右側にペーストして実行する。これでパスが通るはず。

yourname@yourMac ~ % eval "$(/opt/homebrew/bin/brew shellenv)"

(1)−8.パスが通っているかテストしよう。もしパスが通っているのならば、「brew help」を「~ %」の右側に打ち込むと、次のようなメッセージが現れる。

Example usage:
  brew search TEXT|/REGEX/
  brew info [FORMULA|CASK...]
  brew install FORMULA|CASK...
  brew update
  brew upgrade [FORMULA|CASK...]
  brew uninstall FORMULA|CASK...
  brew list [FORMULA|CASK...]

(2)Dynareのインストール

・対象者:Macユーザー

・非対象者:Windowsユーザー(→「Dynare.org」からDynareをインストールする。)

 ターミナルに次のコードを打ち込んでエンターを押すと、Dynareがインストールできる。

brew install dynare

(3)Octaveのインストールと起動

・対象者:Macユーザー

・非対象者:Windowsユーザー(→「Octave Download」からOctaveをインストールする。)

 まずはターミナルに次のおまじないを打ち込む。

sudo xcode-select --install

 次のコードをターミナルに打ち込むと、GUI OctaveをパッケージマネージャーのHomebrew経由でインストールできる。少し時間がかかる。

brew update
brew upgrade
brew install octave 

・macユーザー:ターミナルに次のコードを打って起動する。

octave --gui

・Windowsユーザー:Octaveアイコンをクリックして起動する。

(4)DynareのMATLABでの動作確認

(4)−0.Octaveの起動

対象者:Macユーザー、Windowsユーザー

 Dynareには最初からテスト用コードがexampleフォルダに格納されている。「example1.mod」を実行してみよう。

 OctaveやMATLABでDynareを動かすには次の3つの手順が必要である。なお、OctaveもMATLABもコードは同じである。

(4)−1.パスを通す:マクロ経済モデルを解くためのプログラム(=Dynare)が格納されている場所を教える。

(4)−2.作業ディレクトリを設定する:入力するファイルがある場所、出力されたファイルを入れる場所を教える。

(4)−3.modファイルを実行する:具体的な入力するファイルを教える。

(4)−1.パスを通す

 OctaveからDynareにパスを通すには、まずDynareのmatlabフォルダを探して次のコードを実行する。コードはOctaveのコマンドウィンドウに打ち込み、エンターを押せば実行される。

addpath  /~~~~~/dynare/~~~/matlab

 Homebrewを使ったMacユーザーの場合、左上のファイルブラウザに「/opt」を打ち込んで「/opt」>「/homebrew」>「/Cellar」とすると「/dynare」が見つかるはずだ。最終的には、おそらく「/opt/homebrew/Cellar/dynare/5.5_1/lib/dynare/matlab」にmatlabフォルダがある。5.5_1はバージョン番号である。

 そしたら、そのmatlabフォルダにパスを通す。コードはOctaveのコマンドウィンドウに打ち込み、エンターを押せば実行される。

addpath  /opt/homebrew/Cellar/dynare/5.5_1/lib/dynare/matlab

(4)−2.作業ディレクトリの設定

 Octaveの作業ディレクトリを設定する。作業ディレクトリとは「入力するファイルがある場所、出力されたファイルを入れる場所」であり、自由に設定できる。Homebrewを使ったMacユーザーの場合、次のフォルダを作業ディレクトリにするとよい。左上のファイルブラウザでチェックしてみよう。

cd /大きなフォルダ/中フォルダ/・・・/作業ディレクトリにしたいフォルダ
cd /・・・/dynare/・・・/examples(今回)

 Homebrewを使ったMacユーザーで、example1.modのテストコードを実行したい場合、次のフォルダを作業ディレクトリにするとよい。コードはOctaveのコマンドウィンドウに打ち込み、エンターを押せば実行される。

cd /opt/homebrew/Cellar/dynare/5.5_1/lib/dynare/examples

(4)−3.modファイルの実行

 XXX.modファイルを実行したいならば、コマンドウィンドウに「dynare XXX.mod」か「dynare XXX」と入力してエンターを押せばよい。

 今回はexample1.modを実行したいので、Octaveのコマンドウィンドウに次のコードを書いて、エンターを押す。

dynare example1

 グラフが出てきたら成功である。

(5)簡単なコードの解説

対象者:Macユーザー、Windowsユーザー

 example1.modは、次の要素で構成されている。ただし、実際のコーディングは具体的なマクロ経済モデルと同時に扱うのがよいだろう。

var //内生変数
varexo //ショックを与える外生変数
parameters //パラメーター(定数)
model  //モデル
initval //初期値
shocks  //ショック
stoch_simul  //インパルス応答のグラフ化

 example1.modの全体。

var y, c, k, a, h, b;
varexo e, u;

parameters beta, rho, alpha, delta, theta, psi, tau;

alpha = 0.36;
rho   = 0.95;
tau   = 0.025;
beta  = 0.99;
delta = 0.025;
psi   = 0;
theta = 2.95;

phi   = 0.1;

model;
c*theta*h^(1+psi)=(1-alpha)*y;
k = beta*(((exp(b)*c)/(exp(b(+1))*c(+1)))
    *(exp(b(+1))*alpha*y(+1)+(1-delta)*k));
y = exp(a)*(k(-1)^alpha)*(h^(1-alpha));
k = exp(b)*(y-c)+(1-delta)*k(-1);
a = rho*a(-1)+tau*b(-1) + e;
b = tau*a(-1)+rho*b(-1) + u;
end;

initval;
y = 1.08068253095672;
c = 0.80359242014163;
h = 0.29175631001732;
k = 11.08360443260358;
a = 0;
b = 0;
e = 0;
u = 0;
end;

shocks;
var e; stderr 0.009;
var u; stderr 0.009;
var e, u = phi*0.009*0.009;
end;

stoch_simul;

(6)お役立ち情報+使い方まとめ

 Octaveを起動するにはターミナルで、次のコードを実行する。「ターミナル」機能はFinderかLaunchpadを使って検索するか、「アプリケーション」>「ユースリティ」>「ターミナル」で見つかる。↓をMacのターミナルに打ち込んで、エンターキーを押す。

octave --gui

 Dynare実行用ファイル(・・・.mod)があるなら、Dynareを使いためには、パス設定(adpath)、作業ディレクトリの設定(cd)、実行命令(dynare)の3つが必要。例えば↓をOctaveのコマンドウィンドウに打ち込んで、エンターキーを押す。

addpath  /opt/homebrew/Cellar/dynare/5.5_1/lib/dynare/matlab
cd /opt/homebrew/Cellar/dynare/5.5_1/lib/dynare/examples
dynare example1

 パッケージ「abc」をインストールしてくださいと言われたら、Octaveのコマンドウィンドウに「pkg install -forge 〜」と打ち込んで、エンターキーを押す。

pkg install -forge abc