GAMSでCGE分析をするのに必要なもの
[追記] http://shirotakeda.org/ja/research-ja/cge-howto.html にある「Part 11: NLPとしての一般均衡モデル」という文書も参考になると思います。
GAMSでCGE分析をするのに必要なもの。
CGE分析では数値計算ソフトとしてGAMS(General Algebraic Modeling System) がよく利用されます。
GAMSでCGE分析をするにはGAMSを購入すればよいのですが、GAMSは解く問題のタイプによって利用するソルバーと呼ばれるものが変わってきます。CGE分析をするのにどのソルバーを用意すればよいのかよくわからないということをよく聞くのでまとめておきます。
まず、CGEモデルをどのようなタイプの問題として解くかが関わってきます。これには
- 非線形の連立方程式(正確にはmixed complementarity problem, MCP)として解く
- 非線形計画問題(nonlinear programming、NLP)として解く
の二つがあります。普通、経済学で一般均衡モデルを解くとは、均衡条件を解くということで、均衡条件は普通連立方程式として表現されますから、前者が普通のアプローチだと思いますが、CGE分析では後者の方法が使われる場合がよくあります。例えば、『テキストブック 応用一般均衡モデリング―プログラムからシミュレーションまで』では後者の方法を使っています。ここらへんのことについては「MCP solver vs NLP solver」で説明しています。
□ 連立方程式として解く場合
お金に余裕がない人は、とりあえずGAM base module、つまりGAMS本体だけでもできないことはないです。Base moduleには連立方程式を解くためのソルバーであるMILESがデフォールトで付いていますから。アカデミックなら640ドル、非アカデミックならその5倍です。
ただし、モデルが大きい(変数の数が多い)場合には、MILESではモデルを解きにくくなります。場合によっては、全く解くことができないということもあります。ですので、Base moduleにプラスしてソルバーのPATHも絶対に購入したほうがよいです。PATHならMILESよりもモデルを解きやすくなりますし、PATHでないと解けないことが多いです。PATHも買うならさらに640ドルプラス(非アカデミックならその5倍)です。
さらに、余裕のある人はソルバーのMPSGE(アカデミックで640ドル、非アカデミックならやはり5倍)を買っておくとよいと思います。MPSGEとはCGE分析をおこなうための専用のソルバーで、これを使うとモデルの記述が非常に楽になります。また、MPSGEで書かれたCGEモデルのサンプルプログラムを自分で実行できるようになります。もし、誰かが作成したMPSGEのプログラムを参考にしたいというのなら、MPSGEの購入も必須です。
□ NLPとして解く場合
Base moduleにはNLPのソルバーは付属していませんので、以前はNLPとしてCGEモデルを解く場合には、別のNLP用のソルバーを購入する必要がありました。しかし、現在はPATHにPATHNLPというNLPソルバーが付属していますので、PATHを購入すればNLPとして解く場合にも対処することができます。ただし、同じNLPソルバーといってもソルバーによって性能が違いますので、PATHNLPではなく、他のNLPソルバーを使った方がよい場合もあります。ここらへんは、他のNLPソルバーを使った経験が少ないので、詳しいことはわかりませんが。
ということで、できれば
- GAM base module
- Solver PATH
- Solver MPSGE
もし、3つを購入する余裕がないなら、
- GAM base module
- Solver PATH
- GAM base module
- Solver MPSGE
実際に購入するときにはわかる人に聞いて、確認した方がいいと思います。 私が大学院生だったときに、よくわからないままCGE分析を始めて、GAMS base moduleを買ってみたのですが、 結局その他にもいろいろ必要なことがわかり、最終的にBase module+ソルバー3つ+GTAPデータを購入することになり、自腹で30万円くらい払いました。よくわからないまま手を出すのは危険です...
今は研究費でソフトウェア、データを購入できるのでいいのですが、研究費が使えない人がCGE分析するのは難しいですね。自腹で購入できないことはないと思いますが。
単にお金を節約したいということでしたら、GAMSなんて商用のソフトは使わず、C言語、フォートランなどでプログラムを書いて解くという方法もありますが、全体としての手間を考えると、そんなことはせずにアルバイトでもしてお金をためてGAMSを購入した方が得だと思います。